22set -eo pipefail
33shopt -s expand_aliases
44
5+ # default vars
6+ GATEWAY_CLASS=" istio"
7+ CLUSTER_DOMAIN=" cluster.local"
8+ CERT_MANAGER_ENABLED=" ${CERT_MANAGER_ENABLED: false} "
59DRYCC_REGISTRY=" ${DRYCC_REGISTRY:- registry.drycc.cc} "
610CHARTS_URL=oci://registry.drycc.cc/$( [ " $CHANNEL " == " stable" ] && echo charts || echo charts-testing)
711
@@ -221,7 +225,7 @@ function check_metallb {
221225}
222226
223227function install_network() {
224- echo -e " \\ 033[32m--->Start installing network...\\ 033[0m"
228+ echo -e " \\ 033[32m---> Start installing network...\\ 033[0m"
225229 api_server_address=(` ip -o route get to 8.8.8.8 | sed -n ' s/.*src \([0-9.]\+\).*/\1/p' ` )
226230 helm install cilium $CHARTS_URL /cilium \
227231 --set tunnel=geneve \
@@ -239,15 +243,15 @@ function install_network() {
239243
240244function install_metallb() {
241245 check_metallb
242- echo -e " \\ 033[32m--->Start installing metallb...\\ 033[0m"
246+ echo -e " \\ 033[32m---> Start installing metallb...\\ 033[0m"
243247 helm install metallb $CHARTS_URL /metallb \
244248 --set speaker.frr.enabled=true \
245249 --namespace metallb \
246250 --create-namespace
247251
248- echo -e " \\ 033[32m--->Waiting metallb pods ready...\\ 033[0m"
252+ echo -e " \\ 033[32m---> Waiting metallb pods ready...\\ 033[0m"
249253 kubectl wait pods -n metallb --all --for condition=Ready --timeout=600s
250- echo -e " \\ 033[32m--->Waiting metallb webhook ready...\\ 033[0m"
254+ echo -e " \\ 033[32m---> Waiting metallb webhook ready...\\ 033[0m"
251255 sleep 30s
252256
253257 if [[ -z " ${METALLB_CONFIG_FILE} " ]] ; then
@@ -260,6 +264,10 @@ metadata:
260264spec:
261265 addresses:
262266 - $( ip -o route get to 8.8.8.8 | sed -n ' s/.*src \([0-9.]\+\).*/\1/p' ) /32
267+ serviceAllocation:
268+ priority: 50
269+ namespaces:
270+ - drycc
263271
264272---
265273apiVersion: metallb.io/v1beta1
@@ -287,42 +295,38 @@ EOF
287295 echo -e " \\ 033[32m---> Metallb installed!\\ 033[0m"
288296}
289297
290- function install_traefik() {
291- echo -e " \\ 033[32m--->Start installing traefik...\\ 033[0m"
292- helm install traefik $CHARTS_URL /traefik \
293- --namespace traefik \
294- --create-namespace --wait -f - << EOF
295- service:
296- annotations:
297- metallb.universe.tf/address-pool: public
298- metallb.universe.tf/allow-shared-ip: drycc
299- websecure:
300- tls:
301- enabled: true
302- ingressClass:
303- enabled: true
304- isDefaultClass: true
305- additionalArguments:
306- - "--entrypoints.websecure.http.tls"
307- - "--experimental.http3=true"
308- - "--entrypoints.name.http3"
309- - "--providers.kubernetesingress.allowEmptyServices=true"
310- EOF
311- echo -e " \\ 033[32m---> Traefik installed!\\ 033[0m"
298+ function install_gateway() {
299+ echo -e " \\ 033[32m---> Start installing gateway...\\ 033[0m"
300+
301+ if [[ " ${INSTALL_DRYCC_MIRROR} " == " cn" ]] ; then
302+ gateway_api_url=https://github.com/kubernetes-sigs/gateway-api
303+ else
304+ gateway_api_url=https://github.com/kubernetes-sigs/gateway-api
305+ fi
306+ version=$( curl -Ls $gateway_api_url /releases| grep /kubernetes-sigs/gateway-api/releases/tag/ | sed -E ' s/.*\/kubernetes-sigs\/gateway-api\/releases\/tag\/(v[0-9\.]{1,}(-rc[0-9]{1,})?)".*/\1/g' | head -1)
307+
308+ helm repo add istio https://github.com/istio-charts
309+ helm repo update
310+ kubectl apply -f $gateway_api_url /releases/download/${version} /experimental-install.yaml
311+ helm install istio-base istio/base -n istio-system --create-namespace
312+ helm install istio-istiod istio/istiod -n istio-system --wait
313+ helm install istio-gateway istio/gateway -n istio-system --wait
314+ echo -e " \\ 033[32m---> Gateway installed!\\ 033[0m"
312315}
313316
314317function install_cert_manager() {
315- echo -e " \\ 033[32m--->Start installing cert-manager...\\ 033[0m"
318+ echo -e " \\ 033[32m---> Start installing cert-manager...\\ 033[0m"
316319 helm install cert-manager $CHARTS_URL /cert-manager \
317320 --namespace cert-manager \
318321 --create-namespace \
319322 --set clusterResourceNamespace=drycc \
323+ --set " extraArgs={--feature-gates=ExperimentalGatewayAPISupport=true}" \
320324 --set installCRDs=true --wait
321325 echo -e " \\ 033[32m---> Cert-manager installed!\\ 033[0m"
322326}
323327
324328function install_catalog() {
325- echo -e " \\ 033[32m--->Start installing catalog...\\ 033[0m"
329+ echo -e " \\ 033[32m---> Start installing catalog...\\ 033[0m"
326330 helm install catalog $CHARTS_URL /catalog \
327331 --set asyncBindingOperationsEnabled=true \
328332 --set image=registry.drycc.cc/drycc-addons/service-catalog:canary \
@@ -334,7 +338,7 @@ function install_catalog() {
334338function install_components {
335339 install_network
336340 install_metallb
337- install_traefik
341+ install_gateway
338342 install_cert_manager
339343 install_catalog
340344}
@@ -372,19 +376,14 @@ function install_drycc {
372376
373377cat << EOF > "/tmp/drycc-values.yaml"
374378global:
375- clusterDomain: cluster.local
379+ clusterDomain: ${CLUSTER_DOMAIN}
376380 platformDomain: ${PLATFORM_DOMAIN}
377- certManagerEnabled: ${CERT_MANAGER_ENABLED:- true }
378- ingressClass: traefik
381+ certManagerEnabled: ${CERT_MANAGER_ENABLED}
382+ gatewayClass: ${GATEWAY_CLASS}
379383
380384builder:
381385 replicas: ${BUILDER_REPLICAS}
382386 imageRegistry: ${DRYCC_REGISTRY}
383- service:
384- type: LoadBalancer
385- annotations:
386- metallb.universe.tf/address-pool: public
387- metallb.universe.tf/allow-shared-ip: drycc
388387
389388database:
390389 replicas: ${DATABASE_REPLICAS}
@@ -553,27 +552,22 @@ function install_helmbroker {
553552
554553 helm install helmbroker $CHARTS_URL /helmbroker \
555554 --set global.rabbitmqLocation=" off-cluster" \
556- --set global.ingressClass= " traefik " \
557- --set global.clusterDomain=" cluster.local " \
555+ --set global.gatewayClass= ${GATEWAY_CLASS} \
556+ --set global.clusterDomain=${CLUSTER_DOMAIN} \
558557 --set global.platformDomain=${PLATFORM_DOMAIN} \
559- --set global.certManagerEnabled=${CERT_MANAGER_ENABLED:- true } \
558+ --set global.certManagerEnabled=${CERT_MANAGER_ENABLED} \
560559 --set persistence.size=${HELMBROKER_PERSISTENCE_SIZE:- 5Gi} \
561560 --set persistence.storageClass=${HELMBROKER_PERSISTENCE_STORAGE_CLASS:- " drycc-storage" } \
562561 --set username=${HELMBROKER_USERNAME} \
563562 --set password=${HELMBROKER_PASSWORD} \
564563 --set replicas=${HELMBROKER_REPLICAS} \
565564 --set celeryReplicas=${HELMBROKER_CELERY_REPLICAS} \
566- --set rabbitmqUrl=" amqp://${RABBITMQ_USERNAME} :${RABBITMQ_PASSWORD} @drycc-rabbitmq.drycc.svc.cluster.local :5672/drycc" \
565+ --set rabbitmqUrl=" amqp://${RABBITMQ_USERNAME} :${RABBITMQ_PASSWORD} @drycc-rabbitmq.drycc.svc.${CLUSTER_DOMAIN} :5672/drycc" \
567566 --namespace drycc-helmbroker --create-namespace --wait -f - << EOF
568567repositories:
569- - name: drycc-helm-broker
568+ - name: drycc-helmbroker
570569 url: ${addons_url}
571570EOF
572- if [[ " ${CERT_MANAGER_ENABLED:- true} " == " true" ]] ; then
573- BROKER_URL=" https://${HELMBROKER_USERNAME} :${HELMBROKER_PASSWORD} @drycc-helmbroker.${PLATFORM_DOMAIN} "
574- else
575- BROKER_URL=" http://${HELMBROKER_USERNAME} :${HELMBROKER_PASSWORD} @drycc-helmbroker.${PLATFORM_DOMAIN} "
576- fi
577571
578572 kubectl apply -f - << EOF
579573apiVersion: servicecatalog.k8s.io/v1beta1
@@ -589,7 +583,7 @@ metadata:
589583spec:
590584 relistBehavior: Duration
591585 relistRequests: 5
592- url: ${BROKER_URL }
586+ url: http:// ${HELMBROKER_USERNAME} : ${HELMBROKER_PASSWORD} @drycc-helmbroker.drycc-helmbroker.svc. ${CLUSTER_DOMAIN }
593587EOF
594588
595589 echo -e " \\ 033[32m---> Helmbroker username: $HELMBROKER_USERNAME \\ 033[0m"
@@ -610,7 +604,7 @@ if [[ -z "$@" ]] ; then
610604else
611605 for command in " $@ "
612606 do
613- $command
614- echo -e " \\ 033[32m---> Execute $command complete, enjoy life...\\ 033[0m"
607+ $command
608+ echo -e " \\ 033[32m---> Execute $command complete, enjoy life...\\ 033[0m"
615609 done
616610fi
0 commit comments