Skip to content

Commit 294b58e

Browse files
committed
chore(workflow): add istio gateway install script
1 parent c777510 commit 294b58e

5 files changed

Lines changed: 57 additions & 54 deletions

File tree

.woodpecker/publish-charts.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ pipeline:
99
commands:
1010
- export VERSION=$(sed 's#v##' <<< $CI_COMMIT_TAG)
1111
- export IMAGE_TAG=$([ ! -z $CI_COMMIT_TAG ] && echo \"$VERSION\" || echo \"canary\")
12+
- export APP_VERSION=$([ ! -z $CI_COMMIT_TAG ] && echo $VERSION || echo 1.0.0)
13+
- export CHART_VERSION=$([ -z $CI_COMMIT_TAG ] && echo 1.0.0 || echo $VERSION)
1214
- pip install -r requirements.txt
1315
- python3 _scripts/dependency_update.py "oci://$DRYCC_REGISTRY/$([ -z $CI_COMMIT_TAG ] && echo charts-testing || echo charts)" "charts/workflow/Chart.yaml"
1416
- helm dependency update charts/workflow
15-
- helm package -u charts/$${CI_REPO_NAME} --version $([ -z $CI_COMMIT_TAG ] && echo 1.0.0 || echo $VERSION)
17+
- helm package -u charts/$${CI_REPO_NAME} --version $CHART_VERSION --app-version $APP_VERSION
1618
- echo $CONTAINER_PASSWORD | helm registry login $DRYCC_REGISTRY -u $CONTAINER_USERNAME --password-stdin
17-
- helm push $${CI_REPO_NAME}-$([ -z $CI_COMMIT_TAG ] && echo 1.0.0 || echo $VERSION).tgz oci://$DRYCC_REGISTRY/$([ -z $CI_COMMIT_TAG ] && echo charts-testing || echo charts)
19+
- helm push $${CI_REPO_NAME}-$CHART_VERSION.tgz oci://$DRYCC_REGISTRY/$([ -z $CI_COMMIT_TAG ] && echo charts-testing || echo charts)
1820
- bash _scripts/generate_cache.sh
1921
secrets:
2022
- drycc_registry

_scripts/generate_cache.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,11 @@ cd $tmp
1414

1515
helm repo add cilium https://helm.cilium.io/
1616
helm repo add metallb https://metallb.github.io/metallb
17-
helm repo add traefik https://helm.traefik.io/traefik
1817
helm repo add jetstack https://charts.jetstack.io
1918
helm repo update
2019

2120
helm fetch cilium/cilium
2221
helm fetch metallb/metallb
23-
helm fetch traefik/traefik
2422
helm fetch jetstack/cert-manager
2523

2624
# remove v from cert-manager version

_scripts/install.sh

Lines changed: 44 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
set -eo pipefail
33
shopt -s expand_aliases
44

5+
# default vars
6+
GATEWAY_CLASS="istio"
7+
CLUSTER_DOMAIN="cluster.local"
8+
CERT_MANAGER_ENABLED="${CERT_MANAGER_ENABLED:false}"
59
DRYCC_REGISTRY="${DRYCC_REGISTRY:-registry.drycc.cc}"
610
CHARTS_URL=oci://registry.drycc.cc/$([ "$CHANNEL" == "stable" ] && echo charts || echo charts-testing)
711

@@ -221,7 +225,7 @@ function check_metallb {
221225
}
222226

223227
function 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

240244
function 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:
260264
spec:
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
---
265273
apiVersion: 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

314317
function 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

324328
function 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() {
334338
function 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

373377
cat << EOF > "/tmp/drycc-values.yaml"
374378
global:
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
380384
builder:
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
389388
database:
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
568567
repositories:
569-
- name: drycc-helm-broker
568+
- name: drycc-helmbroker
570569
url: ${addons_url}
571570
EOF
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
579573
apiVersion: servicecatalog.k8s.io/v1beta1
@@ -589,7 +583,7 @@ metadata:
589583
spec:
590584
relistBehavior: Duration
591585
relistRequests: 5
592-
url: ${BROKER_URL}
586+
url: http://${HELMBROKER_USERNAME}:${HELMBROKER_PASSWORD}@drycc-helmbroker.drycc-helmbroker.svc.${CLUSTER_DOMAIN}
593587
EOF
594588

595589
echo -e "\\033[32m---> Helmbroker username: $HELMBROKER_USERNAME\\033[0m"
@@ -610,7 +604,7 @@ if [[ -z "$@" ]] ; then
610604
else
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
616610
fi

charts/workflow/Chart.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
apiVersion: v2
2+
appVersion: 1.0.0
23
dependencies:
34
- name: builder
45
repository: oci://registry.drycc.cc/charts-testing

charts/workflow/values.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,3 +327,11 @@ gateway:
327327
- drycc-influxdb
328328
- drycc-prometheus
329329
- drycc-monitor-grafana
330+
# custom listeners
331+
customListeners:
332+
- name: drycc-gateway-listener-builder-tcp
333+
port: 2222
334+
protocol: TCP
335+
allowedRoutes:
336+
namespaces:
337+
from: All

0 commit comments

Comments
 (0)