github.com/verrazzano/verrazzano@v1.7.1/ci/scripts/prepare_kind_cluster_dns_pipeline.sh (about) 1 #!/usr/bin/env bash 2 # 3 # Copyright (c) 2022, 2023, Oracle and/or its affiliates. 4 # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl. 5 # 6 7 # $1 Boolean indicates whether to setup and install Calico or not 8 9 set -o pipefail 10 11 set -xv 12 13 if [ -z "$JENKINS_URL" ] || [ -z "$GO_REPO_PATH" ] || [ -z "$TESTS_EXECUTED_FILE" ] || [ -z "$WORKSPACE" ] || [ -z "$VERRAZZANO_OPERATOR_IMAGE" ] \ 14 || [ -z "$INSTALL_CONFIG_FILE_KIND" ] || [ -z "$OCI_OS_LOCATION" ] || [ -z "$OCI_OS_COMMIT_BUCKET" ] \ 15 || [ -z "$INSTALL_CONFIG_FILE_OCIDNS" ] || [ -z "$DNS_SCOPE" ] || [ -z "$NGINX_LB_SCOPE" ] || [ -z "$ISTIO_LB_SCOPE" ] \ 16 || [ -z "$CERT_ISSUER" ] || [ -z "$ACME_ENVIRONMENT" ] || [ -z "$TEST_SCRIPTS_DIR" ]; then 17 echo "This script must only be called from Jenkins and requires a number of environment variables are set" 18 exit 1 19 fi 20 21 if ! [ -x "$(command -v go)" ]; then 22 echo "vz command-line tool requires go which does not appear to be installed" 23 exit 1 24 fi 25 26 INSTALL_CALICO=${1:-false} 27 KIND_NODE_COUNT=${KIND_NODE_COUNT:-1} 28 TEST_OVERRIDE_CONFIGMAP_FILE="./tests/e2e/config/scripts/pre-install-overrides/test-overrides-configmap.yaml" 29 TEST_OVERRIDE_SECRET_FILE="./tests/e2e/config/scripts/pre-install-overrides/test-overrides-secret.yaml" 30 INSTALL_TIMEOUT_VALUE=${INSTALL_TIMEOUT:-30m} 31 32 cd ${GO_REPO_PATH}/verrazzano 33 echo "tests will execute" > ${TESTS_EXECUTED_FILE} 34 echo "Create Kind cluster" 35 cd ${TEST_SCRIPTS_DIR} 36 ./create_kind_cluster.sh "${CLUSTER_NAME}" "${GO_REPO_PATH}/verrazzano/platform-operator" "${KUBECONFIG}" "${KIND_KUBERNETES_CLUSTER_VERSION}" true true true $INSTALL_CALICO "NONE" ${KIND_NODE_COUNT} 37 if [ $? -ne 0 ]; then 38 mkdir $WORKSPACE/kind-logs 39 kind export logs $WORKSPACE/kind-logs 40 echo "Kind cluster creation failed" 41 exit 1 42 fi 43 44 if [ $INSTALL_CALICO == true ]; then 45 echo "Install Calico" 46 cd ${GO_REPO_PATH}/verrazzano 47 ./ci/scripts/install_calico.sh "${CLUSTER_NAME}" 48 fi 49 50 # With the Calico configuration to set disableDefaultCNI to true in the KIND configuration, the control plane node will 51 # be ready only after applying calico.yaml. So wait for the KIND control plane node to be ready, before proceeding further, 52 # with maximum wait period of 5 minutes. 53 kubectl wait --for=condition=ready nodes/${CLUSTER_NAME}-control-plane --timeout=5m --all 54 kubectl wait --for=condition=ready pods/kube-controller-manager-${CLUSTER_NAME}-control-plane -n kube-system --timeout=5m 55 echo "Listing pods in kube-system namespace ..." 56 kubectl get pods -n kube-system 57 58 echo "Install metallb" 59 cd ${GO_REPO_PATH}/verrazzano 60 ./tests/e2e/config/scripts/install-metallb.sh 61 62 echo "Create Image Pull Secrets" 63 cd ${GO_REPO_PATH}/verrazzano 64 ./tests/e2e/config/scripts/create-image-pull-secret.sh "${IMAGE_PULL_SECRET}" "${DOCKER_REPO}" "${DOCKER_CREDS_USR}" "${DOCKER_CREDS_PSW}" 65 ./tests/e2e/config/scripts/create-image-pull-secret.sh github-packages "${DOCKER_REPO}" "${DOCKER_CREDS_USR}" "${DOCKER_CREDS_PSW}" 66 ./tests/e2e/config/scripts/create-image-pull-secret.sh ocr "${OCR_REPO}" "${OCR_CREDS_USR}" "${OCR_CREDS_PSW}" 67 68 echo "Determine which yaml file to use to install the Verrazzano Platform Operator" 69 cd ${GO_REPO_PATH}/verrazzano 70 71 TARGET_OPERATOR_FILE=${TARGET_OPERATOR_FILE:-"${WORKSPACE}/acceptance-test-operator.yaml"} 72 if [ -z "$OPERATOR_YAML" ] && [ "" = "${OPERATOR_YAML}" ]; then 73 # Derive the name of the operator.yaml file, copy or generate the file, then install 74 if [ "NONE" = "${VERRAZZANO_OPERATOR_IMAGE}" ]; then 75 echo "Using operator.yaml from object storage" 76 oci --region us-phoenix-1 os object get --namespace ${OCI_OS_NAMESPACE} -bn ${OCI_OS_COMMIT_BUCKET} --name ${OCI_OS_LOCATION}/operator.yaml --file ${WORKSPACE}/downloaded-operator.yaml 77 cp -v ${WORKSPACE}/downloaded-operator.yaml ${TARGET_OPERATOR_FILE} 78 else 79 echo "Generating operator.yaml based on image name provided: ${VERRAZZANO_OPERATOR_IMAGE}" 80 env IMAGE_PULL_SECRETS=verrazzano-container-registry DOCKER_IMAGE=${VERRAZZANO_OPERATOR_IMAGE} ./tools/scripts/generate_operator_yaml.sh > ${TARGET_OPERATOR_FILE} 81 fi 82 else 83 # The operator.yaml filename was provided, install using that file. 84 echo "Using provided operator.yaml file: " ${OPERATOR_YAML} 85 TARGET_OPERATOR_FILE=${OPERATOR_YAML} 86 fi 87 88 VZ_CLI_TARGZ="vz-linux-amd64.tar.gz" 89 echo "Downloading VZ CLI from object storage" 90 if [[ -z "$OCI_OS_LOCATION" ]]; then 91 OCI_OS_LOCATION="$BRANCH_NAME/$(git rev-parse --short=8 HEAD)" 92 fi 93 oci --region us-phoenix-1 os object get --namespace ${OCI_OS_NAMESPACE} -bn ${OCI_OS_COMMIT_BUCKET} --name ${OCI_OS_LOCATION}/$VZ_CLI_TARGZ --file ${WORKSPACE}/$VZ_CLI_TARGZ 94 tar xzf "$WORKSPACE"/$VZ_CLI_TARGZ -C "$WORKSPACE" 95 96 ## Create the verrazzano-install namespace 97 kubectl create namespace verrazzano-install 98 99 # create secret in verrazzano-install ns 100 ./tests/e2e/config/scripts/create-image-pull-secret.sh "${IMAGE_PULL_SECRET}" "${DOCKER_REPO}" "${DOCKER_CREDS_USR}" "${DOCKER_CREDS_PSW}" "verrazzano-install" 101 102 # optionally create a cluster dump snapshot for verifying uninstalls 103 if [ -n "${CLUSTER_SNAPSHOT_DIR}" ]; then 104 ./tests/e2e/config/scripts/looping-test/dump_cluster.sh ${CLUSTER_SNAPSHOT_DIR} 105 fi 106 107 cd ${TEST_SCRIPTS_DIR} 108 ./process_oci_dns_install_yaml.sh $INSTALL_CONFIG_FILE_OCIDNS $CERT_ISSUER $ACME_ENVIRONMENT ${DNS_SCOPE} ${NGINX_LB_SCOPE} ${ISTIO_LB_SCOPE} 109 cd ${TEST_SCRIPTS_DIR} 110 ./create-test-oci-config-secret.sh 111 112 echo "Installing Verrazzano on Kind" 113 if [ -f "$WORKSPACE/vz" ]; then 114 cd $WORKSPACE 115 ./vz install --filename $INSTALL_CONFIG_FILE_OCIDNS --manifests ${TARGET_OPERATOR_FILE} --timeout ${INSTALL_TIMEOUT_VALUE} 116 else 117 cd ${GO_REPO_PATH}/verrazzano/tools/vz 118 GO111MODULE=on GOPRIVATE=github.com/verrazzano go run main.go install --filename $INSTALL_CONFIG_FILE_OCIDNS --manifests ${TARGET_OPERATOR_FILE} --timeout ${INSTALL_TIMEOUT_VALUE} 119 fi 120 result=$? 121 if [[ $result -ne 0 ]]; then 122 exit 1 123 fi 124 125 exit 0