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}"