다중 네트워크 네트워크 정책 설정


이 페이지에서는 지정된 포드 네트워크에 특별히 적용되는 다중 네트워크의 네트워크 정책을 구성하여 포드 수준에서 포드와 서비스 간의 트래픽 흐름을 제어하는 방법을 설명합니다.

클러스터 관리자는 포드 수준에서 방화벽 규칙을 사용하여 포드 및 서비스 간 트래픽 흐름을 제어하도록 다중 네트워크의 네트워크 정책을 구성할 수 있습니다. 클러스터 내에서 네트워크 보안 및 트래픽 제어를 개선할 수 있습니다.

다중 네트워크의 네트워크 정책의 작동 방식을 이해하려면 포드 네트워크에서 네트워크 정책의 작동 방식을 참조하세요.

요구사항

다중 네트워크의 네트워크 정책을 사용하려면 다음 요구사항을 고려하세요.

  • Google Cloud CLI 버전 459 이상
  • 다음 버전 중 하나를 실행하는 GKE 클러스터가 있어야 합니다.
    • 1.28.5-gke.1293000 이상
    • 1.29.0-gke.1484000 이상
  • 클러스터가 GKE Dataplane V2를 사용해야 합니다.

제한사항

FQDN 네트워크 정책 및 CiliumClusterWide 네트워크 정책이 지원되지 않음: 여러 네트워크에 연결된 포드에서 FQDN 네트워크 정책 및 CiliumClusterWide 네트워크 정책을 사용하는 경우 이 정책은 정책이 적용되는 항목뿐만 아니라 포드의 모든 연결에 영향을 줍니다.

가격 책정

다음 Network Function Optimizer(NFO) 기능은 GKE Enterprise에서 사용 설정된 프로젝트에 포함된 클러스터에서만 지원됩니다.

Google Kubernetes Engine(GKE) Enterprise 버전 사용 설정 시 적용되는 요금을 알아보려면 GKE Enterprise 가격 책정을 참조하세요.

다중 네트워크의 네트워크 정책 구성

다중 네트워크의 네트워크 정책을 사용하려면 다음을 수행합니다.

  1. 다중 네트워크가 사용 설정된 GKE가 있는 클러스터를 만듭니다.
  2. 노드 풀포드 네트워크를 만듭니다.
  3. 포드 네트워크를 참조합니다.
  4. 적용할 네트워크 정책을 만듭니다. 워크로드에 사용되는 것과 동일한 포드 네트워크를 참조해야 합니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

네트워크 정책 만들기

  1. 워크로드와 동일한 포드 네트워크에 규칙을 적용하는 네트워크 정책을 만들려면 네트워크 정책 정의에서 특정 포드 네트워크를 참조합니다.

  2. 선택한 인그레스 트래픽 규칙과 대상 포드를 라벨 또는 기타 선택기에 따라 정의하려면 표준 네트워크 정책을 만듭니다.

    다음 샘플 매니페스트를 sample-ingress-network-policy1.yaml로 저장합니다.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation for network selection
    spec:
      podSelector:
        matchLabels:
          app: test-app-2  # Selects pods with the label "app: test-app-2"
      policyTypes:
      - Ingress  # Specifies the policy applies only to incoming traffic
      ingress:
      - from:  # Allow incoming traffic only from...
        - podSelector:
            matchLabels:
              app: test-app-1  # ...pods with the label "app: test-app-1"
    
  3. sample-ingress-network-policy1.yaml 매니페스트를 적용합니다.

    kubectl apply -f sample-ingress-network-policy1.yaml
    
  4. 선택한 이그레스 트래픽 규칙과 대상 포드를 라벨 또는 기타 선택기에 따라 정의하려면 표준 네트워크 정책을 만듭니다.

    다음 샘플 매니페스트를 sample-egress-network-policy2.yaml로 저장합니다.

    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: sample-network-policy-2
      namespace: default
      annotations:
        networking.gke.io/network: blue-pod-network  # GKE-specific annotation (optional)
    spec:
      podSelector:
        matchLabels:
          app: test-app-2
      policyTypes:
        - Egress  # Only applies to outgoing traffic
      egress:
        - to:
            - podSelector:
                matchLabels:
                  app: test-app-3
    
  5. sample-egress-network-policy2.yaml 매니페스트를 적용합니다.

    kubectl apply -f sample-egress-network-policy2.yaml
    

다중 네트워크의 네트워크 정책 문제 해결

네트워크 정책에 문제가 발생하면 특정 포드 네트워크에 적용되는지 여부에 관계없이 다음 명령어를 실행하여 문제를 진단하고 해결할 수 있습니다.

  1. kubectl get networkpolicy: 모든 네트워크 정책 객체 및 관련 정보를 나열합니다.
  2. iptables-save: 특정 노드의 모든 IP 주소 테이블 체인을 검색하고 나열합니다. 루트 노드에서 이 명령어를 실행해야 합니다.
  3. cilium bpf policy get <endpoint-id>: 각 엔드포인트의 정책 맵에서 허용되는 IP 주소를 검색하고 나열합니다.
  4. cilium policy selectors: ID와 이를 선택한 관련 정책을 출력합니다.
  5. cilium identity list: ID와 IP 주소의 매핑을 보여줍니다.

다음 단계