|
| 1 | +--- |
| 2 | +apiVersion: kuttl.dev/v1beta1 |
| 3 | +kind: TestStep |
| 4 | +commands: |
| 5 | + - script: | |
| 6 | + #!/usr/bin/env sh |
| 7 | + set -eu |
| 8 | +
|
| 9 | + CERT_MANAGER_NAMESPACE="cert-manager-beku" |
| 10 | + CERT_MANAGER_CHART_VERSION="v1.15.3" |
| 11 | +
|
| 12 | + MARKER_CONFIG_MAP_NAME="beku-install-marker" |
| 13 | + MARKER_FINALIZER_NAME="tech.stackable.beku/$NAMESPACE" |
| 14 | +
|
| 15 | + MAX_SLEEP_SECONDS=10 |
| 16 | + RANDOM_SLEEP_SECONDS="$((RANDOM % MAX_SLEEP_SECONDS))" |
| 17 | + echo "Sleeping for $RANDOM_SLEEP_SECONDS seconds to reduce the chance " \ |
| 18 | + "of concurrent cert-manager installations" |
| 19 | + sleep "$RANDOM_SLEEP_SECONDS" |
| 20 | +
|
| 21 | + # If cert-manager already appears to be installed, or is still installing |
| 22 | + # in another concurrent test, then add ourselves as a finalizer so it |
| 23 | + # doesn't get deleted while we are using it. |
| 24 | + if kubectl --namespace "$CERT_MANAGER_NAMESPACE" get configmap \ |
| 25 | + "$MARKER_CONFIG_MAP_NAME" 2>/dev/null >/dev/null; |
| 26 | + then |
| 27 | + echo "Skipping cert-manager install, it appears to have been done or " \ |
| 28 | + "is in progress." |
| 29 | + echo "Adding finalizer ${MARKER_FINALIZER_NAME} to marker ConfigMap" \ |
| 30 | + "${CERT_MANAGER_NAMESPACE}/${MARKER_CONFIG_MAP_NAME}." |
| 31 | +
|
| 32 | + kubectl --namespace "$CERT_MANAGER_NAMESPACE" patch configmap \ |
| 33 | + "$MARKER_CONFIG_MAP_NAME" --type=json --patch-file=/dev/stdin <<EOF |
| 34 | + [{ |
| 35 | + "op": "add", |
| 36 | + "path": "/metadata/finalizers/-", |
| 37 | + "value": "$MARKER_FINALIZER_NAME" |
| 38 | + }] |
| 39 | + EOF |
| 40 | +
|
| 41 | + # Now wait until the deployment has finished |
| 42 | + while ! helm list --namespace "$CERT_MANAGER_NAMESPACE" \ |
| 43 | + | grep cert-manager >/dev/null |
| 44 | + do |
| 45 | + echo "Waiting for another instance to finish installing cert-manager" |
| 46 | + sleep 5 |
| 47 | + done |
| 48 | + echo "Finished waiting for another installation of cert-manager" |
| 49 | + exit 0 |
| 50 | + else |
| 51 | + # If cert-manager appears to be installed, but we didn't do it, skip |
| 52 | + # install |
| 53 | + if kubectl get crds -o name | grep 'cert-manager.io'; then |
| 54 | + echo "Cert Manager appears to already be installed outside of " \ |
| 55 | + "testing. Skipping install." |
| 56 | + exit 0 |
| 57 | + fi |
| 58 | + fi |
| 59 | +
|
| 60 | + # Otherwise, we need to install cert-manager |
| 61 | +
|
| 62 | + # Create the namespace, and add finalizer for this test (keyed with |
| 63 | + # $NAMESPACE) |
| 64 | + kubectl create namespace "$CERT_MANAGER_NAMESPACE" |
| 65 | +
|
| 66 | + # Create a marker CM and add ourselves as the first and only finalizer |
| 67 | + echo "Creating marker ConfigMap ${CERT_MANAGER_NAMESPACE}/" \ |
| 68 | + "${MARKER_CONFIG_MAP_NAME}." |
| 69 | + kubectl --namespace "$CERT_MANAGER_NAMESPACE" create configmap \ |
| 70 | + "$MARKER_CONFIG_MAP_NAME" |
| 71 | + echo "Adding finalizer ${MARKER_FINALIZER_NAME} to marker ConfigMap" \ |
| 72 | + "${CERT_MANAGER_NAMESPACE}/${MARKER_CONFIG_MAP_NAME}." |
| 73 | + kubectl --namespace "$CERT_MANAGER_NAMESPACE" patch configmap \ |
| 74 | + "$MARKER_CONFIG_MAP_NAME" --type=json --patch-file=/dev/stdin <<EOF |
| 75 | + [{ |
| 76 | + "op": "add", |
| 77 | + "path": "/metadata/finalizers", |
| 78 | + "value": ["$MARKER_FINALIZER_NAME"] |
| 79 | + }] |
| 80 | + EOF |
| 81 | +
|
| 82 | + helm repo add jetstack https://charts.jetstack.io --force-update |
| 83 | +
|
| 84 | + helm install cert-manager jetstack/cert-manager \ |
| 85 | + --wait \ |
| 86 | + --namespace "$CERT_MANAGER_NAMESPACE" \ |
| 87 | + --version "$CERT_MANAGER_CHART_VERSION" \ |
| 88 | + --set crds.enabled=true \ |
| 89 | + --set prometheus.enabled=false |
| 90 | + timeout: 120 |
0 commit comments