Files

1.7 KiB

Lab networking

Namespace mntgitops/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/1610.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 전체 허용을 기본값으로 만들지 않습니다.