Upgrading
Upgrade ncm-issuer in place with helm upgrade. Helm updates the controller, its RBAC and the CRDs.
Existing Issuer, ClusterIssuer and Certificate resources and their Secrets are kept.
Warning
Do not uninstall the chart or delete the ncm-issuer CRDs to upgrade. The CRDs are part of the
chart, so removing them deletes every Issuer and ClusterIssuer in the cluster. Certificates
then fail to renew until the issuers are created again.
Before you upgrade
Read the release notes of every version between the installed one and the target and check the version-specific notes below. The installed chart version is shown by:
Save the values passed at installation or the last upgrade and compare them with the values.yaml of the new chart:
helm get values shows only values passed with -f or --set. If you installed from a release archive
and edited the chart's own values.yaml, compare that file with the values.yaml of the original archive
and copy the changed settings into my-values.yaml. Do this before you extract the new archive over the old
one. helm get values ncm-issuer -n ncm-issuer --all shows every value the running release uses.
If my-values.yaml sets image.tag or sidecar.tag, change them to the target version or remove them.
Otherwise the old images keep running.
Running the upgrade
From the public Helm chart repository, with the chart version of the target release (for example
1.3.0-chart):
helm repo update
helm upgrade ncm-issuer nokia/ncm-issuer --version <chart-version> --namespace ncm-issuer -f my-values.yaml
From a release archive (offline installation), extract the archive in an empty directory and push the
controller image to your registry. The archive holds only the controller image, built for linux/amd64. If
you use the troubleshooting sidecar, also download ncm-issuer-utils-<version>.tgz from the release and push
it the same way.
tar xzf ncm-issuer-<version>-<version>.tar.gz
docker load -i ncm-issuer/images/ncm-issuer-<version>.tgz
docker tag ghcr.io/nokia-steward/ncm-issuer:<version> <registry>/ncm-issuer:<version>
docker push <registry>/ncm-issuer:<version>
Set image.repository and image.tag (and sidecar.repository and sidecar.tag) in my-values.yaml to
the pushed images. If the file already has an image or sidecar block, change it instead of adding a
second one, because Helm uses only the last one. Then upgrade from the extracted chart:
Note
Pass your values with -f or, on Helm 3.14 or later, with --reset-then-reuse-values. Do not
use --reuse-values. It keeps the values of the installed chart, including its image tags. When
the installed version is 1.2.0 or later, the upgrade succeeds but the old images keep running.
From older versions the new chart fails to render with an error such as
nil pointer evaluating interface {}.httpProxy. Copying an old values.yaml over the one that
ships with the new chart has the same effect, so edit the new file instead.
Check that the new controller is running and that every issuer reports READY True:
helm list -n ncm-issuer
kubectl -n ncm-issuer get pods
kubectl get ncmclusterissuers
kubectl get ncmissuers -A
For an issuer with READY False the REASON and MESSAGE columns say why. See also
Troubleshooting.
To return to the previous release, run helm rollback ncm-issuer --namespace ncm-issuer. Issuers
and certificates are kept.
Version-specific notes
Check every entry for the versions you upgrade across.
1.2.0
-
The default name of the cert-manager approver ClusterRole lost a trailing
v(...nokia-comv).helm upgradekeeps the name used by the existing ClusterRoleBinding, because itsroleRefcannot change. Tools that render the chart withhelm template, such as Argo CD, cannot look it up and fail withcannot change roleRef(roleRef: Invalid value: ...: field is immutableon Kubernetes 1.37). For them, setcertManagerRbac.roleto the existing name:
1.2.1
- The chart's
securityContextnow applies only to the controller container. Pod-level settings moved topodSecurityContextand the troubleshooting sidecar has its ownsidecar.securityContext. Move existing overrides accordingly. - The NCM health check now sends
GET /v1/casand counts only2xxresponses as healthy. The issuer'sReadycondition depends on it. A wrong URL or wrong credentials that earlier versions reported asReady=Truenow giveReady=False. - Remove any path after the host and port from
mainAPI. Requests to the main API ignore it, but the health check calls<mainAPI>/v1/casand fails if NCM does not answer there. - The default images moved from
docker.io/misiektojatoghcr.io/nokia. - Kubernetes 1.26 or later is required. Helm refuses to install or upgrade the chart on older clusters.
1.2.2
- HTTPS connections to NCM verify the server certificate by default. If the NCM certificate is
signed by a private CA, add that CA as
cacertto the Secret referenced bytlsRef(see TLS without client authentication). Otherwise the issuer reportsReady=Falsewithx509: certificate signed by unknown authority. The certificate must also list the host name or IP address used in the URL as a subject alternative name. Certificates that carry the name only in the subject CN are rejected. - A namespaced
Issuerreads the Secrets referenced byauthRefandtlsRefonly from its own namespace and ignores thenamespacefield. Copy Secrets kept elsewhere into the Issuer's namespace, otherwise it reportsReady=Falsewith reasonSecretNotFound.ClusterIssueris not affected.
1.3.0
- The chart repository and the images moved to the
nokia-stewardorganization. Repoint the Helm repository (see From the public Helm chart repository) Change anyimage.repositoryorsidecar.repositoryoverride that points toghcr.io/nokiaordocker.io/misiektojatoghcr.io/nokia-steward/ncm-issuerandghcr.io/nokia-steward/ncm-issuer-utils. Update registry mirrors that copy from the old locations as well.