Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: adapt lifecycle-management and observability getting started guides to use KeptnAppContext #2880

Merged
merged 5 commits into from
Jan 29, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 31 additions & 3 deletions docs/docs/getting-started/lifecycle-management.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ and

> Pre and post deployments can be run either on individual workloads
> or on a group of associated workloads that are grouped into
> a`KeptnApp` resource.
> a `KeptnApp` resource.
> For instructions about how to identify the workloads to combine into `KeptnApp` resource,
> see
> [annotations to KeptnApp](../guides/integrate.md#basic-annotations).
Expand Down Expand Up @@ -100,7 +100,7 @@ Apply this manifest:

```yaml
odubajDT marked this conversation as resolved.
Show resolved Hide resolved
---
apiVersion: lifecycle.keptn.sh/v1alpha3
apiVersion: lifecycle.keptn.sh/v1beta1
kind: KeptnTaskDefinition
metadata:
name: send-event
Expand Down Expand Up @@ -135,7 +135,7 @@ Apply this manifest:

```yaml
---
apiVersion: lifecycle.keptn.sh/v1alpha3
apiVersion: lifecycle.keptn.sh/v1beta1
kind: KeptnTask
metadata:
name: runsendevent1
Expand Down Expand Up @@ -249,6 +249,34 @@ Do this by using the `keptn.sh/pre-deployment-tasks` label or annotation.
> Note: If a pre-deployment task fails, the `Pod` remains in a Pending state.
## More control over the application
To customize checks associated with the application, we can create a `KeptnAppContext` resource and define
a set of pre/post deployment tasks or evaluations for the whole application.
Note that the name of the `KeptnAppContext` resource needs to match the name of the automatically
created `KeptnApp` and the value present in the `keptn.sh/app` or `app.kubernetes.io/part-of`
annotations.
In this case it needs to be `keptndemoapp`.
An example of `KeptnAppContext`:
```yaml
odubajDT marked this conversation as resolved.
Show resolved Hide resolved
apiVersion: lifecycle.keptn.sh/v1beta1
kind: KeptnAppContext
metadata:
name: keptndemoapp
namespace: keptndemo
spec:
postDeploymentTasks:
- send-event
```
This way, the `send-event` task is executed after the deployment of the whole application;
in other words, after all of the workloads present in the `KeptnApp`
are in a `Running` state.
A detailed description of all the available fields of the `KeptnAppContext` resource can be found in the
[KeptnAppContext API reference page](../reference/api-reference/lifecycle/v1beta1/index.md#keptnappcontext).
## Further Information
You can do much more with `KeptnTask` resources.
Expand Down
117 changes: 0 additions & 117 deletions docs/docs/getting-started/observability.md
Original file line number Diff line number Diff line change
Expand Up @@ -474,123 +474,6 @@ View the Keptn Applications Dashboard and you should see the DORA metrics and an

![deployment trace](./assets/deploymenttrace.png)

## Step 14: More control over KeptnApp

odubajDT marked this conversation as resolved.
Show resolved Hide resolved
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: <app-name>
namespace: <app-namespace>
spec:
version: "x.y"
revision: x
workloads:
- name: <workload1-name>
version: <version-string>
- name: <workload2-name>
version: <version-string>
preDeploymentTasks:
- <list of tasks>
postDeploymentTasks:
- <list of tasks>
preDeploymentEvaluations:
- <list of evaluations>
postDeploymentEvaluations:
- <list of evaluations>
```
## 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](../guides/restart-application-deployment.md)
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](../reference/crd-reference/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](../reference/crd-reference/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](../reference/crd-reference/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](../reference/crd-reference/evaluationdefinition.md)
resource.

## Example

```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.
See [KeptnApp Reference page](../reference/crd-reference/app.md) for more information.

## What's next?

Keptn can run pre and post deployment tasks and SLO evaluations automatically.
Expand Down
1 change: 0 additions & 1 deletion docs/docs/installation/configuration/namespace.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ Some considerations for Keptn:
[Workload](https://kubernetes.io/docs/concepts/workloads/)
resources and
[KeptnApp](../../reference/crd-reference/app.md)
[KeptnApp](../../reference/crd-reference/app.md)
resources
that are activated and defined by annotations to each workload.
* [KeptnMetricsProvider](../../reference/crd-reference/metricsprovider.md)
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/reference/crd-reference/taskdefinition.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ spec:
* **container** -- Container definition.
* **name** -- Name of the container that will run,
which is not the same as the `metadata.name` field
that is used in the `KeptnApp` resource.
that is used in the `KeptnTaskDefinition` resource.
* **image** -- name of the image you defined according to
[image reference](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#image)
and
Expand Down Expand Up @@ -270,7 +270,7 @@ spec:
possibly with different parameters
that are set in the calling `KeptnTaskDefinition` resource.

You must annotate the `KeptnApp` resource to run the
You must create the `KeptnAppContext` resource to run the
odubajDT marked this conversation as resolved.
Show resolved Hide resolved
calling `KeptnTaskDefinition` resource.

The `KeptnTaskDefinition` called with `functionref`
Expand Down
Loading