An Application allows you to enable some features of CDS within a workflow:
The application configuration format is as following:
version: v1.0 name: my-application variables: artifact.name: type: string value: my-application docker.image: value: my-org/my-application docker.registry: value: hub.docker.com keys: app-mySSHKey: type: ssh repo: my-org/my-application vcs_server: github vcs_connection_type: ssh vcs_ssh_key: app-mySSHKey deployments: my-kubernetes-cluster: timeout: value: 180 namespace: my-namespace helm_chart: value: deploy/helm/ helm_values: type: deploy/helm/values.yaml helm_version: type: 2.12.2
Define application scoped variables as a dictionary. Each Variable must have a
type and a
value. You will be able to play with those variables using
CDS_APP_MY_VARIABLE. The recognized types are
number. By default the type is
To be able to write secret in the CDS yaml files, you have to encrypt data within your CDS project.
$ cdsctl encrypt MYPROJECT my-data my-super-secret-value my-data: 01234567890987654321
The command returns the value:
01234567890987654321. You can use this value in a configuration file.
Keys managed in CDS in are from two types:
PGP. Let’s import an application with a SSH Key. Those key could be important to manage your Git repositories.
➜ ~ cat app.yml name: myapp keys: app-mysshkey: type: ssh ➜ ~ cdsctl application import MYPROJ app.yml Application myapp successfully created SSH key app-mysshkey created on application myapp
CDS has just created a new SSH keypair on its own. To be able to keep this keypair for the future, you can gather an identifier by running an export.
➜ ~ cdsctl application export FSAMIN myapp version: v1.0 name: myapp keys: app-mysshkey: type: ssh value: 19a2ca3271854c3183aabb4af9df05e1
Note that each time you want to import the application and keep the keypair as it, you must provide the exported value.
If you want to keep your application in your git repository and let CDS configure and reconfigure the application automatically, we suggest to use the
regen option. With this option CDS will generate the SSH keypair if it doesn’t exist, and won’t touch it on each import.
name: myapp keys: app-mysshkey: type: ssh regen: false
To be able to link an application to a VCS, you must have at least one repository manager properly configured on your CDS instance. Each application in CDS can be linked to one repository on a repository manager.
Defining your VCS setup on an application will allow to benefit for the deep integration of CDS and the Repository Manager (such as GitHub). So you would be able to setup webhooks, browse through commits and publish your releases easily.
|vcs_server||Set the name of the repository manager on which on repository is hosted|
|repo||The fullname of the repositiry i.e
|vcs_connection_type||Define the way you would like to checkout the code. Allowed values are
|vcs_ssh_key||If you set
|vcs_user||If you set
|vcs_password||If you set
|vcs_pgp_key||If you want to commit and sign, you can choose here a PGP Key|
Please note that you can use key at
application level. Default
https. If your repository is public, you can omit
version: v1.0 name: myapp repo: myorg/myapp vcs_server: github vcs_connection_type: ssh vcs_ssh_key: proj-ssh-key vcs_pgp_key: proj-pgp-key
In this section, you can define the setup to deploy your application on a platform. To be able to setup it, you must have at least one integration supporting deployment properly configured on your CDS instance.
deployments section is the list of the settings you can use to deploy to several platforms. For instance, if you want to be able to be deploy the same application, from the same helm chart with subtle changes in variables, depending on the cluster, you can set the following configuration.
version: v1.0 name: myapp deployments: my-kubernetes-cluster-A: namespace: my-namespace-A helm_chart: value: deploy/helm/ helm_values: type: deploy/helm/values-cluster-A.yaml helm_version: type: 2.12.2 my-kubernetes-cluster-B: namespace: my-namespace-B helm_chart: value: deploy/helm/ helm_values: type: deploy/helm/values-cluster-B.yaml helm_version: type: 2.12.2
The list of the availabe deployment platform is available from the Web UI on the
project / integration section, or with the command
cdsctl project integration list
➜ ~ cdsctl project integration list MYPROJ +-----------------------------+ | NAME | +-----------------------------+ | my-kubernetes-cluster-A | | my-kubernetes-cluster-B | +-----------------------------+
The settings depend on the integration. Please refer to the integration documentation.
Now you are ready to use the DeployApplication action in your pipelines.