Cloud customer?
Start for Free>
Upgrade in MyJFrog >
What's New in Cloud >







You are viewing an old version of this page. View thecurrent version.

Compare with CurrentView Page History

« PreviousVersion 18Next »

Overview

TheHelmDeploystep deploys a Docker image to aKubernetescluster using a Helm chart.


The Helm chart used to deploy the image through this native step can be either:

  • AHelmChartresource that identifies a Helm chart stored in an Artifactory repository byHelmPublish.
  • A Helm chart in a source code repository identified by aGitReporesource.

When properly configured, the HelmDeploy step will also perform areplace_envsoperation on all files specified under thevalueFilePathstag to replace all environment variables in those files with their values. This enables the step to derive information from a resource (such as the image name and tag from anImage) and use it to perform the deployment.

The HelmDeploy step uses thehelm upgradecommand to perform the deployment.

Page Contents


YAML Schema

The YAML schema for HelmDeploy native step is as follows:

HelmDeploy
pipelines: - name:  steps: - name:  type: HelmDeploy configuration: #inherits from bash helmVersion: <2 | 3> # optional, defaults to 2 flags:  # optional valueFilePaths: # optional -  releaseName:  chartPath:  # optional, may be required for certain input resources chartName:  # optional, may be required for certain input resources chartVersion:  # optional, may be required for certain input resources dryRun:  # optional, only deploys if the dryrun is success lint:  # lints chart before upgrade, default false lintFlags: “--strict” test:  # runs helm test after upgrade, default false testFlags: “--parallel” integrations: - name:  # required inputResources: - name:  # required, only one input resource is allowed execution: onStart: - echo "Preparing for work..." onSuccess: - echo "Job well done!" onFailure: - echo "uh oh, something went wrong" onComplete: #always - echo "Cleaning up some stuff"

Tags

name

Analphanumericstring (underscores are permitted) that identifies the step.

type

Must beHelmDeployfor this step type.

configuration

Specifies all configuration selections for the step's execution environment.This step inherits theBash/PowerShellstep configuration tags, including these pertinenttags:

Tag

Description of usage

Required/Optional

integrations Must specify aKubernetes Integration. Required
inputResources

Must specifyeitheraHelmChartresource or aGitReporesource that contains a Helm chart.

Required


In addition, these tags can be defined to support the step's native operation:

Tag

Description of usage

Required/Optional
helmVersion A number representing the major version of Helm to use. Can be 2 or 3. Defaults to 2. Optional
flags A flag string to be included in the helm command. For example: "--set key=’value’ -f myTestValues.yaml" Optional
valueFilePaths

Specifies values YAML file(s) for use with a--values (-f) option of thehelm installcommand.

All environment variable references in the specified file(s) will be automatically replaced with values of matching runtime environment variables.

Optional
releaseName

The release name. Equivalent to the --name (-n) option of thehelm installcommand.

Required
chartPath

The path to the Helm chart in theGitRepo/FileSpec/BuildInforesource specified ininputResources.

Do not use when a HelmChart resource is specified.

May be required
chartName

The name of the Helm chart in theFileSpec/BuildInforesource specified ininputResources.

Do not use when a HelmChart/GitRepo resource is specified or when your input resource is not an Artifactory Helm repository.

May be required
chartVersion

The name of the Helm chart in theFileSpec/BuildInforesource specified ininputResources.

Do not use when a HelmChart/GitRepo resource is specified or when your input resource is not an Artifactory Helm repository.

May be required
dryRun

Whentrue, only deploys if the --dry-run install simulation is successful.

Defaults tofalse.

Optional
lint

When set totrueperforms alintto examine a chart for possible issues.

Defaults tofalse.

Optional
lintFlags Flag string to pass to thehelm lintcommand. Optional
test

When set totrueperforms atestto run the tests for release.

Defaults tofalse.

Optional
testFlags Flag string to pass to thehelm testcommand. Optional

execution

Declares collections of shell command sequences to perform for pre- and post-execution phases:

Tag

Description of usage

Required/Optional
onStart Commands to execute in advance of the native operation Optional
onSuccess Commands to execute on successful completion Optional
onFailure Commands to execute on failed completion Optional
onComplete Commands to execute on any completion Optional

The actions performed for theonExecutephase are inherent to this step type and may not be overridden.


