Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
8aac294
updated hostnames
JonMerlevede Jun 12, 2025
06f9875
hetzner csi
JonMerlevede Jun 12, 2025
2ac5792
increase timeout values
JonMerlevede Jun 12, 2025
fb85320
increase timeout values more
JonMerlevede Jun 12, 2025
48287a1
install cert manager
JonMerlevede Jun 12, 2025
2bcf52d
keep crds
JonMerlevede Jun 12, 2025
d071947
only apply application resources from root app
JonMerlevede Jun 12, 2025
67d5286
add postgres instance for lakekeeper
gergelysotidm Jun 12, 2025
7ee10b8
fix copypaste error
gergelysotidm Jun 12, 2025
2940ac3
use staging acme provided letsencrypt certs
JonMerlevede Jun 12, 2025
a0371d1
different filter?
JonMerlevede Jun 12, 2025
9a883c5
different filtering approach
JonMerlevede Jun 12, 2025
fd83c75
specify pg image
gergelysotidm Jun 12, 2025
32aff85
fix airflow tls spec
JonMerlevede Jun 12, 2025
3990daf
use prd certs
JonMerlevede Jun 12, 2025
7fd67e2
staging
JonMerlevede Jun 12, 2025
fcc85a2
argocd ingress fix
JonMerlevede Jun 12, 2025
0bb4387
eso
gergelysotidm Jun 12, 2025
ffaec3e
rename eso app to application
JonMerlevede Jun 12, 2025
4b8e123
define vault for eso
JonMerlevede Jun 12, 2025
93bedb1
specify target revision in eso app
JonMerlevede Jun 12, 2025
58b431c
specify namespace for eso vault store token secret
JonMerlevede Jun 12, 2025
38533ea
update test secret
JonMerlevede Jun 12, 2025
5aeae12
define hcloud secret as external secret
JonMerlevede Jun 12, 2025
405c36c
not beta...
JonMerlevede Jun 12, 2025
6a90217
deploy trino from cloudfleed branch
JonMerlevede Jun 12, 2025
d7d3930
cleanup
JonMerlevede Jun 12, 2025
4c1dba7
install crunchy
JonMerlevede Jun 12, 2025
1e5d7fc
install crunchy in argocd ns
JonMerlevede Jun 12, 2025
71f5fdd
add s3 secret
gergelysotidm Jun 12, 2025
291320a
start a pg cluster
JonMerlevede Jun 12, 2025
0d78c18
add k8s-services cluster secret store
JonMerlevede Jun 12, 2025
d247010
bump to v1
JonMerlevede Jun 12, 2025
98398f4
move db
JonMerlevede Jun 12, 2025
a064c65
rename app
JonMerlevede Jun 12, 2025
dd570e3
pg credentials for trino
gergelysotidm Jun 12, 2025
4295392
deactivate postgres
JonMerlevede Jun 12, 2025
0004f7f
adjust secret prefix
gergelysotidm Jun 12, 2025
2346ff9
add ingress for trino
JonMerlevede Jun 12, 2025
7346793
allow processing forwarded headers in trino
JonMerlevede Jun 12, 2025
1ed202b
add admin user
gergelysotidm Jun 12, 2025
d3f4d6e
correct config
JonMerlevede Jun 12, 2025
38e3056
configure password auth on trino
gergelysotidm Jun 12, 2025
cb4efc7
resize workers
JonMerlevede Jun 12, 2025
b41a027
try auth config again
gergelysotidm Jun 12, 2025
20303c5
remove global conf
gergelysotidm Jun 12, 2025
bb1c2ab
shared secret
JonMerlevede Jun 12, 2025
3bbe7eb
remove global config again
JonMerlevede Jun 12, 2025
f29209d
disable lakekeeper
JonMerlevede Jun 12, 2025
07452a2
scale down
JonMerlevede Jun 12, 2025
7404af3
restrict instance types test
JonMerlevede Jun 12, 2025
384e5d7
restrict instance types test bis
JonMerlevede Jun 12, 2025
64ad3b5
small caps instance types
JonMerlevede Jun 12, 2025
3f0bbd1
different instance types
JonMerlevede Jun 12, 2025
e2e0d51
remove restriction
JonMerlevede Jun 12, 2025
58b557d
disable dev mode in vault
gergelysotidm Jun 12, 2025
5790dd9
enable vault data storage
gergelysotidm Jun 12, 2025
6cdf6bc
unsealing
JonMerlevede Jun 12, 2025
de736ea
cleanup
JonMerlevede Jun 12, 2025
d5b478d
secrets for vault
JonMerlevede Jun 12, 2025
8c05c89
rename secret->secrets
JonMerlevede Jun 12, 2025
30bdac9
add zot
JonMerlevede Jun 12, 2025
31f7651
update bucket names
JonMerlevede Jun 12, 2025
23bd671
try to fix zot config
JonMerlevede Jun 12, 2025
11eebf5
ruff run
JonMerlevede Jun 12, 2025
778dfc1
use zot multi-arch image
JonMerlevede Jun 12, 2025
b0f81f8
fix typo
JonMerlevede Jun 12, 2025
c77b5e0
...
JonMerlevede Jun 12, 2025
5c65541
escape template stuff
JonMerlevede Jun 12, 2025
e6d68ed
clusterip
JonMerlevede Jun 12, 2025
a204f37
increase push timeout
JonMerlevede Jun 12, 2025
aa374fa
zot config
JonMerlevede Jun 12, 2025
878fbbd
...
JonMerlevede Jun 12, 2025
d603775
add docker compatibility
JonMerlevede Jun 12, 2025
4f78164
enable search
JonMerlevede Jun 12, 2025
b19f83b
disable cve
JonMerlevede Jun 12, 2025
58c7b49
disable access control
JonMerlevede Jun 12, 2025
cf9e994
typo
JonMerlevede Jun 12, 2025
299e447
traefik debug lvl
JonMerlevede Jun 12, 2025
896013a
access logs
JonMerlevede Jun 12, 2025
56477ad
access logs
JonMerlevede Jun 12, 2025
dc7a6e0
fix indentation
JonMerlevede Jun 12, 2025
8c269da
timeouts
JonMerlevede Jun 12, 2025
42aab7f
timeouts
JonMerlevede Jun 12, 2025
d7726b9
timeouts
JonMerlevede Jun 12, 2025
a9df7f4
timeouts in s
JonMerlevede Jun 12, 2025
834160d
secure timeouts
JonMerlevede Jun 12, 2025
4a37c5b
pull through cache
JonMerlevede Jun 12, 2025
633d798
missing ,
JonMerlevede Jun 12, 2025
bd8ec8f
zot sync tmp dir
JonMerlevede Jun 12, 2025
a72ee56
zot sync tmp dir
JonMerlevede Jun 12, 2025
aa53852
zot increase resources
JonMerlevede Jun 12, 2025
eac2355
zot increase resources
JonMerlevede Jun 12, 2025
747bcb3
update chart
JonMerlevede Jun 13, 2025
3216097
...
JonMerlevede Jun 13, 2025
ce27629
re-add content
JonMerlevede Jun 13, 2025
6b79aeb
change zot requests
JonMerlevede Jun 13, 2025
679f290
take zitadel folder from main branch
JonMerlevede Jun 13, 2025
3cdf6af
create zitadel db, generate config
JonMerlevede Jun 13, 2025
413466e
disable ssl on postgres
JonMerlevede Jun 13, 2025
6c82d2c
point zitadel to cloudfleet branch
JonMerlevede Jun 13, 2025
2948d33
disable pg certificate for zitadel
JonMerlevede Jun 13, 2025
6bd3349
update sourceref
JonMerlevede Jun 13, 2025
22c7272
yaml is dumb
JonMerlevede Jun 13, 2025
86efaca
mode prefer
JonMerlevede Jun 13, 2025
10f3a43
postgres config
JonMerlevede Jun 13, 2025
5412094
patroni config
JonMerlevede Jun 13, 2025
99ff483
patroni config
JonMerlevede Jun 13, 2025
dadfeb4
more postgres settings
JonMerlevede Jun 13, 2025
6ce2d20
...
JonMerlevede Jun 13, 2025
722f36c
no ssl
JonMerlevede Jun 13, 2025
d76253f
admin config
JonMerlevede Jun 13, 2025
7723303
admin config
JonMerlevede Jun 13, 2025
5f89b58
remove junk
JonMerlevede Jun 13, 2025
93087e7
update email
JonMerlevede Jun 13, 2025
1bf90e3
lowercase post
JonMerlevede Jun 13, 2025
8d8c2be
...
JonMerlevede Jun 13, 2025
898e98e
move all config to secret
JonMerlevede Jun 13, 2025
1dc8e3e
configure using env vars
JonMerlevede Jun 13, 2025
b84eff7
configure using env vars to the extent possible
JonMerlevede Jun 13, 2025
a723fce
rename envs var
JonMerlevede Jun 13, 2025
fd01226
envs are always strings
JonMerlevede Jun 13, 2025
327bf0c
correct name for env vars secret
JonMerlevede Jun 13, 2025
349590f
correct name for env vars secret
JonMerlevede Jun 13, 2025
abc3b20
allow zitadel to create role
JonMerlevede Jun 13, 2025
a81e5df
...
JonMerlevede Jun 13, 2025
50a72d6
...
JonMerlevede Jun 13, 2025
8e93dd8
re-add admin stuff
JonMerlevede Jun 13, 2025
e91c3ab
add smtp config
JonMerlevede Jun 13, 2025
3a8a715
update smtp config
JonMerlevede Jun 13, 2025
83d7c2e
add port
JonMerlevede Jun 13, 2025
f4d630d
enable external
JonMerlevede Jun 13, 2025
fa8d141
reduce resource requirements
JonMerlevede Jun 18, 2025
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
23 changes: 23 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.9
hooks:
- id: ruff-format
name: ruff format yaml
files: \.(yaml|yml)$
args: [ --config=line-length=120 ]
- id: ruff
name: ruff lint yaml
files: \.(yaml|yml)$
args: [ --fix, --config=line-length=120 ]

- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
files: \.(yaml|yml)$
- id: end-of-file-fixer
files: \.(yaml|yml)$
- id: check-yaml
args: [ --multi, --unsafe ]
- id: check-added-large-files
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ metadata:
namespace: argocd
# Add finalizer to ensure that Helm release is deleted before the app
finalizers:
- argocd.argoproj.io/resources-finalizer # Use domain-qualified finalizer
- argocd.argoproj.io/resources-finalizer # Use domain-qualified finalizer
spec:
project: default
source:
# Source is the Git repository containing this Application manifest and the wrapper chart
repoURL: https://github.com/datamindedbe/playground-data-platform-stack.git
path: argo/apps/100-traefik # Path to the wrapper chart directory within the Git repo
targetRevision: HEAD # Or your specific branch/tag
targetRevision: cloudfleet # Or your specific branch/tag

# Helm configuration for the wrapper chart
helm:
Expand All @@ -29,4 +29,4 @@ spec:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true # Ensure the traefik namespace is created
- CreateNamespace=true # Ensure the traefik namespace is created
1,129 changes: 1,129 additions & 0 deletions argo/apps/100-traefik/values-default.yaml

Large diffs are not rendered by default.

24 changes: 23 additions & 1 deletion argo/apps/100-traefik/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,31 @@ traefik:
enabled: true
# Use the default entrypoint for the dashboard
entryPoints:
- websecure
- websecure
# Define the matching rule for the dashboard route
matchRule: Host(`traefik.localhost`)
ports:
web:
transport:
respondingTimeouts:
readTimeout: 3600s
writeTimeout: 3600s
idleTimeout: 3600s
keepAliveMaxTime: 3600s
keepAliveMaxRequests: 1000
websecure:
transport:
respondingTimeouts:
readTimeout: 3600s
writeTimeout: 3600s
idleTimeout: 3600s
keepAliveMaxTime: 3600s
keepAliveMaxRequests: 1000
logs:
general:
level: DEBUG
access:
enabled: true

