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

wip: Helm Charts for the operator #483

Draft
wants to merge 3 commits into
base: main
Choose a base branch
from
Draft

Conversation

hessjcg
Copy link
Collaborator

@hessjcg hessjcg commented Oct 30, 2023

This is a work-in-progress draft of the helm chart for the operator.

Here are the configurable values implemented so far:

  • Operator Version (default latest. This controls the default proxy version.)
  • Number of replicas for the operator deployment
  • installCRDs yes/no (Using Method 2 as a separate helm chart)
  • Operator pod configuration:
    • resource requirements
    • labels & annotations
    • affinity
  • Operator Behavior
    • namespace override
    • namespaces monitored by the webhook
  • Support
    • Publish the helm chart
    • Update help documentation
    • Provide examples

A couple of open design questions:

  • Is it necessary to have separate helm charts for the CRD and the operator deployment? It seems like we need this because the CRD includes configuration related to the operator's webhook, which depends on the operator namespace. Is there a better way to implement this?
  • The build process for the helm chart is a bit convoluted. I'd like to simplify it. Here are the steps as implemented today:
    • run controller-tool to generate the CRD from go
    • run kustomize to generate a single installer yaml with all the resources included.
    • run a custom tool to extract resources into separate helm chart files, and put helm templates in the place of the hardcoded namespace and name.
    • hand-code the operator deployment helm chart.
    • run a custom tool to set the helm chart version and operator versions in Chart.yaml.

Fixes #343

@hessjcg hessjcg added the do not merge Indicates a pull request not ready for merge, due to either quality or timing. label Oct 30, 2023
@CoryHagerman
Copy link
Contributor

If you do want to use the CRD in the same chart instead of 2 separate ones you can put it in the crds/ directory instead of templates/

https://helm.sh/docs/chart_best_practices/custom_resource_definitions/

@norman-zon
Copy link

@hessjcg are you still interested in putting this together?

@asafhm
Copy link

asafhm commented Aug 15, 2024

Heavily needed feature!
I agree with @CoryHagerman about bringing the CRDs into the main chart, but why not placing them in a dir like templates/crds/ with a boolean flag that helps applying them or not (e.g. crds.install=true).
Correct me if I'm wrong, but won't that be better for CRD changes scenarios? As helm still can't upgrade CRDs that reside outside the templates dir (like, crds/)

You can check the ArgoCD official helm chart as an example of how they create their CRDs under templates/crds/:
https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
do not merge Indicates a pull request not ready for merge, due to either quality or timing.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Feature Request: Helm Chart
4 participants