Switch to Traefik & update everything #1

Merged
sebastian.heusser merged 9 commits from feat/update-2026-01 into main 2026-01-20 12:52:01 +00:00
18 changed files with 108 additions and 78 deletions
Showing only changes of commit cc0566af21 - Show all commits

View file

@ -25,18 +25,18 @@ cd $(git rev-parse --show-toplevel)/module3/k8s/
minikube start
minikube tunnel
# Install ingress-nginx and nats with helm
# Install traefik and nats with helm
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add nats https://nats-io.github.io/k8s/helm/charts/
helm repo add nats https://nats-io.github.io/k8s/helm/charts/
helm repo add traefik https://traefik.github.io/charts
helm repo update
helm upgrade \
ingress-nginx ingress-nginx/ingress-nginx \
traefik traefik/traefik \
--install \
--namespace ingress-nginx \
--namespace traefik \
--create-namespace \
--version 4.12.1 \
--values helm/ingress-nginx/values.yaml
--version 38.0.2 \
--values helm/traefik/values.yaml
helm upgrade \
--install \
nats nats/nats \
@ -52,7 +52,7 @@ kubectl apply -k kustomize/postgres
kubectl apply -k kustomize/scrumlr
# Use external IP of your Ingress Controller in your Browser to open Scrumlr
kubectl get services --namespace ingress-nginx ingress-nginx-controller --output jsonpath='{.status.loadBalancer.ingress[0].ip}'
kubectl get services --namespace traefik traefik --output jsonpath='{.status.loadBalancer.ingress[0].ip}'
# Destroy Cluster
minikube stop

View file

@ -1,15 +0,0 @@
# ingress-nginx
Docs: https://kubernetes.github.io/ingress-nginx/
Github Repo: https://github.com/kubernetes/ingress-nginx
```sh
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx --force-update
helm upgrade \
ingress-nginx ingress-nginx/ingress-nginx \
--install \
--namespace ingress-nginx \
--create-namespace \
--version 4.12.1 \
--values values.yaml
```

View file

@ -1 +0,0 @@
# Note: This file is intentionally empty and is more of a placeholder to ensure consistency.

View file

@ -0,0 +1,15 @@
# traefik
Docs: https://doc.traefik.io/traefik/setup/kubernetes/
Github Repo: https://github.com/traefik/traefik/
```sh
helm repo add traefik https://traefik.github.io/charts/ --force-update
helm upgrade \
traefik traefik/traefik \
--install \
--namespace traefik \
--create-namespace \
--version 38.0.2 \
--values values.yaml
```

View file

@ -0,0 +1,8 @@
# HA deployment
deployment:
replicas: 3
# Enable logs for better debugging
logs:
access:
enabled: true

View file

@ -5,13 +5,8 @@ metadata:
labels:
app.kubernetes.io/name: "scrumlr"
app.kubernetes.io/part-of: "scrumlr"
annotations:
nginx.ingress.kubernetes.io/limit-connections: "100"
# Websocket optimization https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/#websockets
nginx.ingress.kubernetes.io/proxy-send-timeout: "7200"
nginx.ingress.kubernetes.io/proxy-read-timeout: "7200"
spec:
ingressClassName: nginx
ingressClassName: traefik
rules:
- http:
paths:

View file

@ -10,4 +10,4 @@ spec:
solvers:
- http01:
ingress:
ingressClassName: nginx
ingressClassName: traefik

View file

@ -1,15 +0,0 @@
# ingress-nginx
Docs: https://kubernetes.github.io/ingress-nginx/
Github Repo: https://github.com/kubernetes/ingress-nginx
```sh
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx --force-update
helm upgrade \
ingress-nginx ingress-nginx/ingress-nginx \
--install \
--namespace ingress-nginx \
--create-namespace \
--version 4.12.1 \
--values values.yaml
```

View file

@ -1 +0,0 @@
# Note: This file is intentionally empty and is more of a placeholder to ensure consistency.

View file

@ -0,0 +1,15 @@
# traefik
Docs: https://doc.traefik.io/traefik/setup/kubernetes/
Github Repo: https://github.com/traefik/traefik/
```sh
helm repo add traefik https://traefik.github.io/charts/ --force-update
helm upgrade \
traefik traefik/traefik \
--install \
--namespace traefik \
--create-namespace \
--version 38.0.2 \
--values values.yaml
```

View file

@ -0,0 +1,17 @@
# HA deployment
deployment:
replicas: 3
# Enable logs for better debugging
logs:
access:
enabled: true
# Spread pods better between nodes
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: '{{ template "traefik.name" . }}'

View file

@ -6,13 +6,9 @@ metadata:
app.kubernetes.io/name: "scrumlr"
app.kubernetes.io/part-of: "scrumlr"
annotations:
nginx.ingress.kubernetes.io/limit-connections: "100"
# Websocket optimization https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/#websockets
nginx.ingress.kubernetes.io/proxy-send-timeout: "7200"
nginx.ingress.kubernetes.io/proxy-read-timeout: "7200"
cert-manager.io/cluster-issuer: "letsencrypt-production"
spec:
ingressClassName: nginx
ingressClassName: traefik
tls:
- hosts:
- CHANGE-ME.domain.tld

View file

@ -10,4 +10,4 @@ spec:
solvers:
- http01:
ingress:
ingressClassName: nginx
ingressClassName: traefik

View file

@ -1,15 +0,0 @@
# ingress-nginx
Docs: https://kubernetes.github.io/ingress-nginx/
Github Repo: https://github.com/kubernetes/ingress-nginx
```sh
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx --force-update
helm upgrade \
ingress-nginx ingress-nginx/ingress-nginx \
--install \
--namespace ingress-nginx \
--create-namespace \
--version 4.12.1 \
--values values.yaml
```

View file

@ -1,5 +0,0 @@
controller:
metrics:
enabled: true
serviceMonitor:
enabled: true

View file

@ -0,0 +1,15 @@
# traefik
Docs: https://doc.traefik.io/traefik/setup/kubernetes/
Github Repo: https://github.com/traefik/traefik/
```sh
helm repo add traefik https://traefik.github.io/charts/ --force-update
helm upgrade \
traefik traefik/traefik \
--install \
--namespace traefik \
--create-namespace \
--version 38.0.2 \
--values values.yaml
```

View file

@ -0,0 +1,25 @@
# HA deployment
deployment:
replicas: 3
# Enable logs for better debugging
logs:
access:
enabled: true
# Spread pods better between nodes
topologySpreadConstraints:
- maxSkew: 1
topologyKey: kubernetes.io/hostname
whenUnsatisfiable: ScheduleAnyway
labelSelector:
matchLabels:
app.kubernetes.io/name: '{{ template "traefik.name" . }}'
# Enable metrics export and collection (serviceMonitor requires prometheus-operator-crds and alloy)
metrics:
prometheus:
service:
enabled: true
serviceMonitor:
enabled: true

View file

@ -6,13 +6,9 @@ metadata:
app.kubernetes.io/name: "scrumlr"
app.kubernetes.io/part-of: "scrumlr"
annotations:
nginx.ingress.kubernetes.io/limit-connections: "100"
# Websocket optimization https://kubernetes.github.io/ingress-nginx/user-guide/miscellaneous/#websockets
nginx.ingress.kubernetes.io/proxy-send-timeout: "7200"
nginx.ingress.kubernetes.io/proxy-read-timeout: "7200"
cert-manager.io/cluster-issuer: "letsencrypt-production"
spec:
ingressClassName: nginx
ingressClassName: traefik
tls:
- hosts:
- CHANGE-ME.domain.tld