Skip to content

Commit 75075b1

Browse files
committed
fix: ensure all required acm addons are deployed for the spoke cluster
Signed-off-by: Chris Butler <chris.butler@redhat.com>
1 parent d057806 commit 75075b1

1 file changed

Lines changed: 80 additions & 0 deletions

File tree

rhdp/wrapper-multicluster.sh

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,79 @@ EOF
291291
echo "WARNING: Cluster label is '$CLUSTER_LABEL' (expected: spoke)"
292292
fi
293293

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+
294367
echo "---------------------"
295368
else
296369
echo "Skipping spoke cluster import (ACM: $ACM_STATUS, Spoke Exit Code: $SPOKE_EXIT_CODE)"
@@ -327,6 +400,13 @@ if [ -n "$SPOKE_IMPORT_STATUS" ]; then
327400
if [ "$SPOKE_IMPORT_STATUS" == "SUCCESS" ]; then
328401
echo " - Cluster name: coco-spoke"
329402
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
330410
fi
331411
fi
332412

0 commit comments

Comments
 (0)