How to Deploy a Hotfix Version for a Particular Spinnaker service


Introduction

The Spinnaker environment is up and running, but there is a need to deploy and install a customized (hotfix) service rather than upgrading the entire Spinnaker platform.

This article advises about how to deploy a hotfix to particular Spinnaker services.

Prerequisites

Please plan ahead for any additional affects a hotfix may cause.  Please also note that the hotfix may not be completely be tested with compatibility for all Spinnaker versions, unlike a versioned release, which has gone through testing.

Instructions

In order to install the hotfix, the service image will need to be swapped out with the hotfix in service-settings.

In Halyard

For example, when using Halyard and in this example, a Dinghy hotfix needs to be installed, an entry will need to be made in the following service setting path (if the file doesn't already exist, please create it):  .hal/<defaultProfile>/service-settings/dinghy.yml

artifactId: <image>

The <image> input parameter contains the docker image path with its tag name. 
For example:

artifactId: armory/dinghy:2.21.4

After that, run the hal deploy apply command to apply the changes.

For other particular services, please add different <service_name>.yml files in the same service settings directory (.hal/<defaultProfile>/service-settings/) and follow the same approach.
e.g. clouddriver.yml, kayenta.yml, etc.

Once the affected pods boot up successfully, please verify it by using the kubectl describe pods <-pod-name> command to check if the container within this pod has the correct hotfix image version.

In Operator

In a similar scenario, when using Operator, please locate the <service-settings> section in SpinnakerService.yml file, and add the artifactId YAML content of the corresponding service's service-setting, then apply the changes.

As an example, if making the change to Dinghy to match version 2.21.4 of the service, in spec.spinnakerConfig.service-settings

spec:
  spinnakerConfig:
    service-settings:
      clouddriver: {}
      deck: {}
      dinghy:
        artifactId: armory/dinghy:2.21.4
      echo: {}
      fiat: {}
      front50: {}
      gate: {}
      igor: {}
      kayenta: {}
      orca: {}
      rosco: {}


Once the affected pods boot up successfully, please verify it by using the kubectl describe pods <-pod-name> command to check if the container within this pod has the correct hotfix image version.

As Tested On Version

2.20.x, 2.21.x, 2.22.x