v2.27.3 Armory Continuous Deployment Release (Spinnaker™ v1.27.0)

Release notes for Armory Continuous Deployment v2.27.3

2022/03/11 Release Notes

Note: If you’re experiencing production issues after upgrading Spinnaker, rollback to a previous working version and please report issues to http://go.armory.io/support.

Required Operator version

To install, upgrade, or configure Armory 2.27.3, use one of the following tools:

  • Armory Operator 1.6.0 or later

Security

Armory scans the codebase as we develop and release software. Contact your Armory account representative for information about CVE scans for this release.

Breaking changes

Breaking changes are kept in this list for 3 minor versions from when the change is introduced. For example, a breaking change introduced in 2.21.0 appears in the list up to and including the 2.24.x releases. It would not appear on 2.25.x release notes.

Pipelines-as-Code Slack notifications stop working

Impact

After upgrading to 2.27.x, your Pipelines-as-Code Slack notifications may stop working even though they were working previously.

Hotfix

See the Dinghy Slack Notifications not working KB article for the Hotfix.

Introduced in: Armory CD 2.27.0

Java 11.0.11+, TLS 1.1 communication failure

This is an issue between Java 11.0.11 and TLSv1.1. Only installations using TLSv1.1 will encounter communication failures between services when those services upgrade to Java 11.0.11+.

TLSv1.1 was deprecated in March of 2020 and reached end-of-life in March of 2021. You should no longer be using TLSv1.1 for secure communication.

Oracle released Java 11.0.11 in April of 2021. Java 11.0.11 dropped support for TLSv1.1. See the Java release notes for details.

Impact

Any services running under Java 11.0.11+ and using TLSv1.1 will encounter a communication failure. For example, you will see a communication failure between an Armory CD service running under Java 11.0.1 and MySQL 5.7 if the MySQL driver is using TLSv1.1.

The version of Java depends on the version used by the Docker container’s OS. Most Armory CD services are using Alpine 3.11 or 3.12, which does not use Java 11.0.11. However, Alpine 3.11 is end-of-life in November of 2021, and 3.12 is end-of-life in May of 2022. There is no guarantee that Java 11.0.11+ won’t be added to those container images by some other manner. You should modify your TLSv1.1 environment now so you don’t encounter communication failures.

Fix

Choose the option that best fits your environment.

  1. Disable TLSv1.1 and enable TLSv1.2 (preferred):

    See Knowledge Base articles Disabling TLS 1.1 in Spinnaker and Specifying the Protocols to be used and How to fix TLS error “Reason: extension (5) should not be presented in certificate_request”.

  2. Add a query parameter to the MySQL JDBC URIs:

    ?enabledTLSProtocols=TLSv1.2
    

    Note that this only fixes communication between Armory CD and MySQL.

    See MySQL communication failure when using TSL1.1 for more information.

Kubernetes version for deployment targets

Armory CD 2.26 no longer supports Kubernetes deployment targets prior to version 1.16.

Impact

Any Kubernetes deployment target must run version 1.16 or higher. If you try to deploy to clusters older than 1.16, you may see errors like the following in the UI:

The UI shows an Unexpected Task Failure error.

Additionally, errors like the following appear in the Clouddriver logs:

2021-05-04 21:17:16.032 WARN 1 --- [0.0-7002-exec-9] c.n.s.c.k.c.ManifestController : Failed to read manifest

com.netflix.spinnaker.clouddriver.kubernetes.op.handler.UnsupportedVersionException: No replicaSet is supported at api version extensions/v1beta1
at com.netflix.spinnaker.clouddriver.kubernetes.op.handler.KubernetesReplicaSetHandler.status(KubernetesReplicaSetHandler.java:98) ~[clouddriver-kubernetes.jar:na]
2021-05-05 14:29:09.653 WARN 1 --- [utionAction-538] c.n.s.c.k.c.a.KubernetesCachingAgent : kubernetes/KubernetesCoreCachingAgent[1/1]: Failure adding relationships for service

com.netflix.spinnaker.clouddriver.kubernetes.op.handler.UnsupportedVersionException: No replicaSet is supported at api version extensions/v1beta1
at com.netflix.spinnaker.clouddriver.kubernetes.op.handler.KubernetesReplicaSetHandler.getPodTemplateLabels(KubernetesReplicaSetHandler.java:167)

Workaround

If you are affected by this change, perform the following tasks to update your applications:

  • Upgrade the Kubernetes clusters that you are trying to deploy to. They must run version 1.16 or higher.
  • If you have manifest files using deprecated APIs, update them to use newer APIs. For more information on which APIs are deprecated in each Kubernetes version and how to migrate, see the Kubernetes Deprecated API Migration Guide.

