Files

64 lines
2.0 KiB
Markdown

# Lab ingress and Traefik
K3s packaged Traefik은 유지하며
`gitops/platform/traefik/overlays/lab/helmchartconfig.yaml`
`HelmChartConfig`로만 설정합니다.
금지:
- `/var/lib/rancher/k3s/server/manifests/traefik.yaml` 직접 수정
- health/metrics/admin endpoint 공개
- 인증 없는 management ingress
- lab HTTP/self-signed 구성을 staging/prod로 승격
## Request path
```text
client
-> Traefik Ingress
-> ForwardAuth Middleware
-> oauth2-proxy
-> Keycloak authorization endpoint
-> oauth2-proxy callback/session
-> auth-server
```
auth-server는 ForwardAuth 결과만 신뢰하지 않고 Keycloak JWT를 다시 검증합니다.
Ingress 인증과 API authorization은 서로 다른 경계입니다.
## Source paths
| Path | Role |
| --- | --- |
| `gitops/platform/traefik/overlays/lab` | K3s HelmChartConfig와 공통 security headers |
| `gitops/platform/forward-auth/component` | oauth2-proxy, Middleware, protected ingress patch |
| `gitops/platform/forward-auth/overlays/lab` | component의 lab composition |
| `gitops/apps/auth-server/overlays/lab` | auth-server ingress와 issuer/JWK setting |
| `gitops/platform/keycloak/overlays/lab` | Keycloak public/admin ingress split |
| `gitops/apps/keycloak-realm-import/overlays/lab` | versioned realm/client import |
## Apply boundary
개별 ingress 디렉터리를 임의 순서로 적용하지 않습니다.
```bash
export KUBE_CONTEXT_LAB='<expected-context>'
bash scripts/bin/bootstrap.sh lab
```
bootstrap은 operator와 Keycloak 준비, realm import 완료 후 auth-server를
적용합니다.
## Lab DNS/TLS
현재 host 값은 lab 검증용이며 공개 서비스 계약이 아닙니다. 브라우저 E2E를
하려면 운영자가 DNS/hosts와 인증서 trust를 별도로 맞춰야 합니다.
staging/prod는 다음이 준비된 뒤 별도 overlay로 만듭니다.
- 실제 DNS ownership
- cert-manager Issuer/Certificate
- TLS redirect와 HSTS
- 신뢰 가능한 oauth2-proxy OIDC issuer
- registry ingress의 인증·TLS