@@ -15,7 +15,8 @@ show_menu() {
15
15
echo " 2. Install Kibana"
16
16
echo " 3. Install Fluent Bit"
17
17
echo " 4. Install Complete Stack"
18
- echo " 5. Exit"
18
+ echo " 5. Uninstall Complete Stack"
19
+ echo " 6. Exit"
19
20
}
20
21
21
22
# Setup namespace
@@ -51,28 +52,45 @@ setup_helm_repo_fluentbit() {
51
52
52
53
# Install components
53
54
install_elasticsearch () {
54
- echo " Installing Elasticsearch..."
55
- helm install elasticsearch elastic/elasticsearch -f ek/elasticsearch-values.yaml -n logging || { echo " Failed to install Elasticsearch" ; exit 1; }
55
+ echo " Checking Elasticsearch installation..."
56
+ if helm list -n logging | grep -q " elasticsearch" ; then
57
+ echo " Elasticsearch already exists, upgrading..."
58
+ helm upgrade elasticsearch elastic/elasticsearch -f ek/elasticsearch-values.yaml -n logging || { echo " Failed to upgrade Elasticsearch" ; exit 1; }
59
+ else
60
+ echo " Installing Elasticsearch..."
61
+ helm install elasticsearch elastic/elasticsearch -f ek/elasticsearch-values.yaml -n logging || { echo " Failed to install Elasticsearch" ; exit 1; }
62
+ fi
56
63
}
57
64
58
65
install_kibana () {
59
- echo " Installing Kibana..."
60
- helm install kibana elastic/kibana -f ek/kibana-values.yaml -n logging || { echo " Failed to install Kibana" ; exit 1; }
66
+ echo " Checking Kibana installation..."
67
+ if helm list -n logging | grep -q " kibana" ; then
68
+ echo " Kibana already exists, upgrading..."
69
+ helm upgrade kibana elastic/kibana -f ek/kibana-values.yaml -n logging || { echo " Failed to upgrade Kibana" ; exit 1; }
70
+ else
71
+ echo " Installing Kibana..."
72
+ helm install kibana elastic/kibana -f ek/kibana-values.yaml -n logging || { echo " Failed to install Kibana" ; exit 1; }
73
+ fi
61
74
}
62
75
63
76
install_fluentbit () {
64
- echo " Installing Fluent Bit..."
65
- helm install fluentbit fluent/fluent-bit -f fluentbit/values.yaml -n logging || { echo " Failed to install Fluent Bit" ; exit 1; }
77
+ echo " Checking Fluent Bit installation..."
78
+ if helm list -n logging | grep -q " fluentbit" ; then
79
+ echo " Fluent Bit already exists, upgrading..."
80
+ helm upgrade fluentbit fluent/fluent-bit -f fluentbit/values.yaml -n logging || { echo " Failed to upgrade Fluent Bit" ; exit 1; }
81
+ else
82
+ echo " Installing Fluent Bit..."
83
+ helm install fluentbit fluent/fluent-bit -f fluentbit/values.yaml -n logging || { echo " Failed to install Fluent Bit" ; exit 1; }
84
+ fi
66
85
}
67
86
68
87
# Add sleep function with loading animation
69
88
wait_with_loader () {
70
89
local seconds=$1
71
- local message=" Please wait while the system initializes"
90
+ local message=" ${2 :- Please wait while the system initializes} "
72
91
local spin=' -\|/'
73
92
local i=0
74
93
75
- echo " Quote: $( get_random_quote) "
76
94
for (( s= seconds; s> 0 ; s-- )) ; do
77
95
i=$(( (i+ 1 ) % 4 ))
78
96
printf " \r${message} ${spin: $i : 1} (${s} s remaining)"
@@ -81,12 +99,39 @@ wait_with_loader() {
81
99
printf " \r${message} Done!\n"
82
100
}
83
101
102
+ # Add new uninstall function
103
+ uninstall_stack () {
104
+ echo " Uninstalling EFK Stack..."
105
+
106
+ # Uninstall Fluent Bit
107
+ if helm list -n logging | grep -q " fluentbit" ; then
108
+ echo " Uninstalling Fluent Bit..."
109
+ helm uninstall fluentbit -n logging || echo " Failed to uninstall Fluent Bit"
110
+ fi
111
+
112
+ # Uninstall Kibana
113
+ if helm list -n logging | grep -q " kibana" ; then
114
+ echo " Uninstalling Kibana..."
115
+ helm uninstall kibana -n logging || echo " Failed to uninstall Kibana"
116
+ fi
117
+
118
+ # Uninstall Elasticsearch
119
+ if helm list -n logging | grep -q " elasticsearch" ; then
120
+ echo " Uninstalling Elasticsearch..."
121
+ helm uninstall elasticsearch -n logging || echo " Failed to uninstall Elasticsearch"
122
+ fi
123
+
124
+ # Delete namespace
125
+ echo " Deleting logging namespace..."
126
+ kubectl delete namespace logging --timeout=60s || echo " Failed to delete namespace"
127
+ }
128
+
84
129
# Main execution
85
130
main () {
86
131
print_banner
87
132
88
133
show_menu
89
- read -p " Enter your choice (1-5 ): " choice
134
+ read -p " Enter your choice (1-6 ): " choice
90
135
91
136
case $choice in
92
137
1)
@@ -110,19 +155,22 @@ main() {
110
155
setup_helm_repo_fluentbit
111
156
112
157
install_elasticsearch
113
- wait_with_loader 110
158
+ wait_with_loader 110 " Waiting for Elasticsearch to be ready ... "
114
159
115
160
install_kibana
116
- wait_with_loader 110
161
+ wait_with_loader 110 " Waiting for Kibana to be ready ... "
117
162
118
163
install_fluentbit
119
164
;;
120
165
5)
166
+ uninstall_stack
167
+ ;;
168
+ 6)
121
169
echo " Exiting..."
122
170
exit 0
123
171
;;
124
172
* )
125
- echo " Invalid option. Please select 1-5 ."
173
+ echo " Invalid option. Please select 1-6 ."
126
174
exit 1
127
175
;;
128
176
esac
0 commit comments