Skip to main content

Upgrading Ignition

The Ignition Helm Chart routinely updates its appVersion to match the latest version of Ignition. This means that if you upgrade the chart version (via helm repo update) and upgrade an existing release of the chart, you may trigger an upgrade.

How Upgrades are applied​

The Ignition StatefulSet has readiness probes that monitor the /system/gwinfo endpoint to validate that the gateway is in a RUNNING state and able to receive traffic. When configured as a redundant pair, the readiness probe is further augmented with additional checks related to the redundancy status.

When the StatefulSet is modified, the pod may be recreated. This will result in a shutdown of the pod and the running gateway and a creation of a new pod and startup of the new gateway.

tip

Only forward upgrades, i.e. 8.3.1 to 8.3.2, are supported.

If the Ignition Helm Chart has been applied with a redundancy configuration, the default StatefulSet update strategy is applied. Readiness probes determine when pods will be recreated in the rollout. You can add an extra amount of buffer delay by setting a minimumReadySeconds value higher than the default of 0 (i.e. proceed immediately upon pod readiness).

# testing.yaml
gateway:
supplementalStatefulSetSpec:
minimumReadySeconds: 30

If you need manual control of the upgrade, see the section on manual control of upgrades.

Pinning to a specific Ignition version​

You can use the image value to pin to a specific version of Ignition. For example, to pin to Ignition 8.3.0:

# testing.yaml
gateway:
image:
tag: "8.3.0"

With the above, the appVersion associated with the chart will be overridden and you'll always draw that specific tag when the pod is created.

Manual control of upgrades​

There may be times when the default update strategy of RollingUpdate may not be desirable. In these situations, you can patch the StatefulSet to use OnDelete strategy and exert manual control on pod deletion and upgrade. You can leverage the Force Failover option within the Ignition web UI to stage the system accordingly.

If you wish to code this strategy into your Helm values, use the following:

# testing.yaml
gateway:
updateStrategy:
type: OnDelete

Alternatively, if you just wish to temporarily patch the "ignition-gateway" StatefulSet and/or revert upon completion:

# Patch the ignition-gateway StatefulSet to use OnDelete
kubectl patch sts ignition-gateway \
--type='merge' \
-p '{"spec": {"updateStrategy": {"rollingUpdate": null, "type": "OnDelete"}}}'
# Patch back to RollingUpdate
kubectl patch sts ignition-gateway \
--type='merge' \
-p '{"spec": {"updateStrategy": {"rollingUpdate": {"partition": 0}, "type": "RollingUpdate"}}}'