# Enable Kubernetes providers
providers:
Expand Down
13 changes: 13 additions & 0 deletions argo/apps/101-hetzner-csi/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: v2
name: hetzner-csi-wrapper
description: A wrapper Helm chart to deploy Hetzner CSI with custom values.
version: 0.1.0 # Version of this wrapper chart
appVersion: "v25.0.0" # Corresponds to the Traefik chart version we depend on

dependencies:
- name: hcloud-csi
version: "v2.15.0" # The version of the Traefik chart to use
repository: https://charts.hetzner.cloud # The repository of the dependency
# We need to map the values from our local values.yaml to the subchart.
# By default, values under a key matching the dependency name are passed.
# So, values for 'traefik' in our values.yaml will go to the traefik subchart.
31 changes: 31 additions & 0 deletions argo/apps/101-hetzner-csi/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: hetzner-csi
namespace: argocd
# Add finalizer to ensure that Helm release is deleted before the app
finalizers:
- argocd.argoproj.io/resources-finalizer # Use domain-qualified finalizer
spec:
project: default
source:
# Source is the Git repository containing this Application manifest and the wrapper chart
repoURL: https://github.com/datamindedbe/playground-data-platform-stack.git
path: argo/apps/101-hetzner-csi # Path to the wrapper chart directory within the Git repo
targetRevision: cloudfleet # Or your specific branch/tag

