-
Notifications
You must be signed in to change notification settings - Fork 5.7k
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
Manifest post processors #7623
Comments
I do like this proposal. I feel manifest post-processors could be used for a variety of great use-cases. This could also help image updater to provide a mechanism to update images in other types of applications than Kustomize or Helm. If you submit an enhancement proposal for this, feel free to add me as sponsor :) |
I think it is implied but just to be clear, the changes also would be part of the logic to compare deployed manifest with Git Repo so that mutations are made before comparison. Also the API/UI would show The Git Repo, what is deployed and the changes made due to the mutations. |
Not sure I like this idea... It seems like we're straying into the business of config management but also validation/mutating webhooks, and will probably do a worse job of it. The Secrets use case seems difficult to achieve in a multi-tenant way. What would post processors look like? Scripts that accept STDIN? patches? Keep in mind Helm and Kustomize already have their post-processors, so we would be adding our own flavor of it.
|
I consider mutating web hooks being part of configuration management, and changes made by them should indicate the desired state. There are some examples of our use cases for using them here:
|
Just to add my input here : In my opinion secrets injection is the big thing here. Both the methods I would like to use require "faking"
Whilst I appreciate not wanting to stray into mutating webhooks, but mutating webhooks do not solve the problem of third-party charts which need a secret in the values. My use case : That usecase does not work for a mutating webhook unless I write a brand new mutating webhook for every application I find on the internet I want to test in a cluster. |
Alternatively, we could create an interface for driving those capabilities that is compatible with the existing Helm/Kustomize first-class approaches (unlike using plugins today). |
For the use-cases I have in mind, and most of the others I've noticed above, the helm post-rendering is fully appropriate. The problems using it with ArgoCD as is are basically:
Yaml on STDIN, modified yaml on STDOUT. Just pipe the output of the primary generator through it (which is exactly what helm does).
Project scope. It'd be just combining multiple tools so they can be installed separately. Admission webhooks sound better for the global scope.
The post-processor should get the environment variables just like the primary generator. Basically instead of writing a new config management plugin that does helm-expand | kbld | vault | … one would specify helm as plugin and kbld, vault etc. as post-processors and deploy as separate side-cars so that images published by upstream can be used as they are. |
Any news? |
Summary
Support post-processors that modify manifests generated by argocd-repo-server.
Motivation
Postprocessors might solve the following use-cases:
Injecting secrets. The https://github.com/IBM/argocd-vault-plugin/ implements secret injection. Currently, the project has to be used as a config management plugin which has a disadvantage: user no longer benefits from Helm/Kustomize first-class approach.
Injecting mandatory label/annotations; sidecar injection etc.
Linting: post-processors might fail manifest generation and produce the error
Proposal
TBD
The text was updated successfully, but these errors were encountered: