|
26 | 26 | <img alt="LoadBalancer" src="https://img.shields.io/badge/LB-MetalLB%20%7C%20NSX%20ALB%20%7C%20kube--vip-0080FF"> |
27 | 27 | </p> |
28 | 28 |
|
29 | | -Deploys the **official Traefik chart** (vendored) exposed via a **LoadBalancer**, |
30 | | -with the Traefik **dashboard authenticated against Keycloak** (oauth2-proxy + |
31 | | -ForwardAuth) and **restricted by role** (`traefik-admin`). One umbrella Helm |
32 | | -chart, **portable across on-prem / air-gapped Kubernetes distributions** — |
33 | | -**OpenShift, Rancher RKE2, k3s, kubeadm, VMware Tanzu/TKG** — driven by a small |
34 | | -set of **feature flags** with fail-fast validation of impossible combinations. |
| 29 | +A single **umbrella Helm chart** that deploys the **official Traefik chart** |
| 30 | +(vendored) behind a **LoadBalancer**, with the Traefik **dashboard authenticated |
| 31 | +against Keycloak** (oauth2-proxy + ForwardAuth) and **restricted by role** |
| 32 | +(`traefik-admin`). It is **portable across on-prem / air-gapped Kubernetes |
| 33 | +distributions** — **OpenShift, Rancher RKE2, k3s, kubeadm, VMware Tanzu/TKG** — |
| 34 | +driven by a small set of **feature flags**, with **fail-fast validation** that |
| 35 | +rejects impossible combinations at `helm template` time instead of shipping a |
| 36 | +broken deployment. |
| 37 | + |
| 38 | +Rather than a per-distribution fork, one core composes along a few independent |
| 39 | +axes: |
| 40 | + |
| 41 | +- **Distribution** — `platform`: OpenShift (SCC-aware UID handling) · RKE2 · k3s · |
| 42 | + kubeadm · generic. ([§2](#2-how-portability-works-orthogonal-axes), [§4](#4-supported-platforms--presets)) |
| 43 | +- **Load balancer** — `loadBalancer.backend`: **MetalLB · NSX ALB (Avi) · |
| 44 | + kube-vip · Cilium** LB-IPAM · generic. ([§4](#4-supported-platforms--presets)) |
| 45 | +- **Secrets** — `secret.mode`: pre-created (Sealed Secrets) · inline (dev) · |
| 46 | + **External Secrets Operator + HashiCorp Vault**. ([§10](#10-secrets-management)) |
| 47 | +- **Keycloak TLS trust** — `caTrust.mode`: none · OpenShift CA injector · |
| 48 | + custom CA ConfigMap · insecure (test). ([§9](#9-feature-flag-reference)) |
| 49 | +- **Network** — optional **NetworkPolicies** for default-deny CNIs (Calico / |
| 50 | + Cilium); storage (**CSI**) is not applicable — the workload is stateless. |
| 51 | + ([§11](#11-cni--csi)) |
| 52 | +- **Air-gap** — vendored Traefik chart (no `traefik.github.io` pull) + internal |
| 53 | + registry-mirror overrides for every image. ([§12](#12-air-gapped--disconnected)) |
| 54 | +- **Delivery** — imperative (`install.sh`) or **GitOps** (single multi-source |
| 55 | + ArgoCD Application). ([§8](#8-step-by-step-install), [§16](#16-gitops-with-argocd)) |
35 | 56 |
|
36 | 57 | > This is the multi-distribution sibling of |
37 | 58 | > [`traefik-keycloak-openshift-gitops`](https://github.com/nubenetes/traefik-keycloak-openshift-gitops) |
|
0 commit comments