# Helm configuration for the wrapper chart
helm:
# releaseName is optional here, defaults based on app name
releaseName: hetzner-csi
# Values file is implicitly values.yaml within the source path
# valueFiles: # Not needed if using default values.yaml
# - values.yaml
destination:
server: https://kubernetes.default.svc
namespace: kube-system # Deploy Traefik into its own namespace
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions: []
18 changes: 18 additions & 0 deletions argo/apps/101-hetzner-csi/templates/hcloud-secret.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: hcloud-token
namespace: kube-system
spec:
refreshInterval: 300s
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
target:
name: hcloud
creationPolicy: Owner
data:
- secretKey: token
remoteRef:
key: cloud/hetzner
property: roottoken
20 changes: 20 additions & 0 deletions argo/apps/101-hetzner-csi/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Values for the traefik-wrapper chart

# Values passed to the 'traefik' subchart (dependency)
traefik:
# Enable dashboard access (consider security implications for production)
ingressRoute:
dashboard:
enabled: true
# Use the default entrypoint for the dashboard
entryPoints:
- websecure
# Define the matching rule for the dashboard route
matchRule: Host(`traefik.localhost`)

# Enable Kubernetes providers
providers:
kubernetesCRD:
enabled: true # Enable CRD provider (for IngressRoute, ServersTransport, etc.)
kubernetesIngress:
enabled: true
10 changes: 10 additions & 0 deletions argo/apps/102-cert-manager/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
apiVersion: v2
name: cert-manager-wrapper
description: A wrapper to deploy cert-manager with custom values.
version: 0.1.0 # Version of this wrapper chart
appVersion: "0.18.0" # Corresponds to the chart version we depend on (check for latest stable)

dependencies:
- name: cert-manager
version: "1.18.0" # Specify the Airflow chart version
repository: https://charts.jetstack.io # Official Jetstack repository for cert-manager
28 changes: 28 additions & 0 deletions argo/apps/102-cert-manager/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: cert-manager
namespace: argocd
finalizers:
- argocd.argoproj.io/resources-finalizer # Use domain-qualified finalizer
spec:
project: default
source:
# Source is the Git repository containing this Application manifest and the wrapper chart
repoURL: https://github.com/datamindedbe/playground-data-platform-stack.git # Ensure this is your repo URL
path: argo/apps/102-cert-manager # Path to the wrapper chart directory within the Git repo
targetRevision: cloudfleet # Or your specific branch/tag