Introduced in: Armory CD 2.26.0

Kubernetes infrastructure in the UI

Starting in 2.26, the UI has been updated to more closely follow immutable infrastructure principles.

When you navigate to the Infrastructure tab in the UI for an application that has the Kubernetes provider configured, actions that change the Kubernetes infrastructure (such as Create or Delete), including Clusters, Load Balancers, and Firewalls, are no longer available.

Impact

Users do not see these actions in the UI by default. You must configure the UI to display them if you want your users to be able to perform them through the UI.

Workaround

Whether or not these actions are available in the UI is controlled by the following property in settings-local.yml:

window.spinnakerSettings.kubernetesAdHocInfraWritesEnabled = <boolean>;

This setting does not completely prevent users from modifying Kubernetes infrastructure through Armory CD. To do so, you must use the Policy Engine and write policies using the spinnaker.http.authz package.

If you use the Policy Engine to control which user roles can see the UI actions and be able to use them, you must set this property to true. Setting the value to false hides the buttons for all users regardless of whether you grant specific users access to the buttons through the Policy Engine.

This property affects Kubernetes infrastructure only. The behavior is slightly different depending on if the application has only the Kubernetes provider configured or Kubernetes and other providers, such as AWS.

If the application only has the Kubernetes provider configured, the following applies:

  • When set to true, this property causes the UI to function as it did in previous releases. This allows people to manually create and delete Kubernetes infrastructure from the UI.
  • When set to false, this property causes the actions to be unavailable to users. This prevents users from manually creating and deleting Kubernetes infrastructure from the UI. The users can still view the infrastructure but cannot make changes through the UI.

If the application includes Kubernetes and other providers, the following applies:

  • When set to true, this property causes the UI to function as it did in previous releases. This allows people to manually create and delete Kubernetes infrastructure from the UI. Users can continue to select whether they want to create Kubernetes or other infrastructure in the UI.
  • When set to false, this property causes Kubernetes to be unavailable as an option when trying to modify infrastructure from the UI. Users can still make changes to infrastructure for the application from cloud providers, such as AWS, but not Kubernetes.

Introduced in: Armory CD 2.26.0

Halyard deprecation

Halyard is no longer supported for installing Armory Continuous Deployment 2.27.0 and later. Use the Operator. For more information, see Halyard Deprecation.

Plugin compatibility

Due to changes in the underlying services, older versions of some plugins may not work with Armory Continuous Deployment 2.27.x or later.

The following table lists the plugins and their required minimum version:

PluginVersion
Armory Agent for Kubernetes Clouddriver Plugin0.10.0
App Name0.2.0
AWS Lambda1.0.9
Evaluate Artifacts0.1.1
External Accounts0.2.0
Observability Plugin1.3.1
Policy Engine0.2.1-rc

Known issues

Deck minimize navbar button

The Deck minimize navbar button doesn’t work without refreshing the screen.

Affected versions: 2.27.x and later

Workaround:

Manually refresh your browser window.

Bake failures

The Packer version included with Rosco disregards package overrides that use the -var-file= option. This may cause bakes to fail.

Affected versions: 2.22.2 and later

SpEL expressions and artifact binding

There is an issue where it appears that SpEL expressions are not being evaluated properly in artifact declarations (such as container images) for events such as the Deploy Manifest stage. What is actually happening is that an artifact binding is overriding the image value.

Workaround:

2.27.x or later: Disable artifact binding by adding the following parameter to the stage JSON: enableArtifactBinding: false.

2.26.x or later: Change the artifact binding behavior in spec.spinnakerConfig.profiles.clouddriver (Operator) or clouddriver-local.yml (Halyard) to the following, which causes artifacts to only bind the version when the tag is missing:

kubernetes:
  artifact-binding:
    docker-image: match-name-only

This setting only binds the version when the tag is missing, such as image: nginx without a version number.

Affected versions: 2.26.x and later

Pipelines-as-Code GitHub comments

There is a known issue where Pipelines-as-Code can generate hundreds of comments in a GitHub Pull Request (PR) when updates are made, such as when a module that is used by multiple dinghyfiles gets changed. These comments may prevent the GitHub UI from loading or related API calls may lead to rate limiting.

Affected versions: 2.26.x and later

Workaround:

You can either manually resolve the comments so that you can merge any PRs or turn the notifications that Pipelines-as-Code sends to GitHub.

For information about about how to disable this functionality, see GitHub Notifications.

Secrets do not work with Spring Cloud Config

If you enable Spring Cloud Config all the properties (e.g. Docker) using Secrets are not resolved when Spring Cloud tries to refresh.

