Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: endorse secrets operators, caution against plugins (#21629) #21631

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

crenshaw-dev
Copy link
Member

@crenshaw-dev crenshaw-dev commented Jan 22, 2025

Closes #21629

@crenshaw-dev crenshaw-dev requested review from a team as code owners January 22, 2025 16:59
Copy link

bunnyshell bot commented Jan 22, 2025

🔴 Preview Environment stopped on Bunnyshell

See: Environment Details | Pipeline Logs

Available commands (reply to this comment):

  • 🔵 /bns:start to start the environment
  • 🚀 /bns:deploy to redeploy the environment
  • /bns:delete to remove the environment

@crenshaw-dev crenshaw-dev marked this pull request as draft January 22, 2025 16:59
Copy link
Contributor

@todaywasawesome todaywasawesome left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is solid as is. I suggested maybe adding the secret csi driver. We could potentially work in this talk about different approaches to managing secrets https://www.youtube.com/watch?v=FVaaqP7_AJg&t=1s - but it doesn't directly address the issues with hydration secrets management so I don't mind skipping. I actually think we need an updated talk on this.

Comment on lines 10 to 12
In this approach, secrets are populated on the destination cluster, and Argo CD does not need to directly manage them.
[Sealed Secrets](https://github.com/bitnami-labs/sealed-secrets) and [External Secrets Operator](https://github.com/external-secrets/external-secrets)
are examples of this style of secret management.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sure we could list lost but I think just listing two examples is great. I might add the csi-driver because it's between these three you represent all the major styles of secrets management. https://github.com/kubernetes-sigs/secrets-store-csi-driver/tree/v1.4.0

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added CSI! I thought about adding a link to Andrew's talk, but left it out since he explicitly endorses plugin-style secrets management. Agreed that we need an updated talk.

Signed-off-by: Michael Crenshaw <[email protected]>
@leoluz leoluz self-requested a review January 23, 2025 16:59
Copy link
Collaborator

@leoluz leoluz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tks for the doc. My comments are non blockers but suggestions.

@@ -1,29 +1,43 @@
# Secret Management

Argo CD is un-opinionated about how secrets are managed. There are many ways to do it, and there's no one-size-fits-all solution.
There are two general ways to populate secrets when doing GitOps: on the destination cluster, or in Argo CD during
manifest hydration. We strongly recommend the former, as it is more secure and provides a better user experience.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we need to make hydration an official feature before recommending it? Unless you don't mean the new Argo CD hydration feature...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this case I mean hydration in general, not the source hydrator feature

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we use the term "manifest generation" to avoid this confusion?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense. My hope is that over time the industry will adopt "hydration" as the generic term for manifest transformation. But for now "generation" is probably clearer in this context.

Comment on lines -10 to -22
* [Bitnami Sealed Secrets](https://github.com/bitnami-labs/sealed-secrets)
* [External Secrets Operator](https://github.com/external-secrets/external-secrets)
* [Hashicorp Vault](https://www.vaultproject.io)
* [Bank-Vaults](https://bank-vaults.dev/)
* [Helm Secrets](https://github.com/jkroepke/helm-secrets)
* [Kustomize secret generator plugins](https://github.com/kubernetes-sigs/kustomize/blob/fd7a353df6cece4629b8e8ad56b71e30636f38fc/examples/kvSourceGoPlugin.md#secret-values-from-anywhere)
* [aws-secret-operator](https://github.com/mumoshu/aws-secret-operator)
* [KSOPS](https://github.com/viaduct-ai/kustomize-sops#argo-cd-integration)
* [argocd-vault-plugin](https://github.com/argoproj-labs/argocd-vault-plugin)
* [argocd-vault-replacer](https://github.com/crumbhole/argocd-vault-replacer)
* [Kubernetes Secrets Store CSI Driver](https://github.com/kubernetes-sigs/secrets-store-csi-driver)
* [Vals-Operator](https://github.com/digitalis-io/vals-operator)
* [argocd-secret-replacer](https://github.com/mmalyska/argocd-secret-replacer)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe put the list at the bottom of the file so ppl can refer to it if they really really want to use a different approach?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that if there are options here that we're generally supportive of (like maybe the aws-secret-operator) it could make sense to include links. But otoh this list is already quite out of date. Maybe it's better to speak generally and then allow people to find their own solutions that match our general description.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense. Maybe a smaller list just with the big players then? aws-secret-operator, hashicorp vault are 2 names that I think we should keep as I believe that they provide similar functionality compared to sealed-secrets for example. Isn't it the case?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Have an opinion on Secrets
3 participants