@@ -8,7 +8,7 @@ This directory contains two controllers:
88- ** approval-request-controller** : Runs on the hub cluster to automate approval decisions for staged updates
99- ** metric-collector** : Runs on member clusters to collect workload health metrics from Prometheus
1010
11- ![ Approval Controller and Metric Collector Architecture] ( ./approval-controller-metric-collector.drawio. png )
11+ ![ Approval Controller and Metric Collector Architecture] ( ./approval-controller-metric-collector.png )
1212
1313## How It Works
1414
@@ -75,28 +75,6 @@ This solution introduces three new CRDs that work together with KubeFleet's nati
7575 - Creates a new ApprovalRequest for the next stage (if any)
7676 - The cycle repeats for each stage
7777
78- ### Key Design Decisions
79-
80- ** Why ClusterResourceOverride?**
81- - Each member cluster needs to report to a different namespace on the hub
82- - The override injects the cluster-specific ` reportNamespace ` before deployment
83- - This allows a single MetricCollector definition to work across all clusters
84-
85- ** Why PickFixed Placement Policy?**
86- - Stages may target different subsets of clusters
87- - PickFixed ensures MetricCollector only deploys to clusters in the current stage
88- - Avoids collecting metrics from clusters not involved in the stage
89-
90- ** Why 15-second polling for approval?**
91- - Balances responsiveness with control plane load
92- - Gives clusters time to stabilize after rollout
93- - Allows detection of workload health degradation
94-
95- ** Why cluster-scoped MetricCollector?**
96- - Simplifies propagation via CRP (no namespace matching issues)
97- - Single resource definition covers all namespaces
98- - Consistent with KubeFleet's placement model
99-
10078## Prerequisites
10179
10280- Docker or Podman for building images
0 commit comments