Spinnaker Stage Bake (Manifest): Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 41: Line 41:
The files passed to <code>--values</code> parameter must be added as "Overrides/value artifact".
The files passed to <code>--values</code> parameter must be added as "Overrides/value artifact".


This is where a configuration file exposed in a configuration repository can be added. The configuration should be: Overrides > Add value artifact > Expected Artifact > Define a new artifact > Artifact from execution context
This is where a configuration file exposed in a configuration repository can be added. The configuration should be: Overrides Add value artifact Expected Artifact Define a new artifact Artifact from execution context


Account: github
Account: github


Content URL: https://github.example.com/api/v3/repos/ovidiuf/configuration/environments/my-env/my-app/config.yaml
Content URL: https&#58;//github.example.com/api/v3/repos/ovidiuf/configuration/environments/my-env/my-app/config.yaml


Commit/Branch: develop
Commit/Branch: develop

Revision as of 20:57, 7 March 2022

External

Internal

Overview

This stage renders the final form of a manifest or a multi-document manifest set, using a template renderer such as Helm.

Configuration

Add stage → Type: Bake (Manifest)

Bake (Manifest) Configuration

Template Renderer

Render Engine: HELM3

Helm Options

Name

The Helm release name for the chart. It determines the name of the artifact produced by this stage. This name will override the "Match Artifact/Name" specified in the Produces Artifact section.

Namespace

The target namespace to release into. If not specified, "default" will be used. ⚠️ There were (yet not elucidated) situations when even if a specific namespace was configured here, the deployment went to "default". That was fixed by overriding the namespace in the Deploy (Manifest) stage.

Template Artifact

Expected Artifact → Define Artifact → "Artifact from execution context".

To define the helm chart to render, there are two choices: Helm repository or GitHub repository. In both cases, the chart to be deployed must be stored remotely as a .tar.gz archive.

GitHub Repository for Helm Chart

Account: GitHub

Content URL: https://github.domain.com/api/v3/repos/<organization>/<repository>/<path-inside-repository>. The branch will be specified at the next step. Example: https://github.domain.com/api/v3/repos/ovidiuf/smoke/tmp/smoke-1.0.0.tgz

Commit/Branch: develop

Note that the GitHub repository must be configured for Spinnaker access.

The documentation seems to suggest that the chart can be stored in the GitHub repository in an exploded format, and the path to the Chart.yaml is sufficient, either the path to the file itself or the path to the directory containing Chart.yaml.

Helm Repository

TODO

Overrides

Expected Artifact

The files passed to --values parameter must be added as "Overrides/value artifact".

This is where a configuration file exposed in a configuration repository can be added. The configuration should be: Overrides → Add value artifact → Expected Artifact → Define a new artifact → Artifact from execution context

Account: github

Content URL: https://github.example.com/api/v3/repos/ovidiuf/configuration/environments/my-env/my-app/config.yaml

Commit/Branch: develop

Overrides

Individually specified overrides can also be set in form of key/value pairs. Example of how to update the image tag based on tag read by the Docker trigger:

Key Value
image.tag ${trigger['tag']}

If expressions are evaluated when the manifest is rendered, make sure to turn Expression Evaluation Evaluate SpEL expressions in overrides at bake time on.

Raw Overrides

Use --set instead of --set-string when injecting override values. Values injected using --set will be converted to primitive types by Helm.

Expression Evaluation

Evaluate SpEL expressions in overrides at bake time: Explicitly evaluate SpEL expressions in overrides just prior to manifest baking. Can be paired with the "Skip SpEL evaluation" option in the Deploy Manifest stage when baking a third-party manifest artifact with expressions not meant for Spinnaker to evaluate as SpEL.

Execution Options

Notifications

Produces Artifact

By default, Spinnaker automatically creates an embedded/base64 artifact that is bound when the stage completes, representing the full manifest set to be deployed downstream.

Comments

Example of Configured Stage

{
  "expectedArtifacts": [
    {
      "defaultArtifact": {
        "customKind": true,
        "id": "a3b15bdc-8f73-4265-ba38-9be06cd6b4f2"
      },
      "displayName": "rendered-helm-chart",
      "id": "c7202ead-c6f9-497a-9120-1957688ed2d8",
      "matchArtifact": {
        "artifactAccount": "embedded-artifact",
        "customKind": false,
        "id": "22a48f2b-2b62-46bd-9964-68b406a3c1c8",
        "type": "embedded/base64"
      },
      "useDefaultArtifact": false,
      "usePriorArtifact": false
    }
  ],
  "inputArtifacts": [
    {
      "account": "github",
      "artifact": {
        "artifactAccount": "github",
        "id": "75ebe7b2-b04a-4fcd-a712-c7eacb06c348",
        "name": "tmp/smoke-0.1.0.tgz",
        "reference": "https://github.example.com/api/v3/repos/ovidiuf/smoke/contents/tmp/smoke-0.1.0.tgz",
        "type": "github/file",
        "version": "develop"
      }
    }
  ],
  "name": "Render Helm",
  "namespace": "of",
  "outputName": "smoke",
  "overrides": {},
  "templateRenderer": "HELM3",
  "type": "bakeManifest"
}