네트워크 정책
네트워크 정책 (Network Policy)
이 튜토리얼은 여러 클러스터에 영향을 미치는 NetworkPolicy를 정의하는 방법을 안내해요. Cluster Mesh에서 네트워크 보안 적용은 클러스터 경계를 자동으로 넘어가지만, 정책 자체는 각 클러스터에 직접 적용해야 한다는 점을 알아볼게요.
출처: Network Policy
본문
이 튜토리얼은 여러 클러스터에 영향을 미치는 NetworkPolicy를 정의하는 방법을 안내합니다.
사전 준비
정상 작동하는 Cluster Mesh 설정이 필요해요. 설정하려면 Cluster Mesh 설정하기 가이드를 따라주세요.
보안 정책
주소 지정과 네트워크 보안이 분리되어 있으므로, 네트워크 보안 적용은 자동으로 클러스터 경계를 넘어 확장됩니다. Kubernetes 보안 정책은 클러스터 간에 자동으로 배포되지 않으므로, 모든 클러스터에 CiliumNetworkPolicy 또는 NetworkPolicy 를 적용하는 것은 여러분의 책임이라는 점을 기억하세요.
클러스터 간 특정 통신 허용
다음 정책은 특정 Pod가 두 클러스터 사이에서 통신하도록 허용하는 방법을 보여 줍니다. 클러스터 이름은 --cluster-name 에이전트 옵션 또는 cluster-name ConfigMap 옵션으로 부여된 이름을 말해요.
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "allow-cross-cluster"
spec:
description: "Allow x-wing to be deployed in the local cluster to contact rebel-base in cluster2"
endpointSelector:
matchLabels:
name: x-wing
egress:
- toEndpoints:
- matchLabels:
name: rebel-base
io.cilium.k8s.policy.cluster: cluster2
정책은 하나 또는 여러 클러스터를 명시적으로 대상으로 하지 않는 한 로컬 클러스터의 엔드포인트만 자동으로 선택합니다.
Warning
Cilium v1.18 이하에서는 정책이 기본적으로 모든 클러스터의 엔드포인트를 선택했습니다. 이 변경 사항에 대한 자세한 내용은 policy-default-local-cluster 변경 준비를 참고하세요.
다음 정책은 Pod가 모든 클러스터와 통신하도록 명시적으로 허용하는 방법을 보여 줍니다.
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "allow-cross-cluster-any"
spec:
description: "Allow x-wing to be deployed in the local cluster to contact rebel-base in any cluster"
endpointSelector:
matchLabels:
name: x-wing
egress:
- toEndpoints:
- matchLabels:
name: rebel-base
matchExpressions:
- key: io.cilium.k8s.policy.cluster
operator: Exists