2020-01-24 15:30:27 +02:00
metadata :
name : kubernetesDeploy
2020-07-29 11:21:32 +02:00
aliases :
- name : deployToKubernetes
deprecated : true
2020-01-24 15:30:27 +02:00
description : Deployment to Kubernetes test or production namespace within the specified Kubernetes cluster.
longDescription : |-
Deployment to Kubernetes test or production namespace within the specified Kubernetes cluster.
!!! note "Deployment supports multiple deployment tools"
Currently the following are supported :
* [ Helm](https://helm.sh/) command line tool and [Helm Charts](https://docs.helm.sh/developing_charts/#charts).
* [ kubectl](https://kubernetes.io/docs/reference/kubectl/overview/) and `kubectl apply` command.
## Helm
Following helm command will be executed by default :
```
helm upgrade <deploymentName> <chartPath> --install --force --namespace <namespace> --wait --timeout <helmDeployWaitSeconds> --set "image.repository=<yourRegistry>/<yourImageName>,image.tag=<yourImageTag>,secret.dockerconfigjson=<dockerSecret>,ingress.hosts[0]=<ingressHosts[0]>,,ingress.hosts[1]=<ingressHosts[1]>,...
```
* `yourRegistry` will be retrieved from `containerRegistryUrl`
* `yourImageName`, `yourImageTag` will be retrieved from `image`
* `dockerSecret` will be calculated with a call to `kubectl create secret docker-registry regsecret --docker-server=<yourRegistry> --docker-username=<containerRegistryUser> --docker-password=<containerRegistryPassword> --dry-run=true --output=json'`
spec :
inputs :
secrets :
- name : kubeConfigFileCredentialsId
2020-09-23 13:22:51 +02:00
description : Jenkins 'Secret file' credentials ID containing kubeconfig file. Details can be found in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/).
2020-08-06 11:23:36 +02:00
aliases :
- name : kubeCredentialsId
deprecated : true
2020-01-24 15:30:27 +02:00
type : jenkins
- name : kubeTokenCredentialsId
2020-09-23 13:22:51 +02:00
description : Jenkins 'Secret text' credentials ID containing token to authenticate to Kubernetes. This is an alternative way to using a kubeconfig file. Details can be found in the [Kubernetes documentation](https://kubernetes.io/docs/reference/access-authn-authz/authentication/).
2020-08-06 11:23:36 +02:00
aliases :
- name : k8sTokenCredentialsId
deprecated : true
2020-01-24 15:30:27 +02:00
type : jenkins
- name : dockerCredentialsId
type : jenkins
resources :
- name : deployDescriptor
type : stash
params :
- name : additionalParameters
aliases :
- name : helmDeploymentParameters
2020-08-31 16:10:28 +02:00
type : "[]string"
2020-01-24 15:30:27 +02:00
description : Defines additional parameters for \"helm install\" or \"kubectl apply\" command.
scope :
- PARAMETERS
- STAGES
- STEPS
- name : apiServer
aliases :
- name : k8sAPIServer
type : string
description : Defines the Url of the API Server of the Kubernetes cluster.
scope :
- GENERAL
- PARAMETERS
- STAGES
- STEPS
- name : appTemplate
aliases :
- name : k8sAppTemplate
type : string
description : Defines the filename for the kubernetes app template (e.g. k8s_apptemplate.yaml)
scope :
- PARAMETERS
- STAGES
- STEPS
- name : chartPath
aliases :
- name : helmChartPath
type : string
2021-03-25 13:26:44 +02:00
description : Defines the chart path for deployments using helm. It is a mandatory parameter when `deployTool:helm` or `deployTool:helm3`.
2020-01-24 15:30:27 +02:00
scope :
- PARAMETERS
- STAGES
- STEPS
- name : containerRegistryPassword
description : Password for container registry access - typically provided by the CI/CD environment.
type : string
scope :
- PARAMETERS
- STAGES
- STEPS
2020-04-16 14:37:45 +02:00
secret : true
2020-08-28 15:38:15 +02:00
resourceRef :
- name : dockerCredentialsId
type : secret
param : password
2020-01-24 15:30:27 +02:00
- name : containerRegistryUrl
aliases :
- name : dockerRegistryUrl
type : string
2020-07-29 15:48:55 +02:00
description : http(s) url of the Container registry where the image to deploy is located.
resourceRef :
2020-08-31 16:10:28 +02:00
- name : commonPipelineEnvironment
param : container/registryUrl
2020-01-24 15:30:27 +02:00
scope :
- GENERAL
- PARAMETERS
- STAGES
- STEPS
mandatory : true
- name : containerRegistryUser
description : Username for container registry access - typically provided by the CI/CD environment.
type : string
scope :
- PARAMETERS
- STAGES
- STEPS
2020-04-16 14:37:45 +02:00
secret : true
2020-08-28 15:38:15 +02:00
resourceRef :
- name : dockerCredentialsId
type : secret
param : username
2020-01-24 15:30:27 +02:00
- name : containerRegistrySecret
description : Name of the container registry secret used for pulling containers from the registry.
2020-08-18 07:32:36 +02:00
longDescription : |-
Name of the container registry secret used for pulling containers from the registry.
**For `deployTool : helm/helm3`:**<br />
If `containerRegistryUser` and `containerRegistryPassword` are provided, a secret is created on the fly and the information is passed to the helm template.<br />
Note : the secret will not be persisted in the Kubernetes cluster.
If neither `containerRegistryUser` nor `containerRegistryPassword` are provided, it is expected that a secret with the configured name exists in the target Kubernetes cluster.<br />
**For `deployTool : kubectl`:**<br />
If `createDockerRegistrySecret : true ` and `containerRegistryUser` and `containerRegistryPassword` are provided, a secret with the given name will be created in the Kubernetes cluster unless a secret with the name already exists.
2020-01-24 15:30:27 +02:00
type : string
scope :
- PARAMETERS
- STAGES
- STEPS
default : regsecret
- name : createDockerRegistrySecret
type : bool
2020-08-18 07:32:36 +02:00
description : "Only for `deployTool:kubectl`: Toggle to turn on `containerRegistrySecret` creation."
2020-01-24 15:30:27 +02:00
scope :
- PARAMETERS
- STAGES
- STEPS
default : false
- name : deploymentName
aliases :
- name : helmDeploymentName
type : string
2021-03-25 13:26:44 +02:00
description : Defines the name of the deployment. It is a mandatory parameter when `deployTool:helm` or `deployTool:helm3`.
2020-01-24 15:30:27 +02:00
scope :
- PARAMETERS
- STAGES
- STEPS
- name : deployTool
type : string
description : Defines the tool which should be used for deployment.
mandatory : true
scope :
- PARAMETERS
- STAGES
- STEPS
default : kubectl
2020-04-24 09:37:11 +02:00
possibleValues :
- kubectl
- helm
- helm3
2021-01-07 17:52:16 +02:00
- name : forceUpdates
type : bool
description : "Helm only: force resource updates with helm parameter `--force`"
mandatory : false
scope :
- PARAMETERS
- STAGES
- STEPS
default : true
2020-01-24 15:30:27 +02:00
- name : helmDeployWaitSeconds
type : int
description : Number of seconds before helm deploy returns.
scope :
- PARAMETERS
- STAGES
- STEPS
default : 300
2020-08-18 07:32:36 +02:00
- name : helmValues
2020-08-31 16:10:28 +02:00
type : "[]string"
2020-08-18 07:32:36 +02:00
description : List of helm values as YAML file reference or URL (as per helm parameter description for `-f` / `--values`)
scope :
- PARAMETERS
- STAGES
- STEPS
2020-01-24 15:30:27 +02:00
- name : image
aliases :
- name : deployImage
type : string
description : Full name of the image to be deployed.
2020-01-29 17:03:18 +02:00
resourceRef :
- name : commonPipelineEnvironment
2020-07-29 15:48:55 +02:00
param : container/imageNameTag
2020-01-24 15:30:27 +02:00
mandatory : true
scope :
- PARAMETERS
- STAGES
- STEPS
- name : ingressHosts
2020-08-31 16:10:28 +02:00
type : "[]string"
2020-08-18 07:32:36 +02:00
description : (Deprecated) List of ingress hosts to be exposed via helm deployment.
longDescription : |-
**DEPRECATED**<br />
List of ingress hosts to be exposed via helm deployment.<br />
Host names are passed to helm template via ingress configuration.<br />
This requires a modification to the default helm template, thus it is not recommended.
Recommendation is to use custom values and pass them via parameter `helmValues`.<br />
Since helm supports multiple files on top of the `values.yaml`, landscape-specific attributes can be passed via a specific file.
2020-01-24 15:30:27 +02:00
scope :
- PARAMETERS
- STAGES
- STEPS
2020-11-10 16:43:19 +02:00
- name : keepFailedDeployments
type : bool
description : Defines whether a failed deployment will be purged
default : false
scope :
- GENERAL
- PARAMETERS
- STAGES
- STEPS
2020-01-24 15:30:27 +02:00
- name : kubeConfig
type : string
description : Defines the path to the \"kubeconfig\" file.
scope :
- GENERAL
- PARAMETERS
- STAGES
- STEPS
2020-08-28 15:38:15 +02:00
secret : true
resourceRef :
- name : kubeConfigFileCredentialsId
type : secret
2020-11-06 19:06:19 +02:00
- type : vaultSecretFile
paths :
2021-04-22 12:55:35 +02:00
- $(vaultPath)/kube-config
- $(vaultBasePath)/$(vaultPipelineName)/kube-config
- $(vaultBasePath)/GROUP-SECRETS/kube-config
2020-01-24 15:30:27 +02:00
- name : kubeContext
type : string
description : Defines the context to use from the \"kubeconfig\" file.
scope :
- PARAMETERS
- STAGES
- STEPS
- name : kubeToken
type : string
description : Contains the id_token used by kubectl for authentication. Consider using kubeConfig parameter instead.
scope :
- GENERAL
- PARAMETERS
- STAGES
- STEPS
2020-04-16 14:37:45 +02:00
secret : true
2020-08-28 15:38:15 +02:00
resourceRef :
- name : kubeTokenCredentialsId
type : secret
2020-01-24 15:30:27 +02:00
- name : namespace
aliases :
- name : helmDeploymentNamespace
- name : k8sDeploymentNamespace
type : string
description : Defines the target Kubernetes namespace for the deployment.
scope :
- PARAMETERS
- STAGES
- STEPS
default : default
- name : tillerNamespace
aliases :
- name : helmTillerNamespace
type : string
description : Defines optional tiller namespace for deployments using helm.
scope :
- PARAMETERS
- STAGES
- STEPS
containers :
2020-08-31 16:10:28 +02:00
- image : dtzar/helm-kubectl:3.1.2
workingDir : /config
options :
- name : -u
value : "0"
conditions :
- conditionRef : strings-equal
params :
- name : deployTool
value : helm3
- image : dtzar/helm-kubectl:2.12.1
workingDir : /config
options :
- name : -u
value : "0"
conditions :
- conditionRef : strings-equal
params :
- name : deployTool
value : helm
- image : dtzar/helm-kubectl:2.12.1
workingDir : /config
options :
- name : -u
value : "0"
conditions :
- conditionRef : strings-equal
params :
- name : deployTool
value : kubectl