feat: auto-bootstrap plural on crossplane#3791
Conversation
Soffi AI SummaryThis PR introduces a new The motivation is to bridge the gap between Crossplane's infrastructure provisioning model and Plural's GitOps CD engine — clusters created via Crossplane CRDs (e.g., Key additions:
Commits
Updated: 2026-07-07 10:52 UTC |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
|
Warning Review the following alerts detected in dependencies. According to your organization's Security Policy, it is recommended to resolve "Warn" alerts. Learn more about Socket for GitHub.
|
Greptile SummaryThis PR adds a new
Confidence Score: 3/5The controller can permanently skip deploying the Plural agent into the target cluster if Helm happens to be busy during the first reconciliation pass. When go/deployment-operator/internal/controller/pluralcrossplanecluster_controller.go — specifically the Helm "in progress" fallthrough around line 143.
|
| Filename | Overview |
|---|---|
| go/deployment-operator/internal/controller/pluralcrossplanecluster_controller.go | New controller for PluralCrossplaneCluster; contains a bug where the spec hash is persisted even when the Helm agent deployment returns an "in progress" error, preventing future reconciliation retries. |
| go/deployment-operator/internal/crossplane/cluster.go | Well-structured ManagedCluster interface, connection secret resolution, and kubeconfig extraction utilities; logic is clean and tested. |
| go/deployment-operator/internal/crossplane/aws_eks.go | Local mirror types for AWS EKS Crossplane clusters (crossplane-contrib and upbound v1beta1/v1beta2) with proper DeepCopy implementations; no issues found. |
| go/deployment-operator/internal/crossplane/aws_cluster_auth.go | Hydrates connection secret config from a ClusterAuth resource when the cluster itself has none; unfiltered cluster-wide List could cause false matches at scale. |
| go/deployment-operator/internal/crossplane/provider.go | Provider dispatch with explicit ErrUnsupportedProvider sentinel; extensible structure for future GKE/AKS support. |
| go/deployment-operator/internal/crossplane/scheme.go | Registers all three AWS EKS GVKs (crossplane-contrib v1beta1, upbound v1beta1, upbound v1beta2) into a runtime Scheme; straightforward and tested. |
| go/deployment-operator/api/v1alpha1/pluralcrossplanecluster_types.go | CRD type definitions and helper methods for PluralCrossplaneCluster; clean implementation with proper attribute conversion for Console API. |
| go/deployment-operator/cmd/agent/kubernetes.go | Registers PluralCrossplaneClusterController with the manager; consistent with existing controller registration pattern in the file. |
| go/deployment-operator/cmd/agent/main.go | Adds crossplane scheme to the global scheme via AddToScheme; minimal, correct change. |
Reviews (1): Last reviewed commit: "plural crossplane cluster" | Re-trigger Greptile
…to-bootstrap-plural-on-crossplane-created-eksaksgke
Adds PluralCrossplaneCluster, a new deployment-operator CRD and controller that registers Crossplane-managed Kubernetes clusters (EKS, GKE, AKS)
I mirrored the Crossplane EKS Cluster type locally instead of importing provider-aws, because that dependency pins k8s/controller-runtime versions that conflict with the deployment-operator’s module
Test Plan
Test environment: https://console.your-env.onplural.sh/
Checklist
Plural Flow: console