Affected versions:

  • 2.26.x and later

Known Affected providers in Clouddriver:

  • Kubernetes
  • Cloudfoundry
  • Docker

Workaround:

Do not use secrets for properties that are annotated with @RefreshScope.

Highlighted updates

Cloud Foundry

  • Fixed an issue where Fiat crashed due to invalid Cloud Foundry accounts.
  • Performance optimization to reduce unnecessary api calls to Cloud Foundry during caching cycles.

Show Added to Terraform Integration Stage

There is a new Terraform action available as part of the Terraform Integration stage. This action is the equivalent of running the Terraform show command with Terraform. The JSON output from your planfile can be used in subsequent stages.

To use the stage, select Terraform for the stage type and Show as the action in the Stage Configuration UI. Note that the Show stage depends on your Plan stage. For more information, see Show Stage section in the Terraform Integration docs.

Detailed updates

Bill Of Materials (BOM)

Here’s the BOM for this version.

Expand
artifactSources:
  dockerRegistry: docker.io/armory
dependencies:
  redis:
    commit: null
    version: 2:2.8.4-2
services:
  clouddriver:
    commit: 5eb6c8598e22a90ca6eb8c5d7dcb5daddeade04f
    version: 2.27.3
  deck:
    commit: ea911f8927180bb5223f3c6149005568111ad294
    version: 2.27.3
  dinghy:
    commit: ee2e7f8b9778741dae1a5571cb47ac6c76c51d81
    version: 2.27.3
  echo:
    commit: aa794fa58437bbaae6b3f7c32f4844e5da937c92
    version: 2.27.3
  fiat:
    commit: e285a77d97d73304e3a1f75fd67c736eac804a37
    version: 2.27.3
  front50:
    commit: e60edec818a2c0633c9e809b1cca66a03e640d9a
    version: 2.27.3
  gate:
    commit: f4f1b1c0511d7d20e948541eceb020112acc9f52
    version: 2.27.3
  igor:
    commit: 97986b3554e3501507989335e73618a832357f71
    version: 2.27.3
  kayenta:
    commit: 800b14c9162cc0f486f4e7f510f87ec8db9b5e98
    version: 2.27.3
  monitoring-daemon:
    commit: null
    version: 2.26.0
  monitoring-third-party:
    commit: null
    version: 2.26.0
  orca:
    commit: 4fe016e9539cfae5cf79b39888227afc11a5741b
    version: 2.27.3
  rosco:
    commit: 44f38498ade0864c5c8373f43560a984c2c91432
    version: 2.27.3
  terraformer:
    commit: 89dd4af83b669d6a12de41611ea0bdf57857dd73
    version: 2.27.3
timestamp: "2022-03-02 19:10:56"
version: 2.27.3

Armory

