You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Install this demo on an existing Kubernetes cluster:
35
56
36
57
NOTE: In order to interact with the Git repository, this repository must be forked and additional parameters must be provided to `stackablectl`.
@@ -46,30 +67,6 @@ WARNING: This demo should not be run alongside other demos.
46
67
NOTE: ArgoCD will be deployed in the `argo-cd` namespace by `stackablectl`.
47
68
ArgoCD itself will create other namespaces for the deployed products.
48
69
49
-
[#system-requirements]
50
-
== System requirements
51
-
52
-
To run this demo, your system needs at least:
53
-
54
-
* 15 {k8s-cpu}[cpu units] (core/hyperthread)
55
-
* 15 GiB memory
56
-
* 5 GiB disk storage
57
-
58
-
== Overview
59
-
60
-
This demo consists of multiple parts:
61
-
62
-
* Bootstrapping {argo-cd}[Argo CD] via `stackablectl`:
63
-
* Deploy components via ArgoCD:
64
-
** Install a {sealed-secrets}[Sealed Secrets] controller to decrypt secrets stored in a Git repository
65
-
** Install all Stackable operators using an ArgoCD `ApplicationSet`
66
-
** Install the Airflow dependencies Minio and Postgres as ArgoCD `Application`
67
-
** Deploy Stackable Airflow manifests into their respective ArgoCD `Projects`
68
-
* Inspect Airflow web UI
69
-
** DAGs are synced from a Git repository
70
-
** Start a DAG and check the results
71
-
** Check Kubernetes Executor logs persisted in Minio
72
-
73
70
== Sealed Secrets
74
71
75
72
When managing all resources and configuration via Git, deploying sensitive data like certificates or credentials via Git becomes a problem.
@@ -123,7 +120,7 @@ using different versions and Git sources (repository & branch) as well as the po
123
120
124
121
NOTE: This demo does not use a multi cluster environment for the sake of simplicity.
125
122
126
-
The following part is dives deeper into the definition of theStackable operator `ApplicationSet` and can be skipped.
123
+
The following part dives deeper into the definition of the Stackable operator `ApplicationSet` and can be skipped.
127
124
128
125
.Stackable operators `ApplicationSet` details
129
126
[%collapsible]
@@ -294,44 +291,109 @@ The log files contained in the single folders are the same as the logs shown abo
294
291
295
292
== Conclusion
296
293
297
-
This demo illustrates the combination of ArgoCD and Stackable, using the full potential of GitOps and demonstrating key features for a successful IaC deployment using Stackable.
294
+
This demo illustrates a repeatable blueprint for managing complex data platform components with ArgoCD and GitOps.
295
+
Once familiar with this pattern, you can extend it to multi-cluster environments, add CI/CD pipelines for automated manifest testing,
296
+
or integrate external secret stores like HashiCorp Vault for production use. This setup lays the foundation for a fully automated, scalable, and secure Kubernetes-based data platform.
297
+
298
+
This tutorial demonstrates how ArgoCD and Stackable integrate to deliver a streamlined GitOps experience:
299
+
* All cluster resources and workloads are managed declaratively via Git.
300
+
* ArgoCD continuously ensures the cluster state matches Git.
301
+
* Sealed Secrets provide secure and auditable secret management.
302
+
* Airflow DAG updates occur automatically by committing code to the repository.
298
303
299
-
// TODO: extend...
304
+
This approach scales naturally across environments—development, staging, and production—while reducing manual operations, improving visibility,
305
+
and enforcing consistency. By adopting GitOps with ArgoCD and Stackable, teams gain a clear, auditable, and automated path from code to production.
300
306
301
-
The last step is to demonstrate synchronizing changes made to manifests or secrets from the Git repository (to do this the demo is run on a forked GitHub repository).
307
+
Next steps:
308
+
* Explore multi-cluster ApplicationSet deployments to target multiple Kubernetes clusters.
309
+
* Integrate CI workflows to automatically validate and merge manifest updates.
* Experiment with DataOps (e.g., Airflow and Trino)
302
312
303
313
[#interact-with-git-repository]
304
314
== How to interact with ArgoCD, Airflow and the Git repository
305
315
306
316
Since this Demo is hosted in the {stackable-demo-repository}[Stackable Demo repository], where merging etc. requires approval, the recommendation is to fork the {stackable-demo-repository}[Stackable Demo repository].
317
+
318
+
=== Forking the demo repository
319
+
307
320
This {github-fork}[GitHub tutorial] shows how to fork a repository.
After forking the demo repository, a local copy can be cloned and the `stackablectl` install command must be parameterized with the fork URL and branch.
In this forked and cloned repository, changes can be made the code and synced into the cluster via ArgoCD.
339
+
=== Making changes to the repository
340
+
341
+
Edit manifests or add new DAG files within your cloned repository:
317
342
318
-
This way, ArgoCD is instructed to pull the Stackable manifests from the forked repository, where the changes are synced via ArgoCD into the cluster.
343
+
* Manifests are in: `demos/argo-cd-git-ops/manifests/`
344
+
* Airflow DAGs are in: `demos/argo-cd-git-ops/dags/`
319
345
320
-
=== Increase Airflow webserver replicas
346
+
==== Increase Airflow webserver replicas
321
347
322
348
Assuming your working directory is the root of the forked demo repository, try to increase the `spec.webservers.roleGroups.<role-group>.replicas` in the folder `demos/argo-cd-git-ops/manifests/airflow/airflow.yaml`.
323
349
Once this is pushed / merged, ArgoCD should sync the changes and you should see more webserver pods.
324
350
325
-
=== Add new Airflow DAGs
351
+
==== Add new Airflow DAGs
326
352
327
353
In the `demos/argo-cd-git-ops/manifests/airflow/airflow.yaml` manifest you have to adapt the git-sync configuration for DAGs to the forked repository:
328
354
329
355
[source,yaml]
330
356
----
331
357
dagsGitSync:
332
-
- repo: <my-demo-fork-url>
358
+
- repo: https://github.com/<your-username>/demos/
333
359
branch: <my-custom-branch-with-changes>
334
360
[...]
335
361
----
336
362
337
-
Similar to ArgoCD, after adding a new DAG to the folder `demos/argo-cd-git-ops/dags`, Airflow should pick up the new DAG via git-sync and display it in the UI.
363
+
After adding a new DAG to the folder `demos/argo-cd-git-ops/dags/`, Airflow should pick up the new DAG via git-sync and display it in the UI.
364
+
This may take a while for the syncing process. Refreshing the Airflow UI might help if no DAGs show up.
365
+
366
+
The synchronisation status of the DAGs can be monitored in via the Airflow scheduler:
0 commit comments