네트워크 태그를 사용해 노드에 방화벽 규칙 적용하기


이 페이지에서는 실행 중인 워크로드를 중단하지 않고 Google Kubernetes Engine(GKE) 클러스터의 노드에 네트워크 태그를 동적으로 적용하는 방법을 보여줍니다.

네트워크 태그 정보

네트워크 태그는 방화벽 규칙과 경로를 특정 VM 인스턴스에 적용할 수 있는 Compute Engine 가상 머신(VM)의 메타데이터입니다. GKE에서 네트워크 태그를 사용하여 클러스터의 노드에 VPC 방화벽 규칙 또는 경로를 적용할 수 있습니다.

GKE API를 사용하면 실행 중인 워크로드를 중단하지 않고 GKE 클러스터에서 네트워크 태그를 적용하고 업데이트할 수 있습니다. 지정한 네트워크 태그는 GKE가 자동으로 프로비저닝하는 모든 새 노드에도 적용됩니다.

네트워크 태그 대신 태그 사용

네트워크 태그는 Identity and Access Management 액세스 제어가 적용되지 않는 간단한 문자열입니다. GKE API에서 노드에 액세스할 수 있는 사용자는 해당 노드에 네트워크 태그를 추가할 수 있습니다.

GKE 버전 1.28 이상을 사용하는 경우 방화벽 지정이 포함된 태그를 사용하여 리전 또는 전역 네트워크 방화벽 정책을 적용해 VPC 방화벽 규칙의 기능을 개선하는 것이 좋습니다.

태그는 Compute Engine VM에 연결하는 키-값 쌍입니다. IAM을 사용하여 특정 태그와 상호작용할 수 있는 사용자를 제어할 수 있습니다.

네트워크 태그를 적용하는 명령줄 옵션

다음 표에서는 클러스터에 네트워크 태그를 적용하도록 Google Cloud CLI를 사용해 지정할 수 있는 플래그와 사용 사례를 설명합니다.

플래그 작업 모드 수준 설명
--autoprovisioning-network-tags
  • 오토파일럿
  • 표준
클러스터

지정된 네트워크 태그를 모든 Autopilot 노드와 모든 자동 프로비저닝된 Standard 노드 풀에 적용합니다.

--tags
  • 표준
노드 풀

특정 Standard 노드 풀에 네트워크 태그를 수동으로 적용합니다.

제한사항

--autoprovisioning-network-tags를 사용하면 --tags를 사용하여 자동 프로비저닝된 Standard 노드 풀의 네트워크 태그를 업데이트할 수 없습니다.

자동 프로비저닝된 노드 풀에 --autoprovisioning-network-tags를 사용하고 수동으로 생성된 노드 풀에만 --tags를 사용하는 것이 좋습니다.

시작하기 전에

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

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

새 클러스터에 네트워크 태그 추가

새 클러스터를 만들 때 네트워크 태그를 추가할 수 있습니다.

새 Autopilot 클러스터에 네트워크 태그 추가

다음 명령어를 실행합니다.

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --autoprovisioning-network-tags=TAG1,TAG2,...

다음을 바꿉니다.

  • CLUSTER_NAME: 새 Autopilot 클러스터의 이름입니다.
  • LOCATION: 새 클러스터의 Compute Engine 위치
  • TAG1,TAG2, ...: 적용할 네트워크 태그를 쉼표로 구분한 목록입니다.

새 Standard 클러스터에 네트워크 태그 추가

Standard의 경우 특히 노드 자동 프로비저닝에서 사용할 네트워크 태그를 지정할 수도 있습니다.

기본 노드 풀에 네트워크 태그 적용

다음 명령어를 실행하여 새 Standard 클러스터를 만들고 네트워크 태그를 기본 노드 풀에 적용합니다.

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --tags=NETWORK_TAG1,NETWORK_TAG2,...

다음을 바꿉니다.

  • CLUSTER_NAME: 새 Standard 클러스터의 이름입니다.
  • COMPUTE_REGION: 새 클러스터의 Compute Engine 위치
  • NETWORK_TAG1,NETWORK_TAG2, ...: 적용할 네트워크 태그를 쉼표로 구분한 목록입니다.

자동 프로비저닝된 노드 풀에 네트워크 태그 적용

