Context
HashiCorp Vault is used as the secret manager for the genmachine cluster. Its configuration (auth methods, secret engines, policies, roles) is currently managed manually or via ad-hoc scripts. This creates drift risk and makes the Vault setup non-reproducible.
The Crossplane Vault provider (or the community crossplane-contrib/provider-vault) allows managing Vault resources as Kubernetes CRDs, bringing Vault configuration fully into the GitOps workflow.
Goal
Replace manual Vault configuration with Crossplane-managed resources to:
- Declare Vault auth methods, secret engines, policies, and roles as YAML manifests in Git
- Apply Vault configuration changes via ArgoCD sync (same GitOps flow as everything else)
- Make the Vault setup auditable, reviewable in PRs, and reproducible from scratch
- Remove operational dependency on manual
vault CLI or Terraform
Proposed scope
Vault resources to manage via Crossplane
Tasks
References
Context
HashiCorp Vault is used as the secret manager for the
genmachinecluster. Its configuration (auth methods, secret engines, policies, roles) is currently managed manually or via ad-hoc scripts. This creates drift risk and makes the Vault setup non-reproducible.The Crossplane Vault provider (or the community
crossplane-contrib/provider-vault) allows managing Vault resources as Kubernetes CRDs, bringing Vault configuration fully into the GitOps workflow.Goal
Replace manual Vault configuration with Crossplane-managed resources to:
vaultCLI or TerraformProposed scope
Vault resources to manage via Crossplane
apps/,github/, etc.)ClusterSecretStore)fredcorp-cais Vault-backed)Tasks
ProviderCRD (add togitops/manifests/crossplane/)ProviderConfigwith Vault address and token (via ExternalSecret)docs/References