Skip to content
This repository has been archived by the owner on Feb 22, 2022. It is now read-only.

cert-manager: fast-forward to upstream 36289cf0 #5919

Merged
merged 1 commit into from
Jun 13, 2018

Conversation

@k8s-ci-robot k8s-ci-robot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/S Denotes a PR that changes 10-29 lines, ignoring generated files. approved Indicates a PR has been approved by an approver from all required OWNERS files. labels Jun 5, 2018
@@ -1,5 +1,5 @@
name: cert-manager
version: v0.3.1
version: v0.3.2
Copy link
Contributor

Choose a reason for hiding this comment

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

As this change adds a feature, I'd recommend bumping the minor version.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Has there been some consensus on what is recommended here? In the past this has not been a requirement, and the majority of charts have used the minor version to indicate breaking changes.

For what it's worth, I am inclined to prefer to close this PR and revert the change in our release-0.3 branch rather than bump the minor version here.

I have previously asked about versioning applications vs charts in the past to get clarification: helm/helm#3555

We specifically choose to keep the minor version of our chart aligned with the minor application version (although patch version numbers can, and do drift apart).

This is because we may add a new flag to a new release of cert-manager, and by adding support for it into the Helm chart would break compatibility with older releases of cert-manager, as they do not support the flag. This is a pretty fundamental question around Helm chart versioning in general IMO, and one we don't have a good story for.

I know it isn't recommended to try and align appVersion with chart version, but this way, a user knows they can use Helm chart version 0.3.x with any of cert-manager 0.3.x, and chart version 0.4.x with cert-manager 0.4.x. Compatibility is defined within the minor version.

Keen to hear thoughts on how this should best be handled. I think allowing users to be able to easily understand the compatibility boundaries of a chart is very important, so as I say, I'd sooner just not add any new features to this chart until we release cert-manager v0.4, than lose this property just now (but I know a lot of users would like to be able to use new chart features before the new release of cert-manager is ready, hence why we cherry pick backwards compatible feature additions into minor releases of the Helm chart! 😄)

/cc @unguiculus

Copy link
Contributor

Choose a reason for hiding this comment

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

I believe we follow the guidelines from https://semver.org/, which indicate: Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards compatible functionality is introduced to the public API. (https://semver.org/#spec-item-7)

I understand your reasoning regarding app version, but I think that a specific version of a chart is meant for a specific version of an application, as noted with the appVersion key in the Chart.yaml. As far as I know, most other charts do not tie their Chart version to specific app version ranges, but if this is important to you, it may make more sense to simply have a table in the README instead, as that's the first documentation a user gets to see. I personally appreciate the table provided by the cluster-autoscaler (https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler#releases).

Copy link
Contributor

Choose a reason for hiding this comment

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

(That said, we don't seem to follow it to the letter, as most Charts are still at major version 0. But still, I think it's a good guideline to keep in mind.)

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I believe we follow the guidelines from https://semver.org/, which indicate: Minor version Y (x.Y.z | x > 0) MUST be incremented if new, backwards compatible functionality is introduced to the public API. (https://semver.org/#spec-item-7)

Agreed - however historically next to no charts in this repo have been following semver, so I wonder if there has been an actual policy change for k/charts or not 😄

I understand your reasoning regarding app version, but I think that a specific version of a chart is meant for a specific version of an application

This would be nice, although would imply it is not possible to use e.g. (for ex) the new 'taints' feature added to the Helm chart, with an older release of the application (which is not a reflection of reality).

I personally appreciate the table provided by the cluster-autoscaler

The table provided in the cluster-autoscaler chart is specifically mapping Kubernetes version->Cluster Autoscaler version, which is a subtly different issue (and one we also experience with cert-manager, although we are far more lax on our versioning against kubernetes and are able to support many K8s releases with a single cert-manager release).

The issue here is around versioning the chart against the application. Maintaining a table as such seems pretty tedious and less helpful for users, as they will always have to refer to the README whenever they want to install cert-manager. This issue would be alleviated if we had some way to helm install a specific appVersion (instead of chart version, as proposed in helm/helm#3555), however it is still not ideal.

Thanks for engaging in this discussion 😄 it's a wider issue with Helm and chart versioning imo, and it's one I'd like to come to a definitive conclusion on the best practice for, especially taking into account UX for end-users, who may not understand the intricacies/differences between an application version and a chart version (and instead view the two as one and the same).

Copy link
Contributor

@timstoop timstoop Jun 6, 2018

Choose a reason for hiding this comment

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

I've been pushing for following the semver guidelines in the last months without much push back, so I suspect it's more or less accepted ;-) That said, having a proper guideline about it would indeed be best, one way or the other.

