@@ -23,7 +23,7 @@ if [[ -z "${DRYCC_ADMIN_USERNAME}" || -z "${DRYCC_ADMIN_PASSWORD}" ]] ; then
2323fi
2424
2525# initArch discovers the architecture for this system.
26- initArch () {
26+ init_arch () {
2727 ARCH=$( uname -m)
2828 case $ARCH in
2929 armv5* ) ARCH=" armv5" ;;
@@ -42,9 +42,9 @@ function clean_before_exit {
4242 sleep 3
4343}
4444trap clean_before_exit EXIT
45- initArch
45+ init_arch
4646
47- function get_helm {
47+ function install_helm {
4848 tar_name=" helm-canary-linux-${ARCH} .tar.gz"
4949 curl -fsSL -o " ${tar_name} " " https://get.helm.sh/${tar_name} "
5050 tar -zxvf " ${tar_name} "
8989 INSTALL_K3S_EXEC=" agent --flannel-backend=none"
9090fi
9191
92- alias install-k3s=" curl -sfL " ${k3s_install_url} " |sh - $@ "
93- export INSTALL_K3S_EXEC
94- install-k3s
95- mount bpffs -t bpf /sys/fs/bpf
96-
97- get_helm
92+ function install_k3s {
93+ export INSTALL_K3S_EXEC
94+ curl -sfL " ${k3s_install_url} " | sh -
95+ }
9896
99- helm repo add drycc https://charts.drycc.cc/${CHANNEL:- stable}
100- helm repo update
97+ function install_components {
98+ mount bpffs -t bpf /sys/fs/bpf
99+ install_helm
100+ helm repo add drycc https://charts.drycc.cc/${CHANNEL:- stable}
101+ helm repo update
101102
102- echo -e " \\ 033[32m---> Waiting for helm to install components...\\ 033[0m"
103+ echo -e " \\ 033[32m---> Waiting for helm to install components...\\ 033[0m"
103104
104- helm install cilium drycc/cilium --set operator.replicas=1 --namespace kube-system --wait
105- helm install metallb drycc/metallb --namespace kube-system --wait -f - << EOF
105+ helm install cilium drycc/cilium --set operator.replicas=1 --namespace kube-system --wait
106+ helm install metallb drycc/metallb --namespace kube-system --wait -f - << EOF
106107configInline:
107108 address-pools:
108109 - name: default
109110 protocol: layer2
110111 addresses:
111112 - ${METALLB_ADDRESS_POOLS:- 172.16.0.0/ 12}
112113EOF
113- helm install ingress-nginx drycc/ingress-nginx --namespace kube-system --wait
114- helm install longhorn drycc/longhorn --create-namespace --set persistence.defaultClass=false --set persistence.defaultClassReplicaCount=1 --namespace longhorn-system --wait
115- helm install cert-manager drycc/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true --wait
116- helm install catalog drycc/catalog --set asyncBindingOperationsEnabled=true --namespace catalog --create-namespace --wait
117-
118- echo -e " \\ 033[32m---> Start installing workflow...\\ 033[0m"
119-
120- RABBITMQ_USERNAME=$( cat /proc/sys/kernel/random/uuid)
121- RABBITMQ_PASSWORD=$( cat /proc/sys/kernel/random/uuid)
122-
123- helm install drycc drycc/workflow \
124- --set builder.service.type=LoadBalancer \
125- --set global.cluster_domain=" cluster.local" \
126- --set global.platform_domain=" ${PLATFORM_DOMAIN} " \
127- --set global.ingress_class=nginx \
128- --set fluentd.daemon_environment.CONTAINER_TAIL_PARSER_TYPE=" /^(?<time>.+) (?<stream>stdout|stderr)( (?<tags>.))? (?<log>.*)$/" \
129- --set controller.app_storage_class=longhorn \
130- --set minio.persistence.enabled=true \
131- --set minio.persistence.size=${MINIO_PERSISTENCE_SIZE:- 5Gi} \
132- --set minio.persistence.storageClass=" longhorn" \
133- --set rabbitmq.username=" ${RABBITMQ_USERNAME} " \
134- --set rabbitmq.password=" ${RABBITMQ_PASSWORD} " \
135- --set rabbitmq.persistence.enabled=true \
136- --set rabbitmq.persistence.size=${RABBITMQ_PERSISTENCE_SIZE:- 5Gi} \
137- --set rabbitmq.persistence.storageClass=" longhorn" \
138- --set influxdb.persistence.enabled=true \
139- --set influxdb.persistence.size=${INFLUXDB_PERSISTENCE_SIZE:- 5Gi} \
140- --set influxdb.persistence.storageClass=" longhorn" \
141- --set monitor.grafana.persistence.enabled=true \
142- --set monitor.grafana.persistence.size=${MONITOR_PERSISTENCE_SIZE:- 5Gi} \
143- --set monitor.grafana.persistence.storageClass=" longhorn" \
144- --set passport.admin_username=${DRYCC_ADMIN_USERNAME} \
145- --set passport.admin_password=${DRYCC_ADMIN_PASSWORD} \
146- --namespace drycc \
147- --create-namespace --wait --timeout 30m0s
148-
149- HELMBROKER_USERNAME=$( cat /proc/sys/kernel/random/uuid)
150- HELMBROKER_PASSWORD=$( cat /proc/sys/kernel/random/uuid)
151-
152- echo -e " \\ 033[32m---> Start installing helmbroker...\\ 033[0m"
153-
154- helm install helmbroker drycc/helmbroker \
155- --set ingress_class=" nginx" \
156- --set platform_domain=" cluster.local" \
157- --set persistence.storageClass=" longhorn" \
158- --set persistence.size=${HELMBROKER_PERSISTENCE_SIZE:- 5Gi} \
159- --set platform_domain=${PLATFORM_DOMAIN} \
160- --set username=${HELMBROKER_USERNAME} \
161- --set password=${HELMBROKER_PASSWORD} \
162- --set environment.HELMBROKER_CELERY_BROKER=" amqp://${RABBITMQ_USERNAME} :${RABBITMQ_PASSWORD} @drycc-rabbitmq-0.drycc-rabbitmq.drycc.svc.cluster.local:5672/drycc" \
163- --namespace drycc --create-namespace --wait -f - << EOF
114+ helm install ingress-nginx drycc/ingress-nginx --namespace kube-system --wait
115+ helm install cert-manager drycc/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true --wait
116+ helm install catalog drycc/catalog --set asyncBindingOperationsEnabled=true --namespace catalog --create-namespace --wait
117+ }
118+
119+ function install_longhorn {
120+ helm install longhorn drycc/longhorn --create-namespace \
121+ --set persistence.defaultClass=false \
122+ --set persistence.defaultClassReplicaCount=1 \
123+ --namespace longhorn-system --wait
124+ }
125+
126+ function install_drycc {
127+ echo -e " \\ 033[32m---> Start installing workflow...\\ 033[0m"
128+
129+ RABBITMQ_USERNAME=$( cat /proc/sys/kernel/random/uuid)
130+ RABBITMQ_PASSWORD=$( cat /proc/sys/kernel/random/uuid)
131+
132+ helm install drycc drycc/workflow \
133+ --set builder.service.type=LoadBalancer \
134+ --set global.cluster_domain=" cluster.local" \
135+ --set global.platform_domain=" ${PLATFORM_DOMAIN} " \
136+ --set global.ingress_class=nginx \
137+ --set fluentd.daemon_environment.CONTAINER_TAIL_PARSER_TYPE=" /^(?<time>.+) (?<stream>stdout|stderr)( (?<tags>.))? (?<log>.*)$/" \
138+ --set controller.app_storage_class=longhorn \
139+ --set minio.persistence.enabled=true \
140+ --set minio.persistence.size=${MINIO_PERSISTENCE_SIZE:- 5Gi} \
141+ --set minio.persistence.storageClass=" longhorn" \
142+ --set rabbitmq.username=" ${RABBITMQ_USERNAME} " \
143+ --set rabbitmq.password=" ${RABBITMQ_PASSWORD} " \
144+ --set rabbitmq.persistence.enabled=true \
145+ --set rabbitmq.persistence.size=${RABBITMQ_PERSISTENCE_SIZE:- 5Gi} \
146+ --set rabbitmq.persistence.storageClass=" longhorn" \
147+ --set influxdb.persistence.enabled=true \
148+ --set influxdb.persistence.size=${INFLUXDB_PERSISTENCE_SIZE:- 5Gi} \
149+ --set influxdb.persistence.storageClass=" longhorn" \
150+ --set monitor.grafana.persistence.enabled=true \
151+ --set monitor.grafana.persistence.size=${MONITOR_PERSISTENCE_SIZE:- 5Gi} \
152+ --set monitor.grafana.persistence.storageClass=" longhorn" \
153+ --set passport.admin_username=${DRYCC_ADMIN_USERNAME} \
154+ --set passport.admin_password=${DRYCC_ADMIN_PASSWORD} \
155+ --namespace drycc \
156+ --create-namespace --wait --timeout 30m0s
157+ echo -e " \\ 033[32m---> Rabbitmq username: $RABBITMQ_USERNAME \\ 033[0m"
158+ echo -e " \\ 033[32m---> Rabbitmq password: $RABBITMQ_PASSWORD \\ 033[0m"
159+ }
160+
161+ function install_helmbroker {
162+ HELMBROKER_USERNAME=$( cat /proc/sys/kernel/random/uuid)
163+ HELMBROKER_PASSWORD=$( cat /proc/sys/kernel/random/uuid)
164+
165+ echo -e " \\ 033[32m---> Start installing helmbroker...\\ 033[0m"
166+
167+ helm install helmbroker drycc/helmbroker \
168+ --set ingress_class=" nginx" \
169+ --set platform_domain=" cluster.local" \
170+ --set persistence.storageClass=" longhorn" \
171+ --set persistence.size=${HELMBROKER_PERSISTENCE_SIZE:- 5Gi} \
172+ --set platform_domain=${PLATFORM_DOMAIN} \
173+ --set username=${HELMBROKER_USERNAME} \
174+ --set password=${HELMBROKER_PASSWORD} \
175+ --set environment.HELMBROKER_CELERY_BROKER=" amqp://${RABBITMQ_USERNAME} :${RABBITMQ_PASSWORD} @drycc-rabbitmq-0.drycc-rabbitmq.drycc.svc.cluster.local:5672/drycc" \
176+ --namespace drycc --create-namespace --wait -f - << EOF
164177repositories:
165178- name: drycc-helm-broker
166179 url: ${addons_url}
167180EOF
168181
169- kubectl apply -f - << EOF
182+ kubectl apply -f - << EOF
170183apiVersion: servicecatalog.k8s.io/v1beta1
171184kind: ClusterServiceBroker
172185metadata:
@@ -183,11 +196,16 @@ spec:
183196 url: https://${HELMBROKER_USERNAME} :${HELMBROKER_PASSWORD} @drycc-helmbroker.${PLATFORM_DOMAIN}
184197EOF
185198
186- BUILDER_IP=$( kubectl get svc drycc-builder -n drycc -o=" jsonpath={.status.loadBalancer.ingress[0].ip}" )
187- INGRESS_IP=$( kubectl get svc ingress-nginx-controller -n kube-system -o=" jsonpath={.status.loadBalancer.ingress[0].ip}" )
199+ echo -e " \\ 033[32m---> Helmbroker username: $HELMBROKER_USERNAME \\ 033[0m"
200+ echo -e " \\ 033[32m---> Helmbroker password: $HELMBROKER_PASSWORD \\ 033[0m"
201+ }
202+
203+ function config_haproxy {
204+ BUILDER_IP=$( kubectl get svc drycc-builder -n drycc -o=" jsonpath={.status.loadBalancer.ingress[0].ip}" )
205+ INGRESS_IP=$( kubectl get svc ingress-nginx-controller -n kube-system -o=" jsonpath={.status.loadBalancer.ingress[0].ip}" )
188206
189- if [[ " ${USE_HAPROXY:- true} " == " true" ]] ; then
190- cat << EOF > "/etc/haproxy/haproxy.cfg"
207+ if [[ " ${USE_HAPROXY:- true} " == " true" ]] ; then
208+ cat << EOF > "/etc/haproxy/haproxy.cfg"
191209global
192210 log /dev/log local0
193211 log /dev/log local1 notice
@@ -222,15 +240,40 @@ listen builder
222240 timeout server 30000
223241 server builder ${BUILDER_IP} :2222 check
224242EOF
225- fi
243+ fi
226244
227- mkdir -p /run/haproxy
228- systemctl enable haproxy
229- systemctl restart haproxy
245+ mkdir -p /run/haproxy
246+ systemctl enable haproxy
247+ systemctl restart haproxy
248+ }
230249
231- echo -e " \\ 033[32m---> Please save the following information for future use.\\ 033[0m"
232- echo -e " \\ 033[32m---> Rabbitmq username: $RABBITMQ_USERNAME \\ 033[0m"
233- echo -e " \\ 033[32m---> Rabbitmq password: $RABBITMQ_PASSWORD \\ 033[0m"
234- echo -e " \\ 033[32m---> Helmbroker username: $HELMBROKER_USERNAME \\ 033[0m"
235- echo -e " \\ 033[32m---> Helmbroker password: $HELMBROKER_PASSWORD \\ 033[0m"
236- echo -e " \\ 033[32m---> Installation complete, enjoy life...\\ 033[0m"
250+ # --- add quotes to command arguments ---
251+ quote () {
252+ for arg in " $@ " ; do
253+ printf ' %s\n' " $arg " | sed " s/'/'\\\\ ''/g;1s/^/'/;\$ s/\$ /'/"
254+ done
255+ }
256+
257+ # --- escape most punctuation characters, except quotes, forward slash, and space ---
258+ escape () {
259+ printf ' %s' " $@ " | sed -e ' s/\([][!#$%&()*;<=>?\_`{|}]\)/\\\1/g;'
260+ }
261+
262+ # --- re-evaluate args to include env command ---
263+ eval set -- $( escape " ${INSTALL_DRYCC_EXEC} " ) $( quote " $@ " )
264+
265+ if [[ -z " $@ " ]] ; then
266+ install_k3s
267+ install_components
268+ install_longhorn
269+ install_drycc
270+ install_helmbroker
271+ config_haproxy
272+ echo -e " \\ 033[32m---> Installation complete, enjoy life...\\ 033[0m"
273+ else
274+ for command in " $@ "
275+ do
276+ $command
277+ echo -e " \\ 033[32m---> Installation $command complete, enjoy life...\\ 033[0m"
278+ done
279+ fi
0 commit comments