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