Skip to content

Conversation

@jacobtomlinson
Copy link
Member

@jacobtomlinson jacobtomlinson commented Oct 28, 2022

To have a good installation experience we need to ensure the version of the operator manifests being installed matches the version of the controller docker image. We currently support two installation methods; static manifests and helm. When we package the helm chart we bake in the docker image tag so the chart version is tightly pinned to the container version.

However, the static manifests use :latest which doesn't get updated at all since we switched to using chartpress to package our container images too (xref #508). The Operator hasn't been around long but we are already seeing users being bitten by the "latest is not a version" anti-pattern.

To resolve this I've decided to remove the static manifests altogether as getting the pinning working with pre-commit hooks just seems like a minefield and installing YAML files from a main branch of a repo on GitHub doesn't seem to be a great default practice. Instead, I've made helm the primary install method but also documented using helm template to export the static manifests from the latest release for those that prefer not to use helm.

Install with Helm

$ helm install --repo https://helm.dask.org --create-namespace -n dask-operator --generate-name dask-kubernetes-operator

Install with Kubectl

$ helm template --include-crds --repo https://helm.dask.org release dask-kubernetes-operator | kubectl apply -f -

This means everyone needs to have helm installed, but that seems like a fine compromise and should improve user experience and reduce maintainer overhead.

Closes #508.
Supersedes #586.

@jacobtomlinson
Copy link
Member Author

@consideRatio I'd love your feedback on this approach

@consideRatio
Copy link

I'm a very big +1 on centralizing on a single install method (not distinguishing helm temlate from helm install)! I think it is a win-win for maintainers and users.

Also, super plus on not referencing the gitrepo local helm chart when using helm template, but instead referencing the packaged helm chart in the helm chart repo - as already done in your example above. This is because the packaged helm chart should include values.schema.json and updated values.yaml, while updated values / schema are not available in the github repo without pre-processing.

@jacobtomlinson jacobtomlinson merged commit 3e39fbd into dask:main Oct 28, 2022
@jacobtomlinson jacobtomlinson deleted the install-with-helm-only branch October 28, 2022 10:23
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.

Operator docker image didn't get latest tag on release

2 participants