Examples

The following examples show how to configure a HelmDeploy step.

Helm 3 and HelmChart Resource Input

A HelmDeploy step using Helm 3 and a HelmChart resource input.

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 releaseName: myHelmRelease integrations: - name: kubernetes_integration inputResources: - name: helmChartResource

Dry Run

A HelmDeploy step using Helm 3 and a HelmChart resource input with values files and a dry run before the deployment.

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 releaseName: myHelmRelease dryRun: true valueFilePaths: - values/values1.yaml - values/values2.yaml integrations: - name: kubernetes_integration inputResources: - name: helmChartResource

GitRepo Input

A HelmDeploy step with a GitRepo input instead of a HelmChart and lint and test commands.

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 chartPath: "./myChart" releaseName: myHelmRelease lint: true lintFlags: "--strict" test: true testFlags: "--parallel" valueFilePaths: - values/values1.yaml - values/values2.yaml integrations: - name: kubernetes_integration inputResources: - name: gitRepoResource

FileSpec Input

A HelmDeploy step with a FileSpec input resource. When using the FileSpec input resource, use thechartPath属性来指定舵的位置我图表文件n the FileSpec resource. If the FileSpec represents a Generic repository in Artifactory that contains the Helm chart, use the following configuration as a reference:

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 chartPath: "./myChart" releaseName: myHelmRelease lint: true lintFlags: "--strict" test: true testFlags: "--parallel" valueFilePaths: - values/values1.yaml - values/values2.yaml integrations: - name: kubernetes_integration inputResources: - name: fileSpecResource

如果输入resour文件规范ce represents a Helm repository in Artifactory, you will also need toprovide thechartNameandchartVersionconfiguration properties:

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 chartPath: "./myChart" chartName: "myChartName" chartVersion: 0.0.1 releaseName: myHelmRelease lint: true lintFlags: "--strict" test: true testFlags: "--parallel" valueFilePaths: - values/values1.yaml - values/values2.yaml integrations: - name: kubernetes_integration inputResources: - name: fileSpecResource

BuildInfo Input

A HelmDeploy step with a BuildInfo input resource. When using the BuildInfo input resource, use thechartPath属性来指定舵的位置我图表文件n the BuildInfo resource. If the BuildInfo represents a Generic repository in Artifactory that contains the Helm chart, use the following configuration as a reference:

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 chartPath: "./myChart" releaseName: myHelmRelease lint: true lintFlags: "--strict" test: true testFlags: "--parallel" valueFilePaths: - values/values1.yaml - values/values2.yaml integrations: - name: kubernetes_integration inputResources: - name: buildInfoResource

If the BuildInfo input resource represents a Helm repository in Artifactory, you will also need toprovide thechartNameandchartVersionconfiguration properties:

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 3 chartPath: "./myChart" chartName: "myChartName" chartVersion: 0.0.1 releaseName: myHelmRelease lint: true lintFlags: "--strict" test: true testFlags: "--parallel" valueFilePaths: - values/values1.yaml - values/values2.yaml integrations: - name: kubernetes_integration inputResources: - name: buildInfoResource

Helm 2

A HelmDeploy step using Helm 2.

HelmDeploy
管道:名称:helmDeployPipeline步骤:-南e: helmDeployStep type: HelmDeploy configuration: helmVersion: 2 releaseName: myHelmRelease integrations: - name: kubernetes_integration inputResources: - name: helmChartResource

How it Works

When you use theHelmDeploynative step in a pipeline, it performs the following functions in the background:

  • helm init --client-only (if the Helm version is 2)
  • jfrog rt config (if there is a HelmChart resource input, to configure the JFrog CLI with the Artifactory credentials)
  • jfrog rt use (if there is a HelmChart resource input, to set the current default Artifactory configuration)
  • helm fetch(if there is a HelmChart resource input and the Helm version is 2, to fetch the chart)
  • helm pull(if there is a HelmChart resource input and the Helm version is 3, to fetch the chart)
  • replace_envs (if there are valueFilePaths, to replace variable placeholders)
  • helm lint (if lint is true)
  • helm --dry-run (if dryRun is true)
  • helm (deploy)
  • helm test (if test is true)
  • No labels
Copyright © 2023 JFrog Ltd.