Skip to content

Commit

Permalink
docs: add umbrella charts blog post (#2709)
Browse files Browse the repository at this point in the history
Signed-off-by: odubajDT <ondrej.dubaj@dynatrace.com>
  • Loading branch information
odubajDT committed Dec 20, 2023
1 parent aa1abf0 commit a51ecdc
Show file tree
Hide file tree
Showing 5 changed files with 161 additions and 0 deletions.
2 changes: 2 additions & 0 deletions .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ autoscaler
azurecr
Bacher
bacherfl
Dubaj
odubaj
badanalysis
badmetric
badtaskdefinition
Expand Down
5 changes: 5 additions & 0 deletions docs-new/blog/.authors.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,8 @@ authors:
description: Maintainer
avatar: https://avatars.githubusercontent.com/u/2143586?v=4
url: https://github.com/bacherfl
odubajDT:
name: Ondrej Dubaj
description: Maintainer
avatar: https://avatars.githubusercontent.com/u/93584209?v=4
url: https://github.com/odubajDT
134 changes: 134 additions & 0 deletions docs-new/blog/posts/keptn-helm-umbrella-charts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
date: 2024-02-01
authors: [odubajDT]
description: >
In this blog post you will learn how to configure Keptn via the new Helm umbrella chart.
categories:
- SRE
- Helm
- Installation
- Upgrade
---

# Configure Keptn via the new Helm umbrella chart

In the dynamic world of cloud-native and microservices, installation and continuous upgrades of distributed systems
is a priority.
Embarking on a journey into the world of containerized applications often leads us into a labyrinth of configuration
and deployment intricacies.
Amidst this complexity, Helm charts emerge as the guiding light, streamlining the orchestration of Kubernetes-based
applications.

In this article, we're delving into the topic of Helm charts, in particular Umbrella charts - an approach that
simplifies the deployment and maintenance of microservice application architectures.
Let's uncover how these consolidated charts pave the way for smoother deployments, enhance scalability, and bring
harmony to the orchestration of complex Kubernetes environments.

## What is Helm?

[Helm](https://helm.sh/) is a powerful package manager for Kubernetes.
It simplifies and streamlines the deployment and management of applications on Kubernetes clusters.
It acts as a tool for defining, installing, and upgrading complex Kubernetes applications using pre-configured
templates called charts.
These charts encapsulate all the necessary Kubernetes resources and configuration files needed to deploy an
application, making it easier for developers and operators to manage applications consistently across different
environments.
Helm's ability to package, version, and share applications as charts facilitates collaboration and standardization
within the Kubernetes ecosystem, significantly improving the efficiency of deploying and maintaining containerized
applications.
The basic configuration mechanism for deployments is a `values.yaml` file which contains all the configuration options
with the default values for the given software.

## What is Keptn?

[Keptn](https://lifecycle.keptn.sh/) is a CNCF project for continuous delivery and automated operations.
It helps developers and platform engineering teams automate deployment, monitoring, and management of applications
running in cloud environments.
Keptn works with standard deployment software like ArgoCD or Flux, consolidating metrics, observability, and analysis
for all the microservices that comprise your deployed software as well as providing checks and executables that can
run before and/or after the deployment.

It also comprises multiple components with different feature sets as well as different installation and upgrade
requirements so proper configuration can be cumbersome for people unfamiliar with Helm charts.

Keptn uses the Helm umbrella charts to manage multiple sub-charts (one sub-chart per component) as a single entity.
This concept provides us the opportunity to install and manage each Keptn component as a fully independent microservice,
but additionally also as a complete toolkit.

In Keptn, just use a single `values.yaml` file to configure both the global umbrella chart parameters that apply to
all components, and each individual sub-chart's parameters.
Each individual Keptn component has all the possible helm configuration parameters documented in the
[Keptn repository](https://github.com/keptn/lifecycle-toolkit).

In the individual sub-charts, we can set parameters such as image `tag`, `imagePullPolicy` or `annotations`.
Additionally, global parameters which affect all the sub-charts can be set, like the global image `registry` or
global `annotations`.
These options are documented [here](https://github.com/keptn/lifecycle-toolkit-charts/blob/main/charts/keptn/README.md).

Note that setting the values for individual components overrides the global ones.
For example, if the same `annotation` option is configured for the global chart and the component, the component value
is favored.

## Installation of Keptn with default values

Let's look at a real-life example of a clean installation of Keptn using umbrella charts.
For basic installation of all components with the use of default values for configuration parameters you need to
execute the following commands:

```shell
helm repo add keptn https://charts.lifecycle.keptn.sh
helm repo update
helm upgrade --install keptn keptn/keptn -n keptn-system --create-namespace
```

You can see that it's not necessary to create a custom "values.yaml" file when using the default values.
Keptn will be installed with all the components (`metrics-operator`, `lifecycle-operator`, `cert-manager`), with
default Helm values set for each of them.

## Installation of Keptn with custom values

Let's now look at a use-case, where we want to use only Keptn metrics and therefore do not need to install the
`lifecycle-operator`, which provides functionality for Observability and/or Release Lifecycle Management.
Additionally to `metrics-operator`, we need to install `keptn-cert-manager,` which will provide certificates
webhooks present in the `metrics-operator`.
For this all, we need to create a `values.yaml` file with the following content:

```yaml
{% include "./keptn-helm-umbrella-charts/values.yaml" %}
```

This `values.yaml` file disables the `lifecycle-operator` and it sets the used `image registry` and `tag` of
the `cert-manager`. `tag`, `annotations` and `replicas` are set for the `metrics-operator`.
These parameters are configuring each installed component via their sub-charts.
Also, we configure the global annotations for all installed components (`metrics-operator` and `cert-manager`
only, since `lifecycle-operator` is disabled).
Note that the `myMetricsKey` annotation is set to different values in global parameters (`globalValue2`) and
in `metrics-operator` sub-chart parameters (`metricsValue1`).
Here the annotation defined in the `metrics-operator` component configuration will be used.

When the `values.yaml` file is ready, we use it to install Keptn with the following commands:

```shell
helm repo add keptn https://charts.lifecycle.keptn.sh
helm repo update
helm upgrade --install keptn keptn/keptn -n keptn-system --create-namespace --values=values.yaml
```

More information about the installation and upgrade options can be found in the official
[Keptn documentation](https://lifecycle.keptn.sh/docs/install/) and in the linked Helm values documentation.

## Summary

Let's sum up what we have seen.
We started with a brief description of Keptn, Helm and Umbrella charts.
Next, we described how the installation of Keptn components can be customized with Helm values that are under
the aegis of the Helm umbrella chart.
In the end, we went through an example of the configurable parameters of individual components or global values
and how the custom `values.yaml` file can be used for installation.

## Useful links

- <https://lifecycle.keptn.sh/docs/install/>
- <https://github.com/keptn/lifecycle-toolkit/>
- <https://github.com/keptn/lifecycle-toolkit-charts/>
- <https://helm.sh/>
19 changes: 19 additions & 0 deletions docs-new/blog/posts/keptn-helm-umbrella-charts/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
certManager:
enabled: true
image: # using custom image registry and tag to the cert-manager
registry: "myCustomRegistry"
tag: v0.0.0

lifecycleOperator:
enabled: false # installation of lifecycle-operator is disabled
metricsOperator:
replicas: 3 # installing 3 replicas of metrics-operator
annotations: # setting custom annotations for metrics-operator
myMetricsKey: metricsValue1
image: # using the latest image of the metrics-operator
tag: latest

global:
commonAnnotations: # setting common annotations for all installed component
myGlobalKey: globalValue1
myMetricsKey: globalValue2
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ plugins:
fallback_to_build_date: true
- blog:
blog_dir: blog
draft_if_future_date: true

nav:
- Home:
Expand Down

0 comments on commit a51ecdc

Please sign in to comment.