노드 자동 프로비저닝으로 생성된 모든 노드 풀에 네트워크 태그를 자동으로 적용할 수 있습니다.

다음 명령어를 실행합니다.

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-network-tags=TAG1,TAG2,...

TAG1,TAG2,...를 모든 자동 프로비저닝된 노드 풀에 적용할 네트워크 태그를 쉼표로 구분한 목록으로 바꿉니다.

기존 클러스터의 네트워크 태그 업데이트

기존 클러스터의 네트워크 태그를 업데이트할 수 있습니다.

기존 Autopilot 클러스터의 네트워크 태그 업데이트

다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=TAG1,TAG2,...

기존 Standard 클러스터의 네트워크 태그 업데이트

다음 명령어를 실행하여 특정 Standard 노드 풀의 네트워크 태그를 업데이트합니다. --autoprovisioning-network-tags를 사용한 경우 이 명령어를 사용하여 자동 프로비저닝된 노드 풀을 업데이트할 수 없습니다.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --tags=NETWORK_TAG1,NETWORK_TAG2,...

클러스터에 --autoprovisioning-network-tags가 설정된 경우 이 명령어는 오류를 반환합니다.

자동 프로비저닝된 노드 풀의 네트워크 태그 업데이트

노드 자동 프로비저닝이 신규 및 기존의 자동 프로비저닝된 노드 풀에 적용되는 네트워크 태그를 업데이트할 수 있습니다.

다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=TAG1,TAG2,...

새 Standard 노드 풀에 네트워크 태그 추가

특정 네트워크 태그가 있는 Standard 클러스터에 새 노드 풀을 만들려면 다음 명령어를 실행합니다.

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --tags=NETWORK_TAG1,NETWORK_TAG2,...

NODE_POOL_NAME을 새 노드 풀 이름으로 바꿉니다.

기존 네트워크 태그 보기

이 섹션에서는 기존 네트워크 태그를 보는 방법을 보여줍니다.

Autopilot에서 기존 네트워크 태그 보기

다음 명령어를 실행합니다.

gcloud container clusters describe CLUSTER_NAME \
    --flatten=nodePoolAutoConfig.networkTags

클러스터에 네트워크 태그가 있으면 출력은 다음과 비슷합니다.

---
tags:
- example-tag

Standard에서 기존 네트워크 태그 보기

자동 프로비저닝된 노드 풀 또는 생성한 노드 풀에서 네트워크 태그를 볼 수 있습니다.

자동 프로비저닝된 노드 풀에서 네트워크 태그 보기

다음 명령어를 실행합니다.

gcloud container clusters describe CLUSTER_NAME \
    --flatten=nodePoolAutoConfig.networkTags

클러스터에 네트워크 태그가 있으면 출력은 다음과 비슷합니다.

---
tags:
- example-tag

노드 자동 프로비저닝이 없는 노드 풀에서 네트워크 태그 보기

--tags 플래그를 사용하여 태그를 적용한 특정 Standard 노드 풀의 네트워크 태그를 보려면 다음 명령어를 실행합니다.

gcloud container node-pools describe NODE_POOL_NAME\
    --cluster=CLUSTER_NAME \
    --format='value(config.tags)'

NODE_POOL_NAME을 노드 풀의 이름으로 바꿉니다.

노드 풀에 태그가 있으면 출력은 다음과 비슷합니다.

example-tag

네트워크 태그 삭제

GKE에서 네트워크 태그를 삭제할 수 있습니다.

Autopilot 클러스터에서 네트워크 태그 삭제

다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=""

Standard 클러스터 및 노드 풀에서 네트워크 태그 삭제

모든 자동 프로비저닝된 노드 풀 또는 특정 노드 풀에서 태그를 삭제할 수 있습니다.

자동 프로비저닝된 노드 풀에서 네트워크 태그 삭제

모든 자동 프로비저닝된 노드 풀에서 네트워크 태그를 삭제하려면 다음 명령어를 실행합니다.

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=""

또한 이 명령어를 사용하면 --tags 옵션을 사용하여 자동 프로비저닝된 노드 풀에 네트워크 태그를 수동으로 지정하는 기능이 복원됩니다.

특정 노드 풀에서 네트워크 태그 삭제

특정 노드 풀에서 네트워크 태그를 삭제하려면 다음 명령어를 실행합니다.

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --tags=""

다음 단계