|
291 | 291 | echo "WARNING: Cluster label is '$CLUSTER_LABEL' (expected: spoke)" |
292 | 292 | fi |
293 | 293 |
|
| 294 | + # Install required ACM policy addons on spoke cluster |
| 295 | + echo "---------------------" |
| 296 | + echo "Installing ACM policy addons on spoke cluster" |
| 297 | + echo "---------------------" |
| 298 | + |
| 299 | + # Ensure we're using the hub cluster kubeconfig |
| 300 | + export KUBECONFIG="$(pwd)/openshift-install-hub/auth/kubeconfig" |
| 301 | + |
| 302 | + # Create config-policy-controller addon |
| 303 | + cat <<EOF | kubectl apply -f - |
| 304 | +apiVersion: addon.open-cluster-management.io/v1alpha1 |
| 305 | +kind: ManagedClusterAddOn |
| 306 | +metadata: |
| 307 | + name: config-policy-controller |
| 308 | + namespace: coco-spoke |
| 309 | +spec: |
| 310 | + installNamespace: open-cluster-management-agent-addon |
| 311 | +EOF |
| 312 | + |
| 313 | + # Create governance-policy-framework addon |
| 314 | + cat <<EOF | kubectl apply -f - |
| 315 | +apiVersion: addon.open-cluster-management.io/v1alpha1 |
| 316 | +kind: ManagedClusterAddOn |
| 317 | +metadata: |
| 318 | + name: governance-policy-framework |
| 319 | + namespace: coco-spoke |
| 320 | +spec: |
| 321 | + installNamespace: open-cluster-management-agent-addon |
| 322 | +EOF |
| 323 | + |
| 324 | + # Create cert-policy-controller addon |
| 325 | + cat <<EOF | kubectl apply -f - |
| 326 | +apiVersion: addon.open-cluster-management.io/v1alpha1 |
| 327 | +kind: ManagedClusterAddOn |
| 328 | +metadata: |
| 329 | + name: cert-policy-controller |
| 330 | + namespace: coco-spoke |
| 331 | +spec: |
| 332 | + installNamespace: open-cluster-management-agent-addon |
| 333 | +EOF |
| 334 | + |
| 335 | + # Create application-manager addon |
| 336 | + cat <<EOF | kubectl apply -f - |
| 337 | +apiVersion: addon.open-cluster-management.io/v1alpha1 |
| 338 | +kind: ManagedClusterAddOn |
| 339 | +metadata: |
| 340 | + name: application-manager |
| 341 | + namespace: coco-spoke |
| 342 | +spec: |
| 343 | + installNamespace: open-cluster-management-agent-addon |
| 344 | +EOF |
| 345 | + |
| 346 | + # Wait for addons to become available |
| 347 | + echo "Waiting for addons to become available..." |
| 348 | + ADDON_WAIT=0 |
| 349 | + while [ $ADDON_WAIT -lt 180 ]; do |
| 350 | + ADDONS_READY=$(kubectl get managedclusteraddons -n coco-spoke -o jsonpath='{range .items[?(@.spec.installNamespace=="open-cluster-management-agent-addon")]}{.metadata.name}={.status.conditions[?(@.type=="Available")].status}{"\n"}{end}' 2>/dev/null | grep -c "=True" || echo "0") |
| 351 | + if [ "$ADDONS_READY" -ge 4 ]; then |
| 352 | + echo "✓ All policy addons are available" |
| 353 | + ADDON_INSTALL_STATUS="SUCCESS" |
| 354 | + break |
| 355 | + fi |
| 356 | + sleep 10 |
| 357 | + ADDON_WAIT=$((ADDON_WAIT + 10)) |
| 358 | + echo "Addon status: $ADDONS_READY/4 available ($ADDON_WAIT/180 seconds)" |
| 359 | + done |
| 360 | + |
| 361 | + if [ $ADDON_WAIT -ge 180 ]; then |
| 362 | + echo "WARNING: Some addons may not be fully available yet" |
| 363 | + kubectl get managedclusteraddons -n coco-spoke |
| 364 | + ADDON_INSTALL_STATUS="TIMEOUT" |
| 365 | + fi |
| 366 | + |
294 | 367 | echo "---------------------" |
295 | 368 | else |
296 | 369 | echo "Skipping spoke cluster import (ACM: $ACM_STATUS, Spoke Exit Code: $SPOKE_EXIT_CODE)" |
@@ -327,6 +400,13 @@ if [ -n "$SPOKE_IMPORT_STATUS" ]; then |
327 | 400 | if [ "$SPOKE_IMPORT_STATUS" == "SUCCESS" ]; then |
328 | 401 | echo " - Cluster name: coco-spoke" |
329 | 402 | echo " - Label: clusterGroup=spoke" |
| 403 | + if [ -n "$ADDON_INSTALL_STATUS" ]; then |
| 404 | + echo " - Policy addons: $ADDON_INSTALL_STATUS" |
| 405 | + if [ "$ADDON_INSTALL_STATUS" == "SUCCESS" ]; then |
| 406 | + ADDON_COUNT=$(kubectl get managedclusteraddons -n coco-spoke --no-headers 2>/dev/null | wc -l | tr -d ' ') |
| 407 | + echo " - Total addons installed: $ADDON_COUNT" |
| 408 | + fi |
| 409 | + fi |
330 | 410 | fi |
331 | 411 | fi |
332 | 412 |
|
|
0 commit comments