github.com/operator-framework/operator-lifecycle-manager@v0.30.0/scripts/install.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  
     4  # This script is for installing OLM from a GitHub release
     5  
     6  set -e
     7  
     8  default_base_url=https://github.com/operator-framework/operator-lifecycle-manager/releases/download
     9  
    10  if [[ ${#@} -lt 1 || ${#@} -gt 2 ]]; then
    11      echo "Usage: $0 version [base_url]"
    12      echo "* version: the github release version"
    13      echo "* base_url: the github base URL (Default: $default_base_url)"
    14      exit 1
    15  fi
    16  
    17  if kubectl get deployment olm-operator -n openshift-operator-lifecycle-manager > /dev/null 2>&1; then
    18      echo "OLM is already installed in a different configuration. This is common if you are not running a vanilla Kubernetes cluster. Exiting..."
    19      exit 1
    20  fi
    21  
    22  release="$1"
    23  base_url="${2:-${default_base_url}}"
    24  url="${base_url}/${release}"
    25  namespace=olm
    26  
    27  if kubectl get deployment olm-operator -n ${namespace} > /dev/null 2>&1; then
    28      echo "OLM is already installed in ${namespace} namespace. Exiting..."
    29      exit 1
    30  fi
    31  
    32  kubectl create -f "${url}/crds.yaml"
    33  kubectl wait --for=condition=Established -f "${url}/crds.yaml"
    34  kubectl create -f "${url}/olm.yaml"
    35  
    36  # wait for deployments to be ready
    37  kubectl rollout status -w deployment/olm-operator --namespace="${namespace}"
    38  kubectl rollout status -w deployment/catalog-operator --namespace="${namespace}"
    39  
    40  retries=30
    41  until [[ $retries == 0 ]]; do
    42      new_csv_phase=$(kubectl get csv -n "${namespace}" packageserver -o jsonpath='{.status.phase}' 2>/dev/null || echo "Waiting for CSV to appear")
    43      if [[ $new_csv_phase != "$csv_phase" ]]; then
    44          csv_phase=$new_csv_phase
    45          echo "Package server phase: $csv_phase"
    46      fi
    47      if [[ "$new_csv_phase" == "Succeeded" ]]; then
    48  	break
    49      fi
    50      sleep 10
    51      retries=$((retries - 1))
    52  done
    53  
    54  if [ $retries == 0 ]; then
    55      echo "CSV \"packageserver\" failed to reach phase succeeded"
    56      exit 1
    57  fi
    58  
    59  kubectl rollout status -w deployment/packageserver --namespace="${namespace}"