@@ -12,6 +12,8 @@ COMPONENTS=("istio" "cert-manager" "odh" "kserve" "prometheus" "kuadrant" "graf
1212# OpenShift flag
1313OCP=false
1414
15+ KUADRANT_VERSION=" v1.3.0-rc2"
16+
1517SCRIPT_DIR=" $( cd " $( dirname " ${BASH_SOURCE[0]} " ) " && pwd) "
1618INSTALLERS_DIR=" $SCRIPT_DIR /installers"
1719
@@ -41,7 +43,7 @@ get_component_description() {
4143 echo " Dashboard visualization platform (not implemented for vanilla Kubernetes)"
4244 fi
4345 ;;
44- kuadrant) echo " API gateway operators via Helm (Kuadrant, Authorino, Limitador)" ;;
46+ kuadrant) echo " API gateway operators via OLM (Kuadrant, Authorino, Limitador)" ;;
4547 * ) echo " Unknown component" ;;
4648 esac
4749}
@@ -59,7 +61,7 @@ usage() {
5961 echo " --kserve Install KServe model serving platform"
6062 echo " --prometheus Install Prometheus operator"
6163 echo " --grafana Install Grafana dashboard platform"
62- echo " --kuadrant Install Kuadrant operators via Helm "
64+ echo " --kuadrant Install Kuadrant operators via OLM "
6365 echo " --ocp Use OpenShift-specific handling (validate instead of install)"
6466 echo " -h, --help Show this help message"
6567 echo " "
@@ -98,36 +100,60 @@ install_component() {
98100
99101 # Inline handler for Kuadrant (installed via Helm)
100102 if [[ " $component " == " kuadrant" ]]; then
101- echo " 🚀 Installing kuadrant (via Helm)..."
102- NAMESPACE=${NAMESPACE:- kuadrant-system}
103- KUADRANT_CHART_VERSION=${KUADRANT_CHART_VERSION:- 1.3.0-alpha2}
104- AUTHORINO_CHART_VERSION=${AUTHORINO_CHART_VERSION:- 0.21.0}
105- LIMITADOR_CHART_VERSION=${LIMITADOR_CHART_VERSION:- 0.15.0}
106- HELM_REPO_NAME=${HELM_REPO_NAME:- kuadrant}
107- HELM_REPO_URL=${HELM_REPO_URL:- https:// kuadrant.io/ helm-charts/ }
108-
109- if ! command -v helm & > /dev/null; then
110- echo " ❌ helm not found. Please install helm first."
111- return 1
112- fi
113103
114- if helm repo list | awk ' {print $1}' | grep -qx " $HELM_REPO_NAME " ; then
115- echo " 🔄 Updating Helm repo $HELM_REPO_NAME ..."
116- helm repo update
104+ NAMESPACE=${NAMESPACE:- kuadrant-system}
105+ # Check if the CatalogSource already exists before applying
106+ if kubectl get catalogsource kuadrant-operator-catalog -n " $NAMESPACE " & > /dev/null; then
107+ echo " ✅ Kuadrant CatalogSource already exists in namespace $NAMESPACE , skipping creation."
117108 else
118- echo " ➕ Adding Helm repo $HELM_REPO_NAME -> $HELM_REPO_URL ..."
119- helm repo add " $HELM_REPO_NAME " " $HELM_REPO_URL " --force-update
109+ kubectl apply -f - << EOF
110+ apiVersion: operators.coreos.com/v1alpha1
111+ kind: CatalogSource
112+ metadata:
113+ name: kuadrant-operator-catalog
114+ namespace: kuadrant-system
115+ spec:
116+ displayName: Kuadrant Operators
117+ grpcPodConfig:
118+ securityContextConfig: restricted
119+ image: 'quay.io/kuadrant/kuadrant-operator-catalog:v1.3.0-rc2'
120+ publisher: grpc
121+ sourceType: grpc
122+ EOF
120123 fi
121124
122- echo " 📦 Installing kuadrant-operator chart ($KUADRANT_CHART_VERSION )"
123- # Add --devel flag if version contains alpha, beta, or rc
124- if [[ " $KUADRANT_CHART_VERSION " =~ (alpha| beta| rc) ]]; then
125- helm upgrade -i kuadrant-operator " $HELM_REPO_NAME /kuadrant-operator" \
126- --version " $KUADRANT_CHART_VERSION " --devel -n " $NAMESPACE " --create-namespace --wait
127- else
128- helm upgrade -i kuadrant-operator " $HELM_REPO_NAME /kuadrant-operator" \
129- --version " $KUADRANT_CHART_VERSION " -n " $NAMESPACE " --create-namespace --wait
130- fi
125+
126+ echo " 🚀 Installing kuadrant (via OLM Subscription)..."
127+ kubectl apply -f - << EOF
128+ apiVersion: operators.coreos.com/v1alpha1
129+ kind: Subscription
130+ metadata:
131+ name: kuadrant-operator
132+ namespace: kuadrant-system
133+ spec:
134+ channel: stable
135+ installPlanApproval: Automatic
136+ name: kuadrant-operator
137+ source: kuadrant-operator-catalog
138+ sourceNamespace: kuadrant-system
139+ EOF
140+ # Wait for kuadrant-operator-controller-manager deployment to exist before waiting for Available condition
141+ ATTEMPTS=0
142+ MAX_ATTEMPTS=5
143+ while true ; do
144+
145+ if kubectl get deployment/kuadrant-operator-controller-manager -n " $NAMESPACE " & > /dev/null; then
146+ break
147+ else
148+ ATTEMPTS=$(( ATTEMPTS+ 1 ))
149+ if [[ $ATTEMPTS -ge $MAX_ATTEMPTS ]]; then
150+ echo " ❌ kuadrant-operator-controller-manager deployment not found after $MAX_ATTEMPTS attempts."
151+ return 1
152+ fi
153+ echo " ⏳ Waiting for kuadrant-operator-controller-manager deployment to be created... (attempt $ATTEMPTS /$MAX_ATTEMPTS )"
154+ sleep $(( 10 + 10 * $ATTEMPTS ))
155+ fi
156+ done
131157
132158 echo " ⏳ Waiting for operators to be ready..."
133159 kubectl wait --for=condition=Available deployment/kuadrant-operator-controller-manager -n " $NAMESPACE " --timeout=300s
0 commit comments