32 lines
1.7 KiB
Markdown
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 전체 허용을 기본값으로 만들지 않습니다.
|