# Helm configuration for the wrapper chart
helm:
releaseName: cert-manager
# Values file is implicitly values.yaml within the source path
destination:
server: https://kubernetes.default.svc
namespace: operators # Deploy Airflow into the services namespace
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true # Ensure the services namespace is created
15 changes: 15 additions & 0 deletions argo/apps/102-cert-manager/templates/issuer-prd.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
# server: https://acme-staging-v02.api.letsencrypt.org/directory
server: https://acme-v02.api.letsencrypt.org/directory
email: jonathan.merlevede@dataminded.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: traefik
14 changes: 14 additions & 0 deletions argo/apps/102-cert-manager/templates/issuer-staging.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-staging
spec:
acme:
server: https://acme-staging-v02.api.letsencrypt.org/directory
email: jonathan.merlevede@dataminded.com
privateKeySecretRef:
name: letsencrypt-staging
solvers:
- http01:
ingress:
class: traefik
6 changes: 6 additions & 0 deletions argo/apps/102-cert-manager/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
cert-manager:
crds:
enabled: true # Enable CRDs installation
keep: true # Keep CRDs after uninstalling the chart
prometheus:
enabled: false
9 changes: 9 additions & 0 deletions argo/apps/150-argocd-ingress/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
apiVersion: v2
name: argocd-ingress
description: A Helm chart for ArgoCD ingress configuration
type: application
version: 0.1.0
appVersion: "1.0.0"
maintainers:
- name: Dataminded
email: jonathan.merlevede@dataminded.com
22 changes: 22 additions & 0 deletions argo/apps/150-argocd-ingress/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: argocd-ingress
namespace: argocd
finalizers:
- argocd.argoproj.io/resources-finalizer
spec:
project: default
source:
repoURL: https://github.com/datamindedbe/playground-data-platform-stack.git
path: argo/apps/150-argocd-ingress
targetRevision: cloudfleet
helm:
releaseName: argocd-ingress
destination:
server: https://kubernetes.default.svc
namespace: argocd
syncPolicy:
automated:
prune: true
selfHeal: true
11 changes: 11 additions & 0 deletions argo/apps/150-argocd-ingress/templates/certificate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: argocd-cert
spec:
secretName: argocd-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- argocd.cloudfleet.platform.5ha.re
23 changes: 23 additions & 0 deletions argo/apps/150-argocd-ingress/templates/ingress.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: argocd-server-ingress
namespace: argocd
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: argocd.cloudfleet.platform.5ha.re
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: argocd-server
port:
number: 80
tls:
- secretName: argocd-tls
Empty file.
11 changes: 11 additions & 0 deletions argo/apps/180-zot/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: v2
name: zot-wrapper
description: A wrapper Helm chart to deploy zot registry with custom values and S3 storage.
version: 0.1.0 # Version of this wrapper chart
appVersion: "v2.1.4" # Corresponds to the zot version we deploy

dependencies:
- name: zot
version: "0.1.72" # The version of the zot chart to use
repository: http://zotregistry.dev/helm-charts # The repository of the dependency
# Values under the 'zot' key in our values.yaml will be passed to the subchart.
27 changes: 27 additions & 0 deletions argo/apps/180-zot/application.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: zot
namespace: argocd
# Add finalizer to ensure that Helm release is deleted before the app
finalizers:
- argocd.argoproj.io/resources-finalizer # Use domain-qualified finalizer
spec:
project: default
source:
# Source is the Git repository containing this Application manifest and the wrapper chart
repoURL: https://github.com/datamindedbe/playground-data-platform-stack.git
path: argo/apps/180-zot # Path to the zot wrapper chart directory
targetRevision: cloudfleet # Or your specific branch/tag
# Helm configuration for the wrapper chart
helm:
releaseName: zot # Helm release name
destination:
server: https://kubernetes.default.svc
namespace: services # Deploy zot into the services namespace
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true # Ensure the services namespace is created
11 changes: 11 additions & 0 deletions argo/apps/180-zot/templates/certificate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: zot-cert
spec:
secretName: zot-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- zot.cloudfleet.platform.5ha.re
26 changes: 26 additions & 0 deletions argo/apps/180-zot/templates/s3-credentials.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: zot-s3-credentials
spec:
refreshInterval: 300s # Refresh every 5 minutes
secretStoreRef:
name: vault-backend
kind: ClusterSecretStore
data:
- secretKey: AWS_ACCESS_KEY_ID # Standard AWS SDK environment variable
remoteRef:
key: platform/s3-credentials # Path in Vault
property: ACCESS_KEY_ID # Property to extract from the Vault secret
- secretKey: AWS_SECRET_ACCESS_KEY # Standard AWS SDK environment variable
remoteRef:
key: platform/s3-credentials # Path in Vault
property: SECRET_ACCESS_KEY # Property to extract from the Vault secret
- secretKey: AWS_REGION # Standard AWS SDK environment variable
remoteRef:
key: platform/s3-credentials # Path in Vault
property: REGION # Property to extract from the Vault secret
- secretKey: AWS_ENDPOINT_URL # Standard AWS SDK environment variable for custom endpoints
remoteRef:
key: platform/s3-credentials # Path in Vault
property: ENDPOINT # Property to extract from the Vault secret
Loading