Armory Igor - 2.27.2…2.27.3

  • chore(build): Autobump armory-commons: 3.10.0 (#280)
  • chore(build): update mergify config (backport #283) (#284)
  • chore(cd): update base service version to igor:2022.01.19.07.32.50.release-1.27.x (#282)
  • chore(cd): update armory-commons version to 3.10.1 (#287)
  • chore(cd): update armory-commons version to 3.10.2 (#291)

Armory Gate - 2.27.2…2.27.3

  • chore(build): Autobump armory-commons: 3.10.0 (#363)
  • chore(cd): update base service version to gate:2022.01.19.07.39.09.release-1.27.x (#378)
  • chore(cd): update base service version to gate:2022.01.19.07.39.09.release-1.27.x (#370)
  • chore(cd): update base service version to gate:2022.01.19.07.39.09.release-1.27.x (#366)
  • chore(build): update mergify config (backport #373) (#374)
  • chore(cd): update base service version to gate:2022.02.03.20.15.21.release-1.27.x (#382)
  • chore(cd): update armory-commons version to 3.10.1 (#385)
  • chore(cd): update armory-commons version to 3.10.2 (#389)

Armory Orca - 2.27.2…2.27.3

  • [create-pull-request] automated change (#403)
  • chore(build): update mergify config (backport #408) (#409)
  • chore(cd): update base orca version to 2022.01.19.07.10.29.release-1.27.x (#405)
  • chore(cd): update base orca version to 2022.01.19.07.10.29.release-1.27.x (#407)
  • chore(gradle): upgrade gradle wrapper to 7.3.3 (#412)
  • chore(cd): update armory-commons version to 3.10.1 (#415)
  • chore(cd): update base orca version to 2022.02.11.18.48.53.release-1.27.x (#417)
  • chore(cd): update base orca version to 2022.02.14.23.53.57.release-1.27.x (#419)
  • chore(cd): update base orca version to 2022.02.15.22.24.23.release-1.27.x (#421)
  • chore(cd): update armory-commons version to 3.10.2 (#420)

Armory Kayenta - 2.27.2…2.27.3

  • chore(build): update mergify config (backport #297) (#298)
  • chore(cd): update armory-commons version to 3.10.1 (#301)
  • chore(cd): update base service version to kayenta:2022.02.16.00.31.30.release-1.27.x (#302)
  • chore(cd): update armory-commons version to 3.10.2 (#304)

Armory Rosco - 2.27.2…2.27.3

  • [create-pull-request] automated change (#338)
  • chore(cd): update armory-commons version to 3.10.1 (#348)
  • chore(cd): update base service version to rosco:2022.01.19.07.33.06.release-1.27.x (#346)
  • fix(tests): remove tests intended for Spinnaker Cloud (#314) (#351)
  • fix(build): remove redhat publishing (#301)
  • fix(test): increase timeout for AMI bake int test (#350) (#356)
  • chore(cd): update armory-commons version to 3.10.2 (#358)

Terraformer™ - 2.27.2…2.27.3

  • feat(terraform): Adds show option for terraform stage (#447) (#448)

Armory Deck - 2.27.2…2.27.3

  • feat(terraform): Adds show option for terraform stage (backport #1149) (#1150)
  • chore(cd): update base deck version to 2021.0.0-20211217214939.release-1.27.x (#1158)
  • chore(cd): update base deck version to 2022.0.0-20220119092715.release-1.27.x (#1163)
  • chore(cd): update base deck version to 2022.0.0-20220119092715.release-1.27.x (#1166)
  • chore(build): update mergify config (#1167)

Armory Clouddriver - 2.27.2…2.27.3

  • chore(cd): update base service version to clouddriver:2021.12.17.10.45.12.release-1.27.x (#513)
  • chore(cd): update base service version to clouddriver:2021.12.22.18.20.08.release-1.27.x (#518)
  • chore(build): Autobump armory-commons: 3.10.0 (#517)
  • chore(cd): update base service version to clouddriver:2022.01.19.07.03.15.release-1.27.x (#524)
  • chore(cd): update base service version to clouddriver:2022.01.19.07.33.22.release-1.27.x (#528)
  • chore(cd): update armory-commons version to 3.10.1 (#537)
  • chore(cd): update armory-commons version to 3.10.2 (#541)
  • chore(cd): update base service version to clouddriver:2022.02.22.16.52.45.release-1.27.x (#544)
  • chore(cd): update base service version to clouddriver:2022.02.24.19.52.46.release-1.27.x (#549)

Armory Echo - 2.27.2…2.27.3

  • chore(build): Autobump armory-commons: 3.10.0 (#400)
  • chore(cd): update base service version to echo:2022.01.19.07.51.20.release-1.27.x (#410)
  • chore(cd): update base service version to echo:2022.01.19.07.51.20.release-1.27.x (#403)
  • chore(cd): update base service version to echo:2022.01.19.07.51.20.release-1.27.x (#404)
  • chore(build): update mergify config (backport #406) (#407)
  • chore(cd): update armory-commons version to 3.10.1 (#411)
  • chore(cd): update armory-commons version to 3.10.2 (#413)

Dinghy™ - 2.27.2…2.27.3

  • chore(build): update mergify config (#457) (#458)

Armory Front50 - 2.27.2…2.27.3

  • chore(build): Autobump armory-commons: 3.10.0 (#346)
  • chore(cd): update base service version to front50:2022.01.19.08.45.30.release-1.27.x (#355)
  • chore(cd): update base service version to front50:2022.01.19.08.45.30.release-1.27.x (#349)
  • chore(build): update mergify config (backport #351) (#352)
  • chore(cd): update armory-commons version to 3.10.1 (#356)
  • chore(cd): update armory-commons version to 3.10.2 (#359)

Armory Fiat - 2.27.2…2.27.3

  • chore(build): Autobump armory-commons: 3.10.0 (#286)
  • chore(build): update mergify config (backport #293) (#294)
  • chore(cd): update base service version to fiat:2022.01.19.08.14.32.release-1.27.x (#289)
  • chore(cd): update base service version to fiat:2022.01.19.08.14.32.release-1.27.x (#292)
  • chore(cd): update armory-commons version to 3.10.1 (#298)
  • chore(cd): update armory-commons version to 3.10.2 (#301)
  • chore(cd): update base service version to fiat:2022.03.02.18.55.09.release-1.27.x (#308)

Last modified August 17, 2023: (525a0c04)