Skip to content

Commit

Permalink
refactor: update helm chart version schema
Browse files Browse the repository at this point in the history
  • Loading branch information
aabouzaid committed Dec 27, 2023
1 parent e5d5dbc commit aee6496
Show file tree
Hide file tree
Showing 16 changed files with 557 additions and 91 deletions.
4 changes: 4 additions & 0 deletions .chglog/CHANGELOG.tpl.md
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,10 @@ and it follows [Conventional Commits](https://www.conventionalcommits.org/en/v1.
{{ end -}}
{{ end -}}

### Images

<!-- _VERSION_MATRIX_PLACEHOLDER_ -->

### Verification

To verify integrity of the Helm chart using [Cosign](https://docs.sigstore.dev/signing/quickstart/):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# Copy values files to the gh-pages branch to have clean and shorter links.
# Copy files to the gh-pages branch to have clean and shorter links.
# Example: https://helm.camunda.io/camunda-platform/values/values-latest.yaml
name: "Chart - Values Files"
name: "Chart - Public Files"

on:
push:
branches:
- main
paths:
- 'charts/camunda-platform/values/*.yaml'
- 'charts/camunda-platform/VERSION-MATRIX.md'
workflow_dispatch: { }

permissions:
Expand All @@ -27,8 +28,9 @@ jobs:
run: |
mkdir -p camunda-platform/values
cp -a main/charts/camunda-platform/values/*.yaml camunda-platform/values/
cp -a main/charts/camunda-platform/VERSION-MATRIX.md camunda-platform/version-matrix.md
rm -rf main
find .
- uses: EndBug/add-and-commit@v9.1.3
with:
message: "chore: update camunda-platform values files"
message: "chore: update camunda-platform public files"
6 changes: 6 additions & 0 deletions .github/workflows/chart-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ jobs:
- name: Substitute GITHUB_WORKFLOW_REF var.
run: |
sed -i "s|_GITHUB_WORKFLOW_REF_|${GITHUB_WORKFLOW_REF}|g" charts/camunda-platform/RELEASE-NOTES.md
- name: Substitute image versions var.
env:
INPUT_FILE: charts/camunda-platform/RELEASE-NOTES.md
OUTPUT_HEADER: false
run: |
bash scripts/generate-version-matrix.sh
- name: Install env dependencies
uses: asdf-vm/actions/install@v3
- uses: actions/cache@v3
Expand Down
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ Available commit types:

### Tests

> **Note**
> [!NOTE]
>
> For more details about Helm chart testing read the following blog post:
> [Advanced Test Practices For Helm Charts](https://medium.com/@zelldon91/advanced-test-practices-for-helm-charts-587caeeb4cb).
Expand Down
12 changes: 8 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -140,15 +140,19 @@ release.bump-chart-version-and-commit: .release.bump-chart-version
git add $(chartPath);\
git commit -m "chore: bump camunda-platform chart version to $(chartVersion)"

.PHONY: .release.generate-version-matrix
.release.generate-version-matrix:
@bash scripts/generate-version-matrix.sh

.PHONY: .release.generate-notes
.release.generate-notes:
docker run --rm -w /data -v `pwd`:/data --entrypoint sh $(gitChglog) \
-c "apk add bash grep yq; bash scripts/generate-release-notes.sh"

.PHONY: release.generate-notes-and-commit
release.generate-notes-and-commit: .release.generate-notes
.PHONY: release.generate-and-commit
release.generate-and-commit: .release.generate-notes .release.generate-version-matrix
git add $(chartPath);\
git commit -m "chore: add release notes for camunda-platform $(chartVersion)"
git commit -m "chore: add generated files for camunda-platform $(chartVersion)"

.PHONY: release.generate-pr-url
release.generate-pr-url:
Expand All @@ -163,7 +167,7 @@ release.chores:
git pull --tags
git switch -C release
@$(MAKE) release.bump-chart-version-and-commit
@$(MAKE) release.generate-notes-and-commit
@$(MAKE) release.generate-and-commit
git push -fu origin release
@$(MAKE) release.generate-pr-url
git checkout main
Expand Down
6 changes: 3 additions & 3 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ When it's time to release, just do the following steps.

Locally, run:

```
```shell
make release.chores
```

Expand All @@ -29,7 +29,7 @@ This action will:

Next, all that you need to open the PR using the generated link and follow th checklist there.

> **Note**
> [!NOTE]
>
> The release notes depend on git commit log, only the commits that follow
[Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format) will be added to
Expand All @@ -41,7 +41,7 @@ the release notes.
Artifact Hub. Once the release workflow is done, Artifact Hub automatically scans Camunda Helm repo
and the new release will show on Artifact Hub.

> **Note**
> [!NOTE]
>
> The charts could take some time till shown on Artifact Hub (up to 30 min).
> But we sharing our Helm chart on Artifact Hub just for visibility. After successful release,
Expand Down
6 changes: 3 additions & 3 deletions charts/camunda-platform/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v2
name: camunda-platform
version: 8.3.4
appVersion: 8.3.x
version: 9.0.0
appVersion: 8.4.x
description: |
Camunda 8 Self-Managed Helm charts.
Camunda's process automation platform allows developers to design, automate and improve processes.
Expand All @@ -20,7 +20,7 @@ keywords:
dependencies:
# Camunda charts.
- name: identity
version: 8.3.4
version: 9.0.0
condition: "identity.enabled"
import-values:
# START DEV COMMENT
Expand Down
87 changes: 36 additions & 51 deletions charts/camunda-platform/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ Please also refer to the [documentation](https://docs.camunda.io/docs/self-manag
- [Requirements](#requirements)
- [Dependencies](#dependencies)
- [Versioning](#versioning)
- [After July 2023](#after-july-2023)
- [Before July 2023](#before-july-2023)
- [Compatibility Matrix](#compatibility-matrix)
- [Installation](#installation)
- [Local Kubernetes](#local-kubernetes)
- [OpenShift](#openshift)
Expand Down Expand Up @@ -55,12 +52,12 @@ Please also refer to the [documentation](https://docs.camunda.io/docs/self-manag

## Requirements

* [Helm](https://helm.sh/) >= 3.9.x
* Kubernetes >= 1.20+
* Minimum cluster requirements include the following to run this chart with default settings.
All of these settings are configurable.
* Three Kubernetes nodes to respect the default "hard" affinity settings
* 2GB of RAM for the JVM heap
- [Helm](https://helm.sh/) >= 3.9.x
- Kubernetes >= 1.20+
- Minimum cluster requirements include the following to run this chart with default settings.
- All of these settings are configurable.
- Three Kubernetes nodes to respect the default "hard" affinity settings
- 2GB of RAM for the JVM heap

## Dependencies

Expand All @@ -69,7 +66,7 @@ and some are external (third-party). The dependency management is fully automate
however, it's good to understand the dependency structure. This third-party dependency is reflected in the Helm chart
as follows:

```
```text
camunda-platform
|_ elasticsearch
|_ identity
Expand All @@ -82,7 +79,8 @@ camunda-platform
|_ postgresql
```

> :bulb: Please note that the Connectors and Web Modeler components are part of the main chart and not implemented as sub-charts.
> [!NOTE]
> Please note that the Connectors and Web Modeler components are part of the main chart and not implemented as sub-charts.
For example, Camunda Identity utilizes Keycloak and allows you to manage users, roles, and permissions
for Camunda 8 components.
Expand All @@ -106,35 +104,11 @@ postgresql:

## Versioning

### After July 2023

Starting from July 2023 (v8.2.8), the Camunda 8 **Helm chart** version follows the same unified schema
and schedule as [Camunda 8 applications](https://github.com/camunda/camunda-platform).

Hence, if the Camunda 8 unified **applications** version is `8.2.8`, the Camunda 8 **Helm chart**
will also be `8.2.8`.

### Before July 2023

Camunda 8 **Helm chart** versions are only aligned with the minor version of
[Camunda 8](https://github.com/camunda/camunda-platform). In other words, the `Camunda 8 Helm chart`
could have a different patch version than the `Camunda` Platform 8 Applications`.
After the 8.4 release (Januray 2024), Camunda Helm chart version is **decoupled** from the applications version (e.g., chart version is `9.0.0` and applications version is `8.4.x`).

For example, the Camunda 8 **Helm chart** could be on version `8.1.1`, but Camunda 8 **applications**
are on version `8.1.0`. Additionally, the Camunda 8 **Helm chart** could be on version `8.1.1`,
but Camunda 8 **applications** are on version `8.1.2`.
Before the 8.4 release, Camunda Helm chart version was **coupled** with the applications version (e.g., chart version is `8.3.x` and applications version is `8.3.x`).

### Compatibility Matrix

The core Camunda applications have a unified fixed release schedule (minor release twice a year and patch release
every month). However, some of the applications have their own schedule. The following compatibility matrix gives
an overview of the different versions.

| Release Cycle | Helm chart | Zeebe, Operate, Tasklist | Optimize | Web Modeler | Connectors |
| --- | --- | --- | --- | --- | --- |
| Apr 2023 | 8.2.x | 8.2.x | 3.10.x | 8.2.x | >= 0.18.0 |
| Oct 2022 | 8.1.x | 8.1.x | 3.9.x | N/A | N/A |
| Apr 2022 | 8.0.x | 8.0.x | 3.9.x | N/A | N/A |
For more details, check out the [full version matrix](https://helm.camunda.io/camunda-platform/version-matrix.md).

## Installation

Expand Down Expand Up @@ -169,7 +143,7 @@ For more details, follow the Camunda 8

### OpenShift

Check out [OpenShift Support](openshift/README.md) to get started with deploying the charts on Red Hat OpenShift.
Check out [OpenShift Support](openshift/README.md) to get started with deploying the charts on Red Hat OpenShift.

## Backporting

Expand All @@ -194,7 +168,7 @@ You can remove these charts by running:
helm uninstall camunda
```

> **Note**
> [!NOTE]
>
> Notice that all the Services and Pods will be deleted, but not the PersistentVolumeClaims (PVC)
> which are used to hold the storage for the data generated by the cluster and Elasticsearch.
Expand Down Expand Up @@ -224,40 +198,50 @@ via a separate `values.yaml` file.

Check out the default [values.yaml](values.yaml) file, which contains the same content and documentation.

> **Note**
> [!NOTE]
>
> For more details about deploying Camunda 8 on Kubernetes, please visit the
> [Helm/Kubernetes installation instructions docs](https://docs.camunda.io/docs/self-managed/platform-deployment/helm-kubernetes/overview/).
## Notes on Configuration

### Web Modeler

> :information_source: Web Modeler Self-Managed is available to Camunda enterprise customers only.
> [!NOTE]
>
> Web Modeler Self-Managed is available to Camunda enterprise customers only.
#### Docker registry

The Docker images for Web Modeler are available in a private registry.
Enterprise customers either already have credentials to this registry, or they can request access to this registry through their CSM contact at Camunda.
To enable Kubernetes to pull the images from Camunda's registry, you'll need to:

- [create an image pull secret](https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod) using the provided credentials
- configure the Web Modeler pods to use the secret:

```yaml
webModeler:
image:
pullSecrets:
- name: <MY_SECRET_NAME>
- name: <SECRET_NAME>
```

#### Database

Web Modeler requires a PostgreSQL database to store the data.
You can either:
- deploy a PostgreSQL instance as part of the Helm release by setting `postgresql.enabled` to `true` (which will enable the [`postgresql` chart dependency](#postgresql-for-web-modeler))
- configure a connection to an (existing) external database by setting `postgresql.enabled` to `false` and providing the values under `restapi.externalDatabase`

- Deploy a PostgreSQL instance as part of the Helm release by setting `postgresql.enabled` to `true` (which will enable the [postgresql chart dependency](#webmodeler---postgresql-parameters)).
- Configure a connection to an (existing) external database by setting `postgresql.enabled` to `false` and providing the values under `restapi.externalDatabase`.

#### SMTP server

Web Modeler requires an SMTP server to send (notification) emails to users.
The SMTP connection can be configured with the values under `restapi.mail`.

#### Updating Environment Variables

When configuring the `env` options in the settings listed above, the environment variables you specify in values.yaml may show up twice when running `kubectl describe deployment <deployment>`. However, the environment variable specified in values.yaml will have precedence when the pod actually runs. To verify this, you can check the output from the following command:

```bash
Expand Down Expand Up @@ -293,7 +277,7 @@ Visit [using secrets in manual installation](https://docs.camunda.io/docs/8.0/se

Camunda 8 Helm chart has a dependency on the [Elasticsearch 8 Helm Chart](https://artifacthub.io/packages/helm/bitnami/elasticsearch). All variables related to Elasticsearch can be set under `elasticsearch`.

> **Note**
> [!NOTE]
>
> The default setup of the Elasticsearch 8 part of Camunda 8 uses nodes have all roles (master, data, coordinating, and ingest).
> For high-demand deployments, it's recommended to deploy the Elasticsearch master-elegible nodes as master-only nodes.
Expand Down Expand Up @@ -374,13 +358,13 @@ To do this you can run the following:
helm install camunda --atomic --debug ./charts/camunda-platform
```

* `--atomic if set, the installation process deletes the installation on failure. The --wait flag will be set automatically if --atomic is used`
- `--atomic if set, the installation process deletes the installation on failure. The --wait flag will be set automatically if --atomic is used`

* `--debug enable verbose output`
- `--debug enable verbose output`

To generate the resources/manifests without really installing them, you can use:
To generate the resources/manifests without really installing them, you can use:

* `--dry-run simulate an install`
- `--dry-run simulate an install`

If you see errors like:

Expand All @@ -399,7 +383,8 @@ make helm.repos-add
After this, you can run: `make helm.dependency-update`, which will update and download the dependencies for all charts.

The execution should look like this:
```

```text
$ make helm.dependency-update
helm dependency update charts/camunda-platform
Hang tight while we grab the latest from your chart repositories...
Expand Down
Loading

0 comments on commit aee6496

Please sign in to comment.