Skip to content

Commit 2493c05

Browse files
committed
Upgrade fluentbit-operator to fluent-operator
Signed-off-by: dehaocheng <[email protected]>
1 parent 1547896 commit 2493c05

2 files changed

Lines changed: 215 additions & 0 deletions

File tree

cmd/upgrade/Dockerfile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
FROM alpine:latest
2+
RUN apk add --no-cache bash curl jq
3+
RUN apk add --update curl && \
4+
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \
5+
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
6+
rm kubectl && \
7+
apk del curl && \
8+
rm -rf /var/cache/apk/*
9+
COPY ./upgrade.sh /app/upgrade.sh
10+
WORKDIR /app
11+
CMD ["/bin/bash", "/app/upgrade.sh"]

cmd/upgrade/upgrade.sh

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
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

Comments
 (0)