I built the kubernetes_multicluster plugin for PipeCD as my LFX Mentorship project. The plugin lets a single PipeCD application deploy to several Kubernetes clusters at once, with the same progressive delivery stages that the single-cluster plugin supports.
Stages
I implemented the core deployment stages one at a time:
- Canary: rollout and clean (#6583, #6589)
- Primary: rollout (#6591)
- Baseline: rollout and clean (#6606, #6607)
- Traffic routing: splitting traffic between variants, plus log updates (#6629, #6648)
Correctness and operations
- Fixed rollback variant cleanup and added pruning of orphaned resources on rollback (#6660, #6748)
- Made strategy selection multi-target aware (#6672)
- Fixed livestate drift detection and resource filtering (#6673, #6783)
- Implemented plan preview (#6685)
- Added config hashing for StatefulSets and DaemonSets, and health status for DaemonSets, ReplicaSets and Pods (#6697, #6807)
Configuration
- Per-target
kustomizeDir, kustomizeVersion and kustomizeOptions (#6718, #6749)
- Per-stage
multiTarget filtering (#6757)
- Config validation for
KubernetesApplicationSpec (#6747)
- An initializer hook for Helm repo and OCI registry auth (#6723)
Per-cluster deploy status
When a stage deploys to several clusters and one fails, operators used to see only "stage failed". I added a DeployTargetStatus type to the plugin SDK and extended ExecuteStageResponse with per-target statuses, in both PipeCD and the standalone Go SDK. The plugin now reports which cluster failed (#6861, piped-plugin-sdk-go #6, #6812).
Release
I also renamed stages to avoid conflicts with the single-cluster plugin, added tests and cleanup PRs, and wrote the plugin documentation page and README to release standard (#6880, #6878, #6977). I wrote about the project on the PipeCD blog.
Links: LFX issue #6446 • Merged PRs • Repository