diff --git a/docs/content/en/docs/getting-started/_index.md b/docs/content/en/docs/getting-started/_index.md index 76df9246a4..6362b02ea3 100644 --- a/docs/content/en/docs/getting-started/_index.md +++ b/docs/content/en/docs/getting-started/_index.md @@ -469,11 +469,116 @@ View the Keptn Applications Dashboard and you should see the DORA metrics and an ## Step 14: More control over KeptnApp -You may have noticed that the `KeptnApp` Custom Resources are created automatically by Keptn. +To customize workloads and checks associated with the application, we can edit the autogenerated KeptnApp or create our own. + +```yaml +apiVersion: lifecycle.keptn.sh/v1alpha3 +kind: KeptnApp +metadata: + name: + namespace: +spec: + version: "x.y" + revision: x + workloads: + - name: + version: + - name: + version: + preDeploymentTasks: + - + postDeploymentTasks: + - + preDeploymentEvaluations: + - + postDeploymentEvaluations: + - +``` + +## Fields + +- **apiVersion** -- API version being used. +- **kind** -- Resource type. + Must be set to `KeptnApp` + +- **metadata** + - **name** -- Unique name of this application. + Names must comply with the + [Kubernetes Object Names and IDs](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) + specification. + +- **spec** + - **version** -- version of the Keptn application. + Changing this version number causes a new execution + of all application-level checks + - **revision** -- revision of a `version`. + The value is an integer that can be modified + to trigger another deployment of a `KeptnApp` of the same version. + For example, increment this number to restart a `KeptnApp` version + that failed to deploy, perhaps because a + `preDeploymentEvaluation` or `preDeploymentTask` failed. + See + [Restart an Application Deployment](../implementing/restart-application-deployment/) + for a longer discussion of this. + - **workloads** + - **name** - name of this Kubernetes + [workload](https://kubernetes.io/docs/concepts/workloads/). + Use the same naming rules listed above for the application name. + Provide one entry for each workload + associated with this Keptn application. + - **version** -- version number for this workload. + Changing this number causes a new execution + of checks for this workload only, + not the entire application. + +The remaining fields are required only when implementing +the release lifecycle management feature. +If used, these fields must be populated manually: + +- **preDeploymentTasks** -- list each task + to be run as part of the pre-deployment stage. + Task names must match the value of the `metadata.name` field + for the associated [KeptnTaskDefinition](../yaml-crd-ref/taskdefinition.md) resource. +- **postDeploymentTasks** -- list each task + to be run as part of the post-deployment stage. + Task names must match the value of the `metadata.name` field + for the associated + [KeptnTaskDefinition](../yaml-crd-ref/taskdefinition.md) + resource. +- **preDeploymentEvaluations** -- list each evaluation to be run + as part of the pre-deployment stage. + Evaluation names must match the value of the `metadata.name` field + for the associated + [KeptnEvaluationDefinition](../yaml-crd-ref/evaluationdefinition.md) + resource. +- **postDeploymentEvaluations** -- list each evaluation to be run + as part of the post-deployment stage. + Evaluation names must match the value of the `metadata.name` field + for the associated [KeptnEvaluationDefinition](../yaml-crd-ref/evaluationdefinition.md) + resource. + +## Example -The lifecycle toolkit automatically groups workloads into `KeptnApp`s by looking for matching -`app.kubernetes.io/part-of` annotations. -Any workloads with the same `part-of` annotation are said to be `part-of` the same `KeptnApp`. +```yaml +apiVersion: lifecycle.keptn.sh/v1alpha3 +kind: KeptnApp +metadata: + name: podtato-head + namespace: podtato-kubectl +spec: + version: "latest" + workloads: + - name: podtato-head-left-arm + version: "my_vers12.5" + - name: podtato-head-left-leg + version: "my_v24" + postDeploymentTasks: + - post-deployment-hello + preDeploymentEvaluations: + - my-prometheus-definition +``` + +You may have noticed that the `KeptnApp` Custom Resources are created automatically by Keptn. However, you can override this automatic behaviour by creating a custom `KeptnApp` CRD. In this way, you are in full control of what constitutes a Keptn Application.