@@ -7,6 +7,7 @@ set -euo pipefail
77# Parse command line arguments
88CLEAN=false
99E2E_MODE=false
10+ IMPERSONATION=false
1011KUEUE_VERSION=" v0.11.9"
1112while [[ $# -gt 0 ]]; do
1213 case $1 in
@@ -18,13 +19,17 @@ while [[ $# -gt 0 ]]; do
1819 E2E_MODE=true
1920 shift
2021 ;;
22+ --impersonation)
23+ IMPERSONATION=true
24+ shift
25+ ;;
2126 --kueue-version)
2227 KUEUE_VERSION=" $2 "
2328 shift 2
2429 ;;
2530 * )
2631 echo " Unknown option: $1 "
27- echo " Usage: $0 [--clean] [--e2e] [--kueue-version VERSION]"
32+ echo " Usage: $0 [--clean] [--e2e] [--impersonation] [-- kueue-version VERSION]"
2833 exit 1
2934 ;;
3035 esac
@@ -62,7 +67,8 @@ create_clusters() {
6267 fi
6368
6469 echo " Prepare kind clusters"
65- for cluster in " ${all_clusters[@]} " ; do
70+ kind create cluster --name ${hub} --image kindest/node:v1.29.0 --config=config.yaml || true
71+ for cluster in " ${spoke_clusters[@]} " ; do
6672 kind create cluster --name " $cluster " --image kindest/node:v1.29.0 || true
6773 done
6874}
@@ -106,6 +112,60 @@ install_kueue() {
106112 done
107113}
108114
115+ # Function to install cluster-proxy with impersonation support
116+ install_cluster_proxy_with_impersonation () {
117+ echo " Install cert-manager"
118+ kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.17.0/cert-manager.yaml --context ${hubctx}
119+ kubectl wait --for=condition=ready pod -l app.kubernetes.io/instance=cert-manager -n cert-manager --timeout=300s --context ${hubctx}
120+
121+ echo " Setup CA certificate for cluster-proxy"
122+ export CA_CRT=$( kubectl config view --raw -o jsonpath=' {.clusters[?(@.name=="kind-local-cluster")].cluster.certificate-authority-data}' )
123+ export CA_KEY=$( docker exec local-cluster-control-plane cat /etc/kubernetes/pki/ca.key | base64 -w 0)
124+
125+ # Apply CA cert resources with substitution
126+ envsubst < cluster-proxy-ca-cert.yaml | kubectl apply --context ${hubctx} -f -
127+
128+ echo " Install cluster-proxy with impersonation"
129+ GATEWAY_IP=$( docker inspect local-cluster-control-plane --format ' {{.NetworkSettings.Networks.kind.IPAddress}}' )
130+
131+ helm upgrade --install \
132+ -n open-cluster-management-addon --create-namespace \
133+ cluster-proxy ocm/cluster-proxy \
134+ --set " proxyServer.entrypointAddress=${GATEWAY_IP} " \
135+ --set " proxyServer.port=30091" \
136+ --set " enableServiceProxy=true" \
137+ --set installByPlacement.placementName=global \
138+ --set installByPlacement.placementNamespace=open-cluster-management-addon
139+
140+ echo " Create proxy entrypoint external service"
141+ kubectl apply --context ${hubctx} -f cluster-proxy-service.yaml
142+ }
143+
144+ # Function to install kueue-addon
145+ install_kueue_addon () {
146+ echo " Install kueue-addon"
147+
148+ # Determine chart source
149+ if [[ " $E2E_MODE " == " true" ]]; then
150+ CHART_SOURCE=" ../charts/kueue-addon"
151+ EXTRA_ARGS=" --set image.tag=e2e"
152+ else
153+ CHART_SOURCE=" ocm/kueue-addon"
154+ EXTRA_ARGS=" "
155+ fi
156+
157+ # Add impersonation settings if enabled
158+ if [[ " $IMPERSONATION " == " true" ]]; then
159+ EXTRA_ARGS=" $EXTRA_ARGS --set clusterProxy.url=https://cluster-proxy-addon-user.open-cluster-management-addon.svc.cluster.local:9092 --set clusterProxy.impersonation.enabled=true"
160+ fi
161+
162+ # Install kueue-addon
163+ helm upgrade --install \
164+ -n open-cluster-management-addon --create-namespace \
165+ kueue-addon " $CHART_SOURCE " \
166+ $EXTRA_ARGS
167+ }
168+
109169# Function to install OCM addons
110170install_ocm_addons () {
111171 kubectl config use-context ${hubctx}
@@ -122,31 +182,24 @@ install_ocm_addons() {
122182 --set enableAddOnDeploymentConfig=true \
123183 --set hubDeployMode=AddOnTemplate
124184
125- echo " Install cluster-proxy"
126- helm upgrade --install \
127- -n open-cluster-management-addon --create-namespace \
128- cluster-proxy ocm/cluster-proxy \
129- --set installByPlacement.placementName=global \
130- --set installByPlacement.placementNamespace=open-cluster-management-addon
185+ if [[ " $IMPERSONATION " == " true" ]]; then
186+ install_cluster_proxy_with_impersonation
187+ else
188+ echo " Install cluster-proxy"
189+ helm upgrade --install \
190+ -n open-cluster-management-addon --create-namespace \
191+ cluster-proxy ocm/cluster-proxy \
192+ --set installByPlacement.placementName=global \
193+ --set installByPlacement.placementNamespace=open-cluster-management-addon
194+ fi
131195
132196 echo " Install cluster-permission"
133197 helm upgrade --install \
134198 -n open-cluster-management --create-namespace \
135199 cluster-permission ocm/cluster-permission \
136200 --set global.imageOverrides.cluster_permission=quay.io/open-cluster-management/cluster-permission:latest
137201
138- if [[ " $E2E_MODE " == " true" ]]; then
139- echo " Install kueue-addon from local chart"
140- helm upgrade --install \
141- -n open-cluster-management-addon --create-namespace \
142- kueue-addon ../charts/kueue-addon \
143- --set image.tag=e2e
144- else
145- echo " Install kueue-addon"
146- helm upgrade --install \
147- -n open-cluster-management-addon --create-namespace \
148- kueue-addon ocm/kueue-addon
149- fi
202+ install_kueue_addon
150203
151204 echo " Install resource-usage-collect-addon"
152205 helm upgrade --install \
0 commit comments