1+ #! /bin/bash
2+ namespace=kubesphere-logging-system
3+
4+ # # Converting an existing configuration to a new one
5+
6+ input_list=$( kubectl get inputs.logging.kubesphere.io -n " ${namespace} " -o json)
7+ input_name=($( echo $input_list | jq -r ' .items[].metadata.name | @json' ) )
8+ input_labels=($( echo $input_list | jq -r ' .items[].metadata.labels | @json' ) )
9+ input_spec=($( echo $input_list | jq -r ' .items[].spec | @json' ) )
10+ input_size=${# input_spec[*]}
11+ echo " Number of original input configuration files:$input_size "
12+
13+ for(( i= 0 ;i< ${input_size} ;i++ )) ; do
14+ cluster_input_list[i]=" {
15+ \" apiVersion\" : \" fluentbit.fluent.io/v1alpha2\" ,
16+ \" kind\" : \" ClusterInput\" ,
17+ \" metadata\" : {
18+ \" name\" : ${input_name[i]} ,
19+ \" labels\" : ${input_labels[i]}
20+ },
21+ \" spec\" : ${input_spec[i]}
22+ }"
23+ done
24+
25+
26+ parser_list=$( kubectl get parsers.logging.kubesphere.io -n " ${namespace} " -o json)
27+ parser_name=($( echo $parser_list | jq -r ' .items[].metadata.name | @json' ) )
28+ parser_labels=($( echo $parser_list | jq -r ' .items[].metadata.labels | @json' ) )
29+ parser_spec=($( echo $parser_list | jq -r ' .items[].spec | @json' ) )
30+ parser_size=${# parser_spec[*]}
31+ echo " Number of original parser configuration files:$parser_size "
32+
33+ for(( i= 0 ;i< ${parser_size} ;i++ )) ; do
34+ cluster_parser_list[i]=" {
35+ \" apiVersion\" : \" fluentbit.fluent.io/v1alpha2\" ,
36+ \" kind\" : \" ClusterParser\" ,
37+ \" metadata\" : {
38+ \" name\" : ${parser_name[i]} ,
39+ \" labels\" : ${parser_labels[i]}
40+ },
41+ \" spec\" : ${parser_spec[i]}
42+ }"
43+ done
44+
45+
46+ filter_list=$( kubectl get filters.logging.kubesphere.io -n " ${namespace} " -o json)
47+ filter_name=($( echo $filter_list | jq -r ' .items[].metadata.name | @json' ) )
48+ filter_labels=($( echo $filter_list | jq -r ' .items[].metadata.labels | @json' ) )
49+ filter_spec=($( echo $filter_list | jq -r ' .items[].spec | @json' ) )
50+ filter_size=${# filter_spec[*]}
51+ echo " Number of original filter configuration files:$filter_size "
52+
53+ for(( i= 0 ;i< ${filter_size} ;i++ )) ; do
54+ cluster_filter_list[i]=" {
55+ \" apiVersion\" : \" fluentbit.fluent.io/v1alpha2\" ,
56+ \" kind\" : \" ClusterFilter\" ,
57+ \" metadata\" : {
58+ \" name\" : ${filter_name[i]} ,
59+ \" labels\" : ${filter_labels[i]}
60+ },
61+ \" spec\" : ${filter_spec[i]}
62+ }"
63+ done
64+
65+
66+ output_list=$( kubectl get outputs.logging.kubesphere.io -n " ${namespace} " -o json)
67+ output_name=($( echo $output_list | jq -r ' .items[].metadata.name | @json' ) )
68+ output_labels=($( echo $output_list | jq -r ' .items[].metadata.labels | @json' ) )
69+ output_spec=($( echo $output_list | jq -r ' .items[].spec | @json' ) )
70+ output_size=${# output_spec[*]}
71+ echo " Number of original output configuration files:$output_size "
72+
73+ for(( i= 0 ;i< ${output_size} ;i++ )) ; do
74+ cluster_output_list[i]=" {
75+ \" apiVersion\" : \" fluentbit.fluent.io/v1alpha2\" ,
76+ \" kind\" : \" ClusterOutput\" ,
77+ \" metadata\" : {
78+ \" name\" : ${output_name[i]} ,
79+ \" labels\" : ${output_labels[i]}
80+ },
81+ \" spec\" : ${output_spec[i]}
82+ }"
83+ done
84+
85+
86+ fluentbit_config_list=$( kubectl get fluentbitconfigs.logging.kubesphere.io -n " ${namespace} " -o json)
87+ fluentbit_config_name=($( echo $fluentbit_config_list | jq -r ' .items[].metadata.name | @json' ) )
88+ fluentbit_config_spec=($( echo $fluentbit_config_list | jq -r ' .items[].spec | @json' ) )
89+ fluentbit_config_labels=($( echo $fluentbit_config_list | jq -r ' .items[].metadata.labels | @json' ) )
90+ fluentbit_config_size=${# fluentbit_config_spec[*]}
91+ echo " Number of original fluentbit_config configuration files:$fluentbit_config_size "
92+
93+ for(( i= 0 ;i< ${fluentbit_config_size} ;i++ )) ; do
94+ cluster_fluentbit_config_list[i]=" {
95+ \" apiVersion\" : \" fluentbit.fluent.io/v1alpha2\" ,
96+ \" kind\" : \" ClusterFluentBitConfig\" ,
97+ \" metadata\" : {
98+ \" name\" : ${fluentbit_config_name[i]} ,
99+ \" labels\" : ${fluentbit_config_labels[i]}
100+ },
101+ \" spec\" : ${fluentbit_config_spec[i]}
102+ }"
103+ done
104+
105+ fluentbit_list=$( kubectl get fluentbits.logging.kubesphere.io -n " ${namespace} " -o json)
106+ fluentbit_name=($( echo $fluentbit_list | jq -r ' .items[].metadata.name' ) )
107+ fluentbit_spec=($( echo $fluentbit_list | jq -r ' .items[].spec | @json' ) )
108+ fluentbit_labels=($( echo $fluentbit_list | jq -r ' .items[].metadata.labels | @json' ) )
109+ fluentbit_size=${# fluentbit_name[*]}
110+ echo " Number of original fluentbit configuration files:$fluentbit_size "
111+
112+ for(( i= 0 ;i< ${fluentbit_size} ;i++ )) ; do
113+ cluster__fluentbit_list[i]=" {
114+ \" apiVersion\" : \" fluentbit.fluent.io/v1alpha2\" ,
115+ \" kind\" : \" FluentBit\" ,
116+ \" metadata\" : {
117+ \" name\" : \" fluent-operator-${fluentbit_name[i]} \" ,
118+ \" labels\" : ${fluentbit_labels[i]} ,
119+ \" namespace\" : \" ${namespace} \"
120+ },
121+ \" spec\" : ${fluentbit_spec[i]}
122+ }"
123+ done
124+
125+ for(( i= 0 ;i< ${fluentbit_size} ;i++ )) ; do
126+ echo ${cluster__fluentbit_list[i]} | kubectl apply -f -
127+ done
128+
129+ for(( i= 0 ;i< ${fluentbit_config_size} ;i++ )) ; do
130+ echo ${cluster_fluentbit_config_list[i]} | kubectl apply -f -
131+ done
132+
133+ for(( i= 0 ;i< ${input_size} ;i++ )) ; do
134+ echo ${cluster_input_list[i]} | kubectl apply -f -
135+ done
136+
137+ for(( i= 0 ;i< ${parser_size} ;i++ )) ; do
138+ echo ${cluster_parser_list[i]} | kubectl apply -f -
139+ done
140+
141+ for(( i= 0 ;i< ${filter_size} ;i++ )) ; do
142+ echo ${cluster_filter_list[i]} | kubectl apply -f -
143+ done
144+
145+ for(( i= 0 ;i< ${output_size} ;i++ )) ; do
146+ echo ${cluster_output_list[i]} | kubectl apply -f -
147+ done
148+
149+ # # Uninstall the fluentbit-operator and the original configuration
150+
151+ for(( i= 0 ;i< ${input_size} ;i++ )) ; do
152+ echo " ${input_name[i]} "
153+ input_temp=$( echo ${input_name[i]} | sed ' s/"//g' )
154+ echo " $input_temp "
155+ kubectl delete input.logging.kubesphere.io $input_temp -n ${namespace}
156+ done
157+
158+ for(( i= 0 ;i< ${parser_size} ;i++ )) ; do
159+ echo " ${parser_name[i]} "
160+ parser_temp=$( echo ${parser_name[i]} | sed ' s/"//g' )
161+ echo " parser$parser_temp "
162+ kubectl delete parser.logging.kubesphere.io $parser_temp -n ${namespace}
163+ done
164+
165+ for(( i= 0 ;i< ${filter_size} ;i++ )) ; do
166+ echo " ${filter_name[i]} "
167+ filter_temp=$( echo ${filter_name[i]} | sed ' s/"//g' )
168+ echo " $filter_temp "
169+ kubectl delete filter.logging.kubesphere.io $filter_temp -n ${namespace}
170+ done
171+
172+ for(( i= 0 ;i< ${output_size} ;i++ )) ; do
173+ echo " ${output_name[i]} "
174+ output_temp=$( echo ${output_name[i]} | sed ' s/"//g' )
175+ echo " $output_temp "
176+ kubectl delete output.logging.kubesphere.io $output_temp -n ${namespace}
177+ done
178+
179+ for(( i= 0 ;i< ${fluentbit_config_size} ;i++ )) ; do
180+ echo " ${fluentbit_config_name[i]} "
181+ fluentbit_config_temp=$( echo ${fluentbit_config_name[i]} | sed ' s/"//g' )
182+ echo " $fluentbit_config_temp "
183+ kubectl delete fluentbitconfig.logging.kubesphere.io $fluentbit_config_temp -n ${namespace}
184+ done
185+
186+ for(( i= 0 ;i< ${fluentbit_size} ;i++ )) ; do
187+ echo " ${fluentbit_name[i]} "
188+ fluentbit_temp=$( echo ${fluentbit_name[i]} | sed ' s/"//g' )
189+ echo " $fluentbit_temp "
190+ kubectl delete fluentbit.logging.kubesphere.io $fluentbit_temp -n ${namespace}
191+ done
192+
193+ # Determine if Deployment exists
194+ if kubectl get deployment -n $namespace $deployment > /dev/null 2>&1 ; then
195+ # Delete Deployment if it exists
196+ kubectl delete deployment -n $namespace $deployment
197+ echo " Deployment $deployment deleted"
198+ else
199+ # If it does not exist, output the message
200+ echo " Deployment $deployment does not exist"
201+ fi
202+
203+ # # Delete the old crd
204+ kubectl get crd -o=jsonpath=' {range .items[*]}{.metadata.name}{"\n"}{end}' | grep " logging.kubesphere.io" | xargs -I crd_name kubectl delete crd crd_name
0 commit comments