Files
project-infra/docs/networking.md
T

32 lines
1.7 KiB
Markdown

# Lab networking
Namespace `mnt``gitops/policies/baseline`에서 ingress와 egress를 모두 default-deny로
시작하고 kube-dns UDP/TCP 53만 공통 허용합니다.
| Owner | Allowed traffic |
| --- | --- |
| `gitops/apps/auth-server` | Traefik -> auth-server:8080; auth-server -> PostgreSQL:5432, Keycloak:8080 |
| `gitops/apps/auth-migration` | migration Job -> PostgreSQL:5432 |
| `gitops/apps/identity-postgres` | Keycloak, auth-server, migration Job -> PostgreSQL:5432 |
| `gitops/platform/minio` | MinIO peer; MinIO Operator; approved in-namespace clients |
| `gitops/platform/keycloak` | Traefik/auth-server ingress; PostgreSQL egress; Keycloak peer |
| `gitops/platform/registry` | Traefik/in-namespace ingress; MinIO egress |
| `gitops/platform/vault` | VSO controller ingress; kube-apiserver TokenReview egress |
| `gitops/platform/keycloak-operator` | kube-apiserver egress |
NetworkPolicy CIDR `10.43.0.0/16``10.208.141.0/24`는 lab K3s의 service
CIDR/control-plane subnet 계약입니다. 클러스터 설정이 다르면 overlay에서
명시적으로 변경해야 합니다. staging/prod로 복사하지 않습니다.
정책 추가 순서:
1. source/destination workload label과 namespace를 확인합니다.
2. 실제 named port와 protocol을 확인합니다.
3. 가장 좁은 pod/namespace selector로 ingress와 egress 양쪽을 작성합니다.
4. 해당 stage를 렌더하고 정적 검증합니다.
5. server-side dry-run과 diff 후 적용합니다.
6. 허용 요청과 차단되어야 할 요청을 모두 확인합니다.
`ipBlock`은 Kubernetes API처럼 selector로 표현할 수 없는 lab 경계에서만
사용합니다. 넓은 RFC1918 CIDR 전체 허용을 기본값으로 만들지 않습니다.