diff --git a/module3/README.md b/module3/README.md index 77bddfe..84685d8 100644 --- a/module3/README.md +++ b/module3/README.md @@ -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 diff --git a/module3/k8s/helm/ingress-nginx/README.md b/module3/k8s/helm/ingress-nginx/README.md deleted file mode 100644 index dd8e313..0000000 --- a/module3/k8s/helm/ingress-nginx/README.md +++ /dev/null @@ -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 -``` diff --git a/module3/k8s/helm/ingress-nginx/values.yaml b/module3/k8s/helm/ingress-nginx/values.yaml deleted file mode 100644 index 6874239..0000000 --- a/module3/k8s/helm/ingress-nginx/values.yaml +++ /dev/null @@ -1 +0,0 @@ -# Note: This file is intentionally empty and is more of a placeholder to ensure consistency. diff --git a/module3/k8s/helm/traefik/README.md b/module3/k8s/helm/traefik/README.md new file mode 100644 index 0000000..d62fbdd --- /dev/null +++ b/module3/k8s/helm/traefik/README.md @@ -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 +``` diff --git a/module3/k8s/helm/traefik/values.yaml b/module3/k8s/helm/traefik/values.yaml new file mode 100644 index 0000000..34a0c1a --- /dev/null +++ b/module3/k8s/helm/traefik/values.yaml @@ -0,0 +1,8 @@ +# HA deployment +deployment: + replicas: 3 + +# Enable logs for better debugging +logs: + access: + enabled: true diff --git a/module3/k8s/kustomize/scrumlr/ingress-scrumlr.yaml b/module3/k8s/kustomize/scrumlr/ingress-scrumlr.yaml index 06c4342..f231f62 100644 --- a/module3/k8s/kustomize/scrumlr/ingress-scrumlr.yaml +++ b/module3/k8s/kustomize/scrumlr/ingress-scrumlr.yaml @@ -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: diff --git a/module5/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml b/module5/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml index 51a6d6b..9336b53 100644 --- a/module5/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml +++ b/module5/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml @@ -10,4 +10,4 @@ spec: solvers: - http01: ingress: - ingressClassName: nginx + ingressClassName: traefik diff --git a/module5/k8s/helm/ingress-nginx/README.md b/module5/k8s/helm/ingress-nginx/README.md deleted file mode 100644 index dd8e313..0000000 --- a/module5/k8s/helm/ingress-nginx/README.md +++ /dev/null @@ -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 -``` diff --git a/module5/k8s/helm/ingress-nginx/values.yaml b/module5/k8s/helm/ingress-nginx/values.yaml deleted file mode 100644 index 6874239..0000000 --- a/module5/k8s/helm/ingress-nginx/values.yaml +++ /dev/null @@ -1 +0,0 @@ -# Note: This file is intentionally empty and is more of a placeholder to ensure consistency. diff --git a/module5/k8s/helm/traefik/README.md b/module5/k8s/helm/traefik/README.md new file mode 100644 index 0000000..d62fbdd --- /dev/null +++ b/module5/k8s/helm/traefik/README.md @@ -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 +``` diff --git a/module5/k8s/helm/traefik/values.yaml b/module5/k8s/helm/traefik/values.yaml new file mode 100644 index 0000000..2e6b6f5 --- /dev/null +++ b/module5/k8s/helm/traefik/values.yaml @@ -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" . }}' diff --git a/module5/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example b/module5/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example index 7a832d7..f6168af 100644 --- a/module5/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example +++ b/module5/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example @@ -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 diff --git a/module6/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml b/module6/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml index 51a6d6b..9336b53 100644 --- a/module6/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml +++ b/module6/k8s/helm/cert-manager/clusterissuer-letsencrypt-production.yaml @@ -10,4 +10,4 @@ spec: solvers: - http01: ingress: - ingressClassName: nginx + ingressClassName: traefik diff --git a/module6/k8s/helm/ingress-nginx/README.md b/module6/k8s/helm/ingress-nginx/README.md deleted file mode 100644 index dd8e313..0000000 --- a/module6/k8s/helm/ingress-nginx/README.md +++ /dev/null @@ -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 -``` diff --git a/module6/k8s/helm/ingress-nginx/values.yaml b/module6/k8s/helm/ingress-nginx/values.yaml deleted file mode 100644 index ecca08c..0000000 --- a/module6/k8s/helm/ingress-nginx/values.yaml +++ /dev/null @@ -1,5 +0,0 @@ -controller: - metrics: - enabled: true - serviceMonitor: - enabled: true diff --git a/module6/k8s/helm/traefik/README.md b/module6/k8s/helm/traefik/README.md new file mode 100644 index 0000000..d62fbdd --- /dev/null +++ b/module6/k8s/helm/traefik/README.md @@ -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 +``` diff --git a/module6/k8s/helm/traefik/values.yaml b/module6/k8s/helm/traefik/values.yaml new file mode 100644 index 0000000..bc1b334 --- /dev/null +++ b/module6/k8s/helm/traefik/values.yaml @@ -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 diff --git a/module6/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example b/module6/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example index 7a832d7..f6168af 100644 --- a/module6/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example +++ b/module6/k8s/kustomize/scrumlr/ingress-scrumlr.yaml.example @@ -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