이 페이지에서는 이제 지원 중단된 프로젝트 기본 이그레스 NAT 구성을 설명합니다. 이 구성은 워크로드가 조직 외부로 연결되도록 지원하는 데 사용할 수 있습니다. 이 페이지에는 권장 솔루션인 Cloud NAT로 마이그레이션하는 방법에 관한 안내도 포함되어 있습니다.
개요
이 페이지에서는 워크로드가 조직 외부로 나갈 수 있도록 프로젝트의 가상 머신 (VM) 또는 포드에서 (지원 중단된) 프로젝트 기본 이그레스 NAT 구성 옵션을 사용하여 수행해야 하는 이그레스 연결 작업을 설명합니다.
이 절차에서는 아웃바운드 트래픽을 명시적으로 사용 설정하고 워크로드가 조직 외부와 통신할 수 있도록 배포에 필수 라벨을 추가하는 방법을 보여줍니다.
기본적으로 에어 갭이 적용된 Google Distributed Cloud (GDC)는 프로젝트의 워크로드가 조직 외부로 나가는 것을 차단합니다. 플랫폼 관리자 (PA)가 프로젝트의 데이터 유출 방지 기능을 사용 중지한 경우 워크로드가 조직을 종료할 수 있습니다. PA는 프로젝트에 networking.gdc.goog/enable-default-egress-allow-to-outside-the-org: "true" 라벨을 연결하여 이 작업을 실행할 수 있습니다. 데이터 유출 방지 기능을 사용 중지하는 것 외에도 애플리케이션 운영자 (AO)는 포드의 워크로드에 라벨 egress.networking.gke.io/enabled:
true를 추가하여 해당 포드의 이그레스 연결을 사용 설정해야 합니다. 프로젝트에 잘 알려진 IP 주소를 할당하고 사용하면 조직에서 나가는 트래픽에 소스 네트워크 주소 변환 (NAT)이 실행됩니다.
포드 또는 VM의 워크로드에서 이그레스 연결을 관리할 수 있습니다.
포드의 워크로드에서 아웃바운드 트래픽 관리
이그레스 연결을 위해 포드에서 워크로드를 구성하려면 먼저 프로젝트에 데이터 유출 방지가 사용 중지되어 있는지 확인해야 합니다.
그런 다음 egress.networking.gke.io/enabled: true 라벨이 포드에 추가되었는지 확인합니다. Deployment 또는 Daemonset 생성자와 같은 상위 수준 생성자를 사용하여 포드 집합을 관리하는 경우 해당 사양에서 포드 라벨을 구성해야 합니다.
다음 예에서는 매니페스트 파일에서 Deployment를 만드는 방법을 보여줍니다.
샘플 파일에는 프로젝트에서 아웃바운드 트래픽을 명시적으로 사용 설정하는 labels 필드의 egress.networking.gke.io/enabled: true 값이 포함되어 있습니다. 이 라벨은 배포의 각 포드에 추가되며 포드의 워크로드가 조직을 종료할 수 있도록 합니다.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: DEPLOYMENT_NAME
spec:
replicas: NUMBER_OF_REPLICAS
selector:
matchLabels:
run: APP_NAME
template:
metadata:
labels: # The labels given to each pod in the deployment, which are used
# to manage all pods in the deployment.
run: APP_NAME
egress.networking.gke.io/enabled: true
spec: # The pod specification, which defines how each pod runs in the deployment.
containers:
- name: CONTAINER_NAME
image: CONTAINER_IMAGE
EOF
다음을 바꿉니다.
USER_CLUSTER_KUBECONFIG: 컨테이너 워크로드를 배포할 사용자 클러스터의 kubeconfig 파일입니다.DEPLOYMENT_NAME: 컨테이너 워크로드를 배포할 사용자 클러스터의 kubeconfig 파일입니다.APP_NAME: 배포 내에서 실행할 애플리케이션의 이름입니다.NUMBER_OF_REPLICAS: 배포에서 관리하는 복제된Pod객체 수입니다.CONTAINER_NAME: 컨테이너의 이름.CONTAINER_IMAGE: 컨테이너 이미지의 이름입니다.REGISTRY_PATH/hello-app:1.0와 같은 컨테이너 레지스트리 경로와 이미지 버전을 포함해야 합니다.
예를 들면 다음과 같습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
egress.networking.gke.io/enabled: true
spec:
containers:
- name: hello-app
image: REGISTRY_PATH/hello-app:1.0
VM의 워크로드에서 아웃바운드 트래픽 관리
이그레스 연결을 위해 VM에서 워크로드를 구성하려면 VM 구성에 GDC 콘솔을 사용하거나 VirtualMachineExternalAccess 리소스를 만들면 됩니다. 데이터 전송을 위해 외부 액세스 권한이 있는 VM을 사용 설정하는 방법은 VM에 연결 섹션의 외부 액세스 사용 설정을 참고하세요.
Cloud NAT로 마이그레이션
버전 1.15에서 Cloud NAT를 사용할 수 있게 되면서 프로젝트별 기본 프로젝트 이그레스 NAT 구성이 지원 중단됩니다. 사용자는 기본 프로젝트 이그레스 NAT 구성에서 Cloud NAT로 이그레스 구성을 이전하는 것이 좋습니다.
기본 프로젝트 이그레스 NAT와 Cloud NAT는 서로 호환되지 않습니다. 즉, 지정된 포드 또는 VM 엔드포인트는 둘 중 하나만 사용할 수 있습니다. 한 구성에서 다른 구성으로 엔드포인트를 이전하려면 한 구성에서 엔드포인트를 사용 중지한 다음 다른 구성에서 사용 설정해야 합니다.
마이그레이션을 시작하려면 마이그레이션할 엔드포인트에서 이전 구성을 사용 중지합니다. 이 작업을 실행하는 두 가지 방법은 다음과 같습니다.
- 전체 프로젝트에 대해 프로젝트 기본 이그레스 NAT 사용 중지: 프로젝트에 라벨
networking.gdc.goog/allocate-egress-ip: "false"를 할당하여 프로젝트에 있는 모든 엔드포인트에 대해 프로젝트 기본 이그레스 NAT를 사용 중지합니다. - 엔드포인트별 프로젝트 기본 출구 NAT 사용 중지: 포드 또는 VM에서
egress.networking.gke.io/enabled:"true"라벨을 삭제하여 특정 포드 또는 VM 엔드포인트의 프로젝트 기본 출구 NAT를 사용 중지합니다.
마이그레이션을 계속하려면 각 엔드포인트가 기본 출구 NAT에서 삭제될 때 선택한 게이트웨이의 라벨 선택기와 일치하는 라벨을 엔드포인트에 추가하여 Cloud NAT 게이트웨이에 추가할 수 있습니다.
Cloud NAT 설정 방법에 대한 안내는 Cloud NAT 및 다음 페이지를 참고하세요.
이그레스 IP 추적
기본 이그레스 NAT를 사용하면 이그레스 트래픽을 NAT하는 데 사용되는 이그레스 IP가 프로젝트 상태에 포함됩니다. Cloud NAT를 사용하면 프로젝트 객체에 이그레스 IP가 포함되지 않습니다. 대신 사용자는 게이트웨이에 할당된 서브넷을 나열하여 Cloud NAT 게이트웨이에서 사용되는 IP를 나열할 수 있습니다.