Skip to content

Commit 8d57c82

Browse files
authored
Merge 54a1827 into 6a3bc59
2 parents 6a3bc59 + 54a1827 commit 8d57c82

4 files changed

Lines changed: 63 additions & 81 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
To deploy Elasticsearch using the ECK operator:
2+
3+
```bash
4+
(cd generic/kubernetes/operator-based/elasticsearch && ./deploy.sh)
5+
```
6+
7+
The script installs the ECK operator, deploys an Elasticsearch cluster, and waits until it is ready.
8+
9+
<details>
10+
<summary>Review the Elasticsearch cluster configuration</summary>
11+
12+
```yaml reference
13+
https://github.com/camunda/camunda-deployment-references/blob/main/generic/kubernetes/operator-based/elasticsearch/elasticsearch-cluster.yml
14+
```
15+
16+
</details>
17+
18+
For more details on the Elasticsearch deployment, see [Elasticsearch deployment in the operator-based infrastructure guide](/self-managed/deployment/helm/configure/operator-based-infrastructure.md#elasticsearch-deployment).

docs/self-managed/deployment/helm/cloud-providers/azure/microsoft-aks/aks-helm.md

Lines changed: 37 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,21 @@ import NoDomainInfo from '../../\_partials/\_no-domain-info.md'
1515
import HelmUpgradeNote from '../../\_partials/\_helm-upgrade-note.md'
1616
import KubefwdTip from '../../\_partials/\_kubefwd-tip.md'
1717
import PortForwardServices from '../../\_partials/\_port-forward-services.md'
18+
import DeployECKElasticsearch from '../../\_partials/\_deploy-eck-elasticsearch.md'
1819

1920
This guide provides a comprehensive walkthrough for installing the Camunda 8 Helm chart on your existing Azure Kubernetes Service (AKS) cluster, and confirmation it is working as intended.
2021

21-
## Prerequisites
22+
## Requirements
2223

2324
- A Kubernetes cluster; refer to the [Terraform guide](./terraform-setup.md) for details.
2425
- [Helm](https://helm.sh/docs/intro/install/)
2526
- [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) to interact with the cluster.
2627
- [jq](https://jqlang.github.io/jq/download/) to interact with some variables.
2728
- [GNU envsubst](https://www.man7.org/linux/man-pages/man1/envsubst.1.html) to generate manifests.
28-
- (optional) Custom domain name/[DNS zone](https://learn.microsoft.com/en-us/azure/dns/dns-zones-records) in Azure DNS. This allows you to expose Camunda 8 endpoints and connect via community-supported [zbctl](https://github.com/camunda-community-hub/zeebe-client-go/blob/main/cmd/zbctl/zbctl.md) or [Camunda Modeler](https://camunda.com/download/modeler/).
2929
- A namespace to host the Camunda Platform; in this guide we will reference `camunda` as the target namespace.
30-
31-
For the tool versions used, check the [.tool-versions](https://github.com/camunda/camunda-deployment-references/blob/main/.tool-versions) file in the related repository. This contains an up-to-date list of versions we also use for testing.
30+
- (optional) Custom domain name/[DNS zone](https://learn.microsoft.com/en-us/azure/dns/dns-zones-records) in Azure DNS. This allows you to expose Camunda 8 endpoints and connect via community-supported [zbctl](https://github.com/camunda-community-hub/zeebe-client-go/blob/main/cmd/zbctl/zbctl.md) or [Camunda Modeler](https://camunda.com/download/modeler/).
31+
- (optional) Permissions to install Kubernetes operators (cluster-admin or equivalent) to deploy infrastructure services such as Elasticsearch, PostgreSQL, and Keycloak. This guide installs them directly from source to provide full control over versions and configuration.
32+
For the tool versions used, check the [.tool-versions](https://github.com/camunda/camunda-deployment-references/blob/main/.tool-versions) file in the related repository. This contains an up-to-date list of versions we also use for testing.
3233

3334
## Architecture
3435

@@ -250,86 +251,60 @@ https://github.com/camunda/camunda-deployment-references/blob/main/azure/kuberne
250251

251252
### 2. Configure your deployment
252253

253-
#### Enable Web Modeller and Console services
254+
#### Enable Enterprise components
254255

255256
Some components are not enabled by default in this deployment. For more information on how to configure and enable these components, refer to [configuring Web Modeler, Console, and Connectors](/self-managed/deployment/helm/install/quick-install.md#configuring-web-modeler-console-and-connectors).
256257

257-
#### Elasticsearch options
258+
#### Fill your deployment with actual values
258259

259-
Camunda Helm chart supports both internal and external Elasticsearch deployments. For production workloads, we recommend using an externally managed Elasticsearch service (for example, [Elastic Cloud on Azure](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/elastic.ec-azure-pp)). Terraform support for Elastic Cloud on Azure can be restrictive but remains a viable option. In this guide, we default to the internal deployment of Elasticsearch.
260+
Once you've prepared the `values.yml` file, run the following `envsubst` command to substitute the environment variables with their actual values:
260261

261-
<details>
262-
<summary>Show configuration to enable internal Elasticsearch</summary>
262+
```bash reference
263+
https://github.com/camunda/camunda-deployment-references/blob/main/generic/kubernetes/single-region/procedure/assemble-envsubst-values.sh
264+
```
263265

264-
```yaml
265-
global:
266-
elasticsearch:
267-
enabled: true
268-
opensearch:
269-
enabled: false
266+
:::note Web Modeler SMTP secret
267+
If you plan to enable Web Modeler, create the SMTP secret required for email notifications ([see how it's used by Web Modeler](/self-managed/components/modeler/web-modeler/configuration/configuration.md#smtp--email)):
270268

271-
elasticsearch:
272-
enabled: true
269+
```bash reference
270+
https://github.com/camunda/camunda-deployment-references/blob/main/azure/kubernetes/aks-single-region/procedure/create-webmodeler-secret.sh
273271
```
274272

275-
</details>
273+
:::
276274

277-
#### (Optional) Use internal PostgreSQL instead of the managed PostgreSQL service
275+
### 3. Deploy prerequisite services
278276

279-
In some scenarios, you might prefer to use an internal PostgreSQL deployment instead of the external Azure Database for PostgreSQL service. This could be due to cost considerations, network restrictions, or the need for tighter control over the database environment.
277+
Before deploying Camunda, you need to deploy the infrastructure services it depends on. The core infrastructure (Elasticsearch) can be deployed using Kubernetes operators as described in [Deploy infrastructure with Kubernetes operators](/self-managed/deployment/helm/configure/operator-based-infrastructure.md).
280278

281-
For example, if your application or service is deployed in a private network and requires a database that resides within the same Kubernetes cluster for performance or security reasons, the internal PostgreSQL deployment would be a better fit.
279+
- **Elasticsearch**: Deployed via [ECK (Elastic Cloud on Kubernetes)](https://www.elastic.co/guide/en/cloud-on-k8s/current/index.html)
282280

283-
To switch to the internal PostgreSQL deployment, configure the Helm chart as follows. Additionally, remove configurations related to the external database and secret references to avoid conflicts.
281+
All deploy scripts are located in `generic/kubernetes/operator-based/`. Review each script before executing to understand the deployment steps, and adapt the operator Custom Resource configurations for your specific requirements (resource limits, storage, replicas, etc.).
284282

285-
<details>
286-
<summary>Show configuration changes to disable external database usage</summary>
287-
288-
```yaml
289-
webModelerPostgresql:
290-
enabled: true
291-
292-
webModeler:
293-
# Remove this part
294-
295-
# restapi:
296-
# externalDatabase:
297-
# url: jdbc:postgresql://$\{DB_HOST}:5432/$\{DB_WEBMODELER_NAME}
298-
# user: $\{DB_WEBMODELER_USERNAME}
299-
# ...
300-
301-
identity:
302-
# Remove this part
303-
304-
# externalDatabase:
305-
# enabled: true
306-
# host: $\{DB_HOST}
307-
# port: 5432
308-
# username: $\{DB_IDENTITY_USERNAME}
309-
# database: $\{DB_IDENTITY_NAME}
310-
# ...
311-
```
283+
:::note Working directory
284+
All commands in this guide assume you are at the **repository root** (the directory created by `get-your-copy.sh`). The deploy commands below use subshells `(cd ... && ./deploy.sh)` to preserve your working directory.
285+
:::
312286

313-
</details>
287+
##### Deploy Elasticsearch {#deploy-elasticsearch}
314288

315-
#### Fill your deployment with actual values
289+
If your organization does not want to use a managed Elasticsearch service, ECK Operator is an option. In this guide, we default to the ECK Operator deployment of Elasticsearch.
316290

317-
Once you've prepared the `values.yml` file, run the following `envsubst` command to substitute the environment variables with their actual values:
291+
:::warning Production Elasticsearch recommendation
292+
For production workloads, we recommend using an externally managed Elasticsearch service (for example, [Elastic Cloud on Azure](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/elastic.ec-azure-pp)). Terraform support for Elastic Cloud on Azure can be restrictive but remains a viable option.
293+
:::
318294

319-
```bash reference
320-
https://github.com/camunda/camunda-deployment-references/blob/main/generic/kubernetes/single-region/procedure/assemble-envsubst-values.sh
321-
```
295+
<DeployECKElasticsearch />
322296

323-
:::note Web Modeler SMTP secret
324-
If you plan to enable Web Modeler, create the SMTP secret required for email notifications ([see how it's used by Web Modeler](/self-managed/components/modeler/web-modeler/configuration/configuration.md#smtp--email)):
297+
#### Merge operator overlays into values
325298

326-
```bash reference
327-
https://github.com/camunda/camunda-deployment-references/blob/main/azure/kubernetes/aks-single-region/procedure/create-webmodeler-secret.sh
328-
```
299+
Once the operator-managed services are running, merge the corresponding Helm values overlays into your `values.yml` file. These overlays configure Camunda components to use the external operator-managed services instead of embedded subcharts.
329300

330-
:::
301+
Merge the **Elasticsearch** overlay:
302+
303+
```bash
304+
yq '. *+ load("generic/kubernetes/operator-based/elasticsearch/camunda-elastic-values.yml")' values.yml > values-merged.yml && mv values-merged.yml values.yml
305+
```
331306

332-
### 3. Install Camunda 8 using Helm
307+
### 4. Install Camunda 8 using Helm
333308

334309
Now that the `generated-values.yml` is ready, you can install Camunda 8 using Helm. Run the following command:
335310

docs/self-managed/deployment/helm/cloud-providers/azure/microsoft-aks/terraform-setup.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,11 @@ This module is **enabled by default**. To opt out, you must:
412412
- Remove the `db.tf` file from the root
413413
- Manually provide credentials and PostgreSQL endpoints for the Helm chart
414414

415+
:::tip Alternative: Operator-based PostgreSQL deployment
416+
If your organization does not want to use a managed Azure Database for PostgreSQL service, CloudNativePG is an option.
417+
For more details on the PostgreSQL deployment with CloudNativePG Operator, see [PostgreSQL deployment in the operator-based infrastructure guide](/self-managed/deployment/helm/configure/operator-based-infrastructure.md#postgresql-deployment) for a production-grade setup with automated scaling, upgrades, and built-in security.
418+
:::
419+
415420
### Execution
416421

417422
:::note Secret management
@@ -583,6 +588,6 @@ kubectl delete secret setup-db-secret --namespace "$CAMUNDA_NAMESPACE"
583588

584589
Running these commands cleans up both the job and the secret, ensuring that no unnecessary resources remain in the cluster.
585590

586-
## 2. Install Camunda 8 using the Helm chart
591+
## 3. Install Camunda 8 using the Helm chart
587592

588593
Now that you've exported the necessary values, you can proceed with installing Camunda 8 using Helm charts. Follow the guide [Camunda 8 on Kubernetes](./aks-helm.md) for detailed instructions on deploying the platform to your Kubernetes cluster.

docs/self-managed/deployment/helm/cloud-providers/openshift/redhat-openshift.md

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import NoDomainInfo from '../\_partials/\_no-domain-info.md'
1717
import HelmUpgradeNote from '../\_partials/\_helm-upgrade-note.md'
1818
import KubefwdTip from '../\_partials/\_kubefwd-tip.md'
1919
import PortForwardServices from '../\_partials/\_port-forward-services.md'
20+
import DeployECKElasticsearch from '../\_partials/\_deploy-eck-elasticsearch.md'
2021

2122
Red Hat OpenShift, a Kubernetes distribution maintained by [Red Hat](https://www.redhat.com/en/technologies/cloud-computing/openshift), provides options for both managed and on-premises hosting.
2223

@@ -404,24 +405,7 @@ All commands in this guide assume you are at the **repository root** (the direct
404405

405406
#### Deploy Elasticsearch {#deploy-elasticsearch}
406407

407-
Deploy Elasticsearch using the ECK operator:
408-
409-
```bash
410-
(cd generic/kubernetes/operator-based/elasticsearch && ./deploy.sh)
411-
```
412-
413-
This script installs the ECK operator, deploys an Elasticsearch cluster, and waits for readiness.
414-
415-
<details>
416-
<summary>Review the Elasticsearch cluster configuration</summary>
417-
418-
```yaml reference
419-
https://github.com/camunda/camunda-deployment-references/blob/main/generic/kubernetes/operator-based/elasticsearch/elasticsearch-cluster.yml
420-
```
421-
422-
</details>
423-
424-
For more details on the Elasticsearch deployment, see [Elasticsearch deployment in the operator-based infrastructure guide](/self-managed/deployment/helm/configure/operator-based-infrastructure.md#elasticsearch-deployment).
408+
<DeployECKElasticsearch />
425409

426410
#### Deploy PostgreSQL {#deploy-postgresql}
427411

0 commit comments

Comments
 (0)