이그레스 NAT 정책을 사용하여 Autopilot 클러스터에서 IP 매스커레이드 구성


이 페이지에서는 Google Kubernetes Engine(GKE) Autopilot 모드에서 생성된 클러스터를 구성하여 이그레스 NAT 정책에 IP 매스커레이드를 수행하는 방법을 설명합니다.

GKE Standard 모드의 IP 매스커레이딩에 대한 자세한 내용은 IP 매스커레이드 에이전트 구성을 참조하세요.

개요

GKE 이그레스 NAT 정책을 사용하면 Autopilot 클러스터의 IP 매스커레이드 동작을 구성할 수 있습니다.

GKE는 자동으로 생성되는 이그레스 NAT 정책 두 개를 지원합니다.

  • GKE에서 관리되는 정책으로 고정되어 있으며 수정할 수 없습니다.
  • 수정할 수 있는 기본 정책입니다.

이 페이지에서는 기본 정책을 수정하거나 이그레스 NAT 정책을 만들어 이그레스 NAT 정책을 수정 및 배포하는 방법을 보여줍니다. 이 페이지에서는 생성된 이그레스 NAT 정책을 삭제하는 방법도 보여줍니다.

이그레스 NAT 정책 동작에 대한 자세한 내용은 Autopilot 클러스터의 트래픽 매스커레이드 동작을 참조하세요.

시작하기 전에

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

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.
  • 버전 1.23.4-gke.1600 이상 또는 1.22.7-gke.1500 이상을 실행하는 Autopilot 클러스터가 있는지 확인합니다. 클러스터에서 GKE Dataplane V2를 사용 설정해야 합니다.

  • 클러스터에 워크로드가 실행 중인지 확인합니다. 자세한 내용은 리소스 요청 방법을 참조하세요.

이그레스 NAT 정책 상태 확인

Google Cloud CLI 도구를 사용하여 클러스터에서 이그레스 NAT 정책 커스텀 리소스 정의(CRD)를 실행 중인지 확인할 수 있습니다.

  1. 클러스터의 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials CLUSTER-NAME
    

    CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

  2. 이그레스 NAT 정책이 실행 중인지 확인합니다.

    kubectl get crds egressnatpolicies.networking.gke.io
    

    이그레스 NAT 정책이 실행 중인 경우 출력은 다음과 비슷합니다.

     NAME                                  CREATED AT
     egressnatpolicies.networking.gke.io   2022-03-16T21:05:43Z
    
  3. 생성된 이그레스 NAT 정책 목록을 가져옵니다.

    kubectl get egressnatpolicies
    

    출력은 다음과 비슷합니다.

      NAME             AGE
      default          44h
      gke-bbfa6c0e-1   44h
    

기존 기본 정책 수정

GKE는 자동으로 생성되는 두 가지 NAT 정책인 기본 정책GKE에서 관리 정책을 지원합니다. 기본 정책은 수정 가능하며 기본 비매스커레이드 대상을 구성합니다.

기존 기본 정책을 수정하려면 다음 단계를 수행하세요.

  1. 클러스터의 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials CLUSTER_NAME
    

    CLUSTER_NAME을 클러스터 이름으로 바꿉니다.

  2. 기본 이그레스 NAT 정책을 수정합니다.

    kubectl edit egressnatpolicies default
    
  3. NoSNAT 작업이 있는 대상을 CIDR 형식cidr 속성으로 추가하거나 삭제합니다.

      apiVersion: networking.gke.io/v1
      kind: EgressNATPolicy
      metadata:
        name: default
      spec:
        action: NoSNAT
        destinations:
        - cidr:  10.0.0.0/8
        - cidr:  172.16.0.0/12
        - cidr:  192.168.0.0/16
        - cidr:  240.0.0.0/4
        - cidr:  192.0.2.0/24
        - cidr:  198.51.100.0/24
        - cidr:  203.0.113.0/24
        - cidr:  100.64.0.0/10
        - cidr:  198.18.0.0/15
        - cidr:  192.0.0.0/24
        - cidr:  192.88.99.0/24
    

    패킷이 대상으로 전송되면 클러스터가 IP 주소 소스를 매스커레이드하지 않고 소스 포드 IP 주소를 보존합니다.

  4. Kubernetes 이벤트를 확인하여 수정된 기본 정책이 배포되었는지 확인합니다.

    kubectl get events
    

    출력은 다음과 비슷합니다.

    LAST SEEN   TYPE     REASON           OBJECT                    MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/default   Ensuring IP masquerade config for policy "default"
    

    변경사항이 적용되는 데 최대 3분이 걸릴 수 있습니다.

새 이그레스 NAT 정책 배포

NoSNAT 작업으로 새 대상을 추가하려면 다음 옵션 중 하나를 사용하면 됩니다.

기본 정책에 포함되지 않은 새 이그레스 NAT 정책을 만들려면 다음 단계를 수행하세요.

  1. 다음 매니페스트를 egress_nat_policy.yaml로 저장합니다.

    kind: EgressNATPolicy
    apiVersion: networking.gke.io/v1
    metadata:
      name: POLICY_NAME
    spec:
      action: NoSNAT
      destinations:
      - cidr: CIDR_1
      - cidr: CIDR_2
    

    다음을 바꿉니다.

    • POLICY_NAME: 새 정책의 이름입니다.
    • CIDR_1CIDR_2: CIDR 형식의 IP 주소 범위입니다. 패킷이 대상으로 전송되면 클러스터가 IP 주소 소스를 매스커레이드하지 않고 소스 포드 IP 주소를 보존합니다. CIDR이 3개 이상 필요하면 동일한 형식에 따라 destinations 목록에 항목을 더 추가합니다.
  2. 새 정책을 배포합니다.

    kubectl create -f egress_nat_policy.yaml
    
  3. Kubernetes 이벤트를 확인하여 정책이 배포되었는지 확인합니다.

    kubectl get events
    

    출력은 다음과 비슷합니다.

    LAST SEEN   TYPE     REASON           OBJECT                              MESSAGE
    13s         Normal   EnsuringPolicy   egressnatpolicy/mypolicy            Ensuring IP masquerade config for policy "mypolicy"
    

이그레스 NAT 정책 삭제

이그레스 NAT 정책을 완전히 삭제하려면 다음 명령어를 실행합니다.

kubectl delete egressnatpolicies POLICY_NAME

POLICY_NAME을 삭제할 정책의 이름으로 바꿉니다.

다음 단계