Also, I think that appVersion is actually a string, so you might get away with simply having a range of versions in there?

Regarding my example, yes, it's subtly different, but the same solution could be used for this problem as well. I don't think updating the table in the README is that much more tedious than updating any other part of the documentation after a change.

I'm not necessarily against it, mind you, I just prefer to follow a clear and defined standard in this regard. I'm hoping that the helm client will get support for warnings based on semver versions, so a user can make a more informed decision with regards to updates. But I have no idea if such a mechanism is even considered at this time.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I've been pushing for following the semver guidelines in the last months without much push back, so I suspect it's more or less accepted ;-)

Great to hear there is some action being taken here, but I think this needs more careful consideration in order to handle the cases I've raised in this thread before it is made ubiquitous.

There needs to be some mechanism in Helm to handle version skew/compatibility, as the way an application is deployed is intrinsically linked to its version, and it is not acceptable to simply say that we should only maintain/support the Helm chart for the HEAD of the repo.

I think have a proper guideline here isn't just best, but is really essential if we're to make these kinds of decisions. Not addressing it simply shifts the burden onto end-users, who are often some of the least well equipped as they are often both new to Helm, Kubernetes and cert-manager 😄

Regarding having the README maintain a compatibility matrix - this falls down when you start cherry picking changes into different releases, as there is no support for multiple release 'channels' or the like in Helm, and we may end out with 0.5.1 on the release-0.2 branch being different to 0.5.1 on the release-0.3 branch.

So far I've yet to find any reliable way to support a chart for both v0.2 of my app as well as v0.3, in a way that allows me to backport critical fixes for the v0.2 release whilst releasing new features for v0.3.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Hey, any updates here?

I'm happy to follow the upstream guidance, however I'd like to see that guidance make its way to the 'helm best practices' website beforehand, as I am reluctant to break/change our current versioning pattern unless it is absolutely decided on how versioning should be handled, as this will be an irreversible change which does not 'solve' any of the issues users have complained to me about regarding how we version our chart 😄.

Is there some other issue/thread where this is being discussed? As it stands, I cannot push any updates to our Helm chart until this issue is resolved 😄

@unguiculus
Copy link
Member

Merging it. Let's continue the discussion elsewhere.

@unguiculus
Copy link
Member

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm Indicates that a PR is ready to be merged. label Jun 13, 2018
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: munnerz, unguiculus

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot merged commit c0359f4 into helm:master Jun 13, 2018
jainishshah17 added a commit to jainishshah17/charts that referenced this pull request Jun 14, 2018
* art-ha-static-volumes: (60 commits)
  added support for static pv
  [stable/artifactory] adding support for edge node and replicator (helm#5649)
  [stable/grafana] Set the user and fs group for grafana (helm#5854)
  [stable/stolon] Fix issue with secret deletion during helm upgrade (helm#5903)
  cert-manager: fast-forward to upstream 36289cf0 (helm#5919)
  Split Jenkins readiness and liveness probe periods (helm#5704)
  Kafka release name check (helm#5770)
  Adding JFrog Distribution (helm#5631)
  Correct default zookeeper host to be compatible with zk charts (helm#5824)
  [stable/redis] add RBAC (helm#5971)
  [stable/wordpress] Set dependencies to latest version (helm#6074)
  [stable/rabbitmq] Release 1.1.6 (helm#6095)
  [stable/mariadb] Fix configurable parameters (helm#6092)
  [stable/keycloak] Add option to configure sidecars and misc improvements (helm#6090)
  [stable/kubewatch] - Use maintained bitnami image for kubewatch (helm#5871)
  [stable/ghost] Release 4.0.1 (helm#6085)
  update PROCESSES.md to clarify promotion process (helm#6084)
  [incubator/drone] Move drone from incubator to stable (helm#5780)
  fix for helm#6039 (helm#6042)
  [stable/sonatype-nexus] Update image to 3.12.1 (helm#6076)
  ...
or1can pushed a commit to or1can/charts that referenced this pull request Jul 10, 2018
voron pushed a commit to dysnix/helm-charts that referenced this pull request Sep 5, 2018
* Automated cherry pick of helm#522 (cert-manager/cert-manager#615)

Signed-off-by: voron <av@arilot.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm Indicates that a PR is ready to be merged. size/S Denotes a PR that changes 10-29 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants