비공개 클러스터 만들기


이 페이지에서는 VPC 기반 클러스터의 일종인 비공개 Google Kubernetes Engine(GKE) 클러스터를 만드는 방법을 설명합니다. 비공개 클러스터의 노드에는 내부 IP 주소만 있습니다. 즉, 노드와 포드는 기본적으로 인터넷에서 격리되어 있습니다. 클라이언트가 컨트롤 플레인에 액세스할 수 없거나 제한적으로 액세스하거나 제한 없이 액세스할 수 있습니다.

비공개가 아닌 기존 클러스터를 비공개 클러스터로 변환할 수 없습니다. 비공개 클러스터 작동 방식에 대한 자세한 내용은 비공개 클러스터 개요를 참조하세요.

이 페이지는 네트워크 보안을 계획하고 구현하는 네트워킹 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할과 예시 태스크에 대한 자세한 내용은 일반 GKE Enterprise 사용자 역할 및 태스크를 참조하세요.

제한 및 한도

비공개 클러스터는 VPC 기반 클러스터여야 합니다. VPC 기반 클러스터는 기존 네트워크를 지원하지 않습니다.

비공개 클러스터를 만들 때 IP 주소 범위 및 트래픽과 관련된 규칙을 보려면 다음 섹션을 펼치세요.

시작하기 전에

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

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.
  • 클러스터를 만들 수 있는 올바른 권한이 있는지 확인합니다. 최소한 Kubernetes Engine 클러스터 관리자 권한이 있어야 합니다.

  • 기본 인터넷 게이트웨이에 대한 경로가 있는지 확인합니다.

클라이언트가 공개 엔드포인트에 액세스할 수 없는 비공개 클러스터 만들기

이 섹션에서는 다음 리소스를 만듭니다.

  • 비공개 노드가 있고 공개 엔드포인트에 대한 클라이언트 액세스 권한이 없는 private-cluster-0라는 비공개 클러스터
  • 이름이 my-net-0인 네트워크
  • 이름이 my-subnet-0인 서브넷

Console

네트워크 및 서브넷 만들기

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름my-net-0를 입력합니다.

  4. 서브넷 생성 모드커스텀을 선택합니다.

  5. 새 서브넷 상자의 이름my-subnet-0를 입력합니다.

  6. 리전 목록에서 원하는 리전을 선택합니다.

  7. IP 주소 범위10.2.204.0/22을 입력합니다.

  8. 비공개 Google 액세스사용으로 설정합니다.

  9. 완료를 클릭합니다.

  10. 만들기를 클릭합니다.

비공개 클러스터 만들기

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭하고 Standard 또는 Autopilot 섹션에서 구성을 클릭합니다.

  3. 이름private-cluster-0를 지정합니다.

  4. 탐색창에서 네트워킹을 클릭합니다.

  5. 네트워크 목록에서 my-net-0을 선택합니다.

  6. 노드 서브넷 목록에서 my-subnet-0을 선택합니다.

  7. 비공개 클러스터 라디오 버튼을 선택합니다.

  8. 외부 IP 주소를 사용한 액세스 제어 영역 체크박스를 선택 취소합니다.

  9. (Autopilot 선택사항): 제어 영역 IP 범위172.16.0.32/28로 설정합니다.

  10. 만들기를 클릭합니다.

gcloud

  • Autopilot 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create-auto private-cluster-0 \
        --create-subnetwork name=my-subnet-0 \
        --enable-master-authorized-networks \
        --enable-private-nodes \
        --enable-private-endpoint
    
  • Standard 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create private-cluster-0 \
        --create-subnetwork name=my-subnet-0 \
        --enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --enable-private-endpoint \
        --master-ipv4-cidr 172.16.0.32/28
    

각 항목의 의미는 다음과 같습니다.

  • --create-subnetwork name=my-subnet-0은 GKE가 자동으로 my-subnet-0이라는 서브넷을 생성하도록 합니다.
  • --enable-master-authorized-networks는 공개 엔드포인트에 대한 액세스를 사용자가 승인한 IP 주소 범위로 제한합니다.
  • --enable-ip-alias는 클러스터를 VPC 기반으로 만듭니다(Autopilot의 경우 필수 아님).
  • --enable-private-nodes는 클러스터의 노드에 외부 IP 주소가 없음을 나타냅니다.
  • --enable-private-endpoint는 클러스터가 제어 영역 API 엔드포인트의 내부 IP 주소를 사용하여 관리됨을 나타냅니다.
  • --master-ipv4-cidr 172.16.0.32/28은 제어 영역의 내부 IP 주소 범위를 지정합니다(Autopilot의 경우 선택사항). 이 설정은 이 클러스터에 영구적으로 유지되며 VPC 내에서 고유해야 합니다. 비RFC 1918 내부 IP 주소를 사용할 수 있습니다.

API

공개적으로 연결 가능한 제어 영역 없이 클러스터를 만들려면 privateClusterConfig 리소스에 enablePrivateEndpoint: true 필드를 지정합니다.

이 시점에서 다음의 IP 주소에서만 제어 영역에 액세스할 수 있습니다.

  • my-subnet-0의 기본 범위
  • 포드에 사용되는 보조 범위

예를 들어 기본 범위 my-subnet-0에 VM을 만들었다고 가정해 보겠습니다. 그런 다음 이 VM에서 제어 영역의 내부 IP 주소를 사용하도록 kubectl을 구성할 수 있습니다.

my-subnet-0 외부에서 제어 영역에 액세스하려면 비공개 엔드포인트에 액세스할 수 있는 하나 이상의 주소 범위를 승인해야 합니다.

클러스터와 동일한 리전의 기본 네트워크에 VM이 있지만 my-subnet-0에는 없다고 가정해 보겠습니다.

예를 들면 다음과 같습니다.

  • my-subnet-0: 10.0.0.0/22
  • 포드 보조 범위: 10.52.0.0/14
  • VM 주소: 10.128.0.3

다음 명령어를 사용하여 VM이 제어 영역에 액세스하도록 승인할 수 있습니다.

gcloud container clusters update private-cluster-0 \
    --enable-master-authorized-networks \
    --master-authorized-networks 10.128.0.3/32

공개 엔드포인트에 대한 액세스가 제한된 비공개 클러스터 만들기

이 구성을 사용하여 비공개 클러스터를 만들 때 자동으로 생성된 서브넷 또는 커스텀 서브넷을 사용할 수 있습니다.

자동 생성된 서브넷 사용

이 섹션에서는 GKE가 클러스터 노드의 서브넷을 자동으로 생성하는 private-cluster-1라는 비공개 클러스터를 만듭니다. 이 서브넷은 비공개 Google 액세스가 사용 설정되어 있습니다. 서브넷에서 GKE는 두 개의 보조 범위를 자동으로 만듭니다. 하나는 포드용이고 하나는 서비스용입니다.

Google Cloud CLI 또는 GKE API를 사용할 수 있습니다.

gcloud

  • Autopilot 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create-auto private-cluster-1 \
        --create-subnetwork name=my-subnet-1 \
        --enable-master-authorized-networks \
        --enable-private-nodes
    
  • Standard 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create private-cluster-1 \
        --create-subnetwork name=my-subnet-1 \
        --enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --master-ipv4-cidr 172.16.0.0/28
    

각 항목의 의미는 다음과 같습니다.

  • --create-subnetwork name=my-subnet-1은 GKE가 자동으로 my-subnet-1이라는 서브넷을 생성하도록 합니다.
  • --enable-master-authorized-networks는 공개 엔드포인트에 대한 액세스를 사용자가 승인한 IP 주소 범위로 제한합니다.
  • --enable-ip-alias는 클러스터를 VPC 기반으로 만듭니다(Autopilot의 경우 필수 아님).
  • --enable-private-nodes는 클러스터의 노드에 외부 IP 주소가 없음을 나타냅니다.
  • --master-ipv4-cidr 172.16.0.0/28은 제어 영역의 내부 IP 주소 범위를 지정합니다(Autopilot의 경우 선택사항). 이 설정은 이 클러스터에 영구적으로 유지되며 VPC 내에서 고유해야 합니다. 비RFC 1918 내부 IP 주소를 사용할 수 있습니다.

API

Cluster API 리소스의 privateClusterConfig 필드를 지정합니다.

{
  "name": "private-cluster-1",
  ...
  "ipAllocationPolicy": {
    "createSubnetwork": true,
  },
  ...
    "privateClusterConfig" {
      "enablePrivateNodes": boolean # Creates nodes with internal IP addresses only
      "enablePrivateEndpoint": boolean # false creates a cluster control plane with a publicly-reachable endpoint
      "masterIpv4CidrBlock": string # CIDR block for the cluster control plane
      "privateEndpoint": string # Output only
      "publicEndpoint": string # Output only
  }
}

이 시점에서 다음의 IP 주소에서만 클러스터 제어 영역에 액세스할 수 있습니다.

  • my-subnet-1의 기본 범위
  • 포드에 사용되는 보조 범위

VPC 네트워크 외부에 203.0.113.0/29 범위의 주소를 가진 머신 그룹이 있다고 가정해 보겠습니다. 다음 명령어를 입력하여 이 머신들이 공개 엔드포인트에 액세스하도록 승인할 수 있습니다.

gcloud container clusters update private-cluster-1 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

그러면 다음의 IP 주소에서만 제어 영역에 액세스할 수 있습니다.

  • my-subnet-1의 기본 범위
  • 포드에 사용되는 보조 범위
  • 승인한 주소 범위(예: 203.0.113.0/29)

커스텀 서브넷 사용

이 섹션에서는 다음 리소스를 만듭니다.

  • 이름이 private-cluster-2인 비공개 클러스터
  • 이름이 my-net-2인 네트워크
  • 클러스터 노드에 기본 범위가 192.168.0.0/20인 서브넷 my-subnet-2 서브넷의 보조 IP 주소 범위는 다음과 같습니다.
    • 포드 IP 주소의 경우 my-pods
    • 서비스 IP 주소의 경우 my-services

Console

네트워크, 서브넷, 보조 범위 만들기

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름my-net-2를 입력합니다.

  4. 서브넷 생성 모드커스텀을 선택합니다.

  5. 새 서브넷 상자의 이름my-subnet-2를 입력합니다.

  6. 리전 목록에서 원하는 리전을 선택합니다.

  7. IP 주소 범위192.168.0.0/20을 입력합니다.

  8. 보조 IP 범위 만들기를 클릭합니다. 서브넷 범위 이름my-services를 입력하고, 보조 IP 범위10.0.32.0/20을 입력합니다.

  9. IP 범위 추가를 클릭합니다. 서브넷 범위 이름my-pods를 입력하고, 보조 IP 범위10.4.0.0/14를 입력합니다.

  10. 비공개 Google 액세스사용으로 설정합니다.

  11. 완료를 클릭합니다.

  12. 만들기를 클릭합니다.

비공개 클러스터 만들기

서브넷을 사용하는 비공개 클러스터를 만듭니다.

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭하고 Standard 또는 Autopilot 섹션에서 구성을 클릭합니다.

  3. 이름private-cluster-2를 입력합니다.

  4. 탐색창에서 네트워킹을 클릭합니다.

  5. 비공개 클러스터 라디오 버튼을 선택합니다.

  6. 승인된 외부 IP 범위에서 액세스할 수 있는 제어 영역을 만들려면 외부 IP 주소를 사용하여 제어 영역에 액세스 체크박스를 선택한 상태로 둡니다.

  7. (Autopilot 선택사항) 제어 영역 IP 범위172.16.0.16/28로 설정합니다.

  8. 네트워크 목록에서 my-net-2를 선택합니다.

  9. 노드 서브넷 목록에서 my-subnet-2를 선택합니다.

  10. 보조 범위 자동 생성 체크박스를 선택 취소합니다.

  11. 포드 보조 CIDR 범위 목록에서 my-pods를 선택합니다.

  12. 서비스 보조 CIDR 범위 목록에서 my-services를 선택합니다.

  13. 제어 영역 승인된 네트워크 사용 체크박스를 선택합니다.

  14. 만들기를 클릭합니다.

gcloud

네트워크 만들기

먼저 클러스터의 네트워크를 만듭니다. 다음 명령어는 my-net-2 네트워크를 만듭니다.

gcloud compute networks create my-net-2 \
    --subnet-mode custom

서브넷 및 보조 범위 만들기

그런 다음 my-net-2 네트워크에 보조 범위(포드의 경우 my-pods, 서비스의 경우 my-services)가 있는 my-subnet-2 서브넷을 만듭니다.

gcloud compute networks subnets create my-subnet-2 \
    --network my-net-2 \
    --range 192.168.0.0/20 \
    --secondary-range my-pods=10.4.0.0/14,my-services=10.0.32.0/20 \
    --enable-private-ip-google-access

비공개 클러스터 만들기

이제 만든 네트워크, 서브넷, 보조 범위를 사용해 비공개 클러스터 private-cluster-2을 만듭니다.

  • Autopilot 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create-auto private-cluster-2 \
        --enable-master-authorized-networks \
        --network my-net-2 \
        --subnetwork my-subnet-2 \
        --cluster-secondary-range-name my-pods \
        --services-secondary-range-name my-services \
        --enable-private-nodes
    
  • Standard 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create private-cluster-2 \
        --enable-master-authorized-networks \
        --network my-net-2 \
        --subnetwork my-subnet-2 \
        --cluster-secondary-range-name my-pods \
        --services-secondary-range-name my-services \
        --enable-private-nodes \
        --enable-ip-alias \
        --master-ipv4-cidr 172.16.0.16/28 \
        --no-enable-basic-auth \
        --no-issue-client-certificate
    

이 시점에서 다음의 IP 주소에서만 제어 영역에 액세스할 수 있습니다.

  • my-subnet-2의 기본 범위
  • my-pods의 보조 범위

my-net-2 외부에 203.0.113.0/29 범위의 주소를 가진 머신 그룹이 있다고 가정해 보겠습니다. 다음 명령어를 입력하여 이 머신들이 공개 엔드포인트에 액세스하도록 승인할 수 있습니다.

gcloud container clusters update private-cluster-2 \
    --enable-master-authorized-networks \
    --master-authorized-networks 203.0.113.0/29

이 시점에서 다음의 IP 주소에서만 제어 영역에 액세스할 수 있습니다.

  • my-subnet-2의 기본 범위
  • my-pods의 보조 범위
  • 승인한 주소 범위(예: 203.0.113.0/29)

Cloud Shell을 사용하여 비공개 클러스터 액세스

자동으로 생성된 서브넷 사용 섹션 private-cluster-1에서 만든 비공개 클러스터에는 공개 엔드포인트가 있고 승인된 네트워크가 사용 설정되어 있습니다. Cloud Shell을 사용하여 클러스터에 액세스하려면 클러스터의 승인된 네트워크 목록에 Cloud Shell의 외부 IP 주소를 추가해야 합니다.

그러려면 다음 안내를 따르세요.

  1. Cloud Shell 명령줄 창에서 dig를 사용하여 Cloud Shell의 외부 IP 주소를 찾습니다.

    dig +short myip.opendns.com @resolver1.opendns.com
    
  2. Cloud Shell의 외부 주소를 클러스터의 승인된 네트워크 목록에 추가합니다.

    gcloud container clusters update private-cluster-1 \
        --enable-master-authorized-networks \
        --master-authorized-networks EXISTING_AUTH_NETS,SHELL_IP/32
    

    다음을 바꿉니다.

    • EXISTING_AUTH_NETS: 기존 승인된 네트워크 목록의 IP 주소입니다. 콘솔에서 또는 다음 명령어를 실행하여 승인된 네트워크를 찾을 수 있습니다.

      gcloud container clusters describe private-cluster-1 --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"
      
    • SHELL_IP: Cloud Shell의 외부 IP 주소입니다.

  3. kubectl을 사용해 클러스터에 액세스할 수 있도록 사용자 인증 정보를 받습니다.

    gcloud container clusters get-credentials private-cluster-1 \
        --project=PROJECT_ID \
        --internal-ip
    

    PROJECT_ID를 프로젝트 ID로 바꿉니다.

  4. Cloud Shell에서 kubectl을 사용하여 비공개 클러스터에 액세스합니다.

    kubectl get nodes
    

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

    NAME                                               STATUS   ROLES    AGE    VERSION
    gke-private-cluster-1-default-pool-7d914212-18jv   Ready    <none>   104m   v1.21.5-gke.1302
    gke-private-cluster-1-default-pool-7d914212-3d9p   Ready    <none>   104m   v1.21.5-gke.1302
    gke-private-cluster-1-default-pool-7d914212-wgqf   Ready    <none>   104m   v1.21.5-gke.1302
    

공개 엔드포인트에 무제한으로 액세스할 수 있는 비공개 클러스터 만들기

이 섹션에서는 모든 IP 주소가 제어 영역에 액세스할 수 있는 비공개 클러스터를 만듭니다.

Console

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 만들기를 클릭하고 Standard 또는 Autopilot 섹션에서 구성을 클릭합니다.

  3. 이름private-cluster-3를 입력합니다.

  4. 탐색창에서 네트워킹을 클릭합니다.

  5. 비공개 클러스터 옵션을 선택합니다.

  6. 외부 IP 주소를 사용하여 제어 영역 액세스 체크박스를 선택한 상태로 둡니다.

  7. (Autopilot 선택사항) 제어 영역 IP 범위172.16.0.32/28로 설정합니다.

  8. 네트워크노드 서브넷default 설정 그대로 둡니다. 이렇게 하면 GKE가 클러스터의 서브넷을 생성합니다.

  9. 제어 영역에서 승인된 네트워크 사용 체크박스를 선택 해제합니다.

  10. 만들기를 클릭합니다.

gcloud

  • Autopilot 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create-auto private-cluster-3 \
        --create-subnetwork name=my-subnet-3 \
        --no-enable-master-authorized-networks \
        --enable-private-nodes
    
  • Standard 클러스터의 경우 다음 명령어를 실행합니다.

    gcloud container clusters create private-cluster-3 \
        --create-subnetwork name=my-subnet-3 \
        --no-enable-master-authorized-networks \
        --enable-ip-alias \
        --enable-private-nodes \
        --master-ipv4-cidr 172.16.0.32/28
    

각 항목의 의미는 다음과 같습니다.

  • --create-subnetwork name=my-subnet-3은 GKE가 자동으로 my-subnet-3이라는 서브넷을 생성하도록 합니다.
  • --no-enable-master-authorized-networks는 클러스터의 승인된 네트워크를 중지합니다.
  • --enable-ip-alias는 클러스터를 VPC 기반으로 만듭니다(Autopilot의 경우 필수 아님).
  • --enable-private-nodes는 클러스터의 노드에 외부 IP 주소가 없음을 나타냅니다.
  • --master-ipv4-cidr 172.16.0.32/28은 제어 영역의 내부 IP 주소 범위를 지정합니다(Autopilot의 경우 선택사항). 이 설정은 이 클러스터에 영구적으로 유지되며 VPC 내에서 고유해야 합니다. 비RFC 1918 내부 IP 주소를 사용할 수 있습니다.

특정 사용 사례를 위한 방화벽 규칙 추가

이 섹션에서는 비공개 클러스터에 방화벽 규칙을 추가하는 방법을 설명합니다. 기본적으로 방화벽 규칙은 클러스터 컨트롤 플레인이 포트 443(HTTPS) 및 10250(kubelet)에서만 노드 및 포드에 대한 TCP 연결을 시작하도록 제한합니다. 일부 Kubernetes 기능의 경우 추가 포트에서 액세스를 허용하도록 방화벽 규칙을 추가해야 할 수 있습니다. 자동으로 생성되는 방화벽 규칙보다 우선순위가 높은 방화벽 규칙이나 계층식 방화벽 정책 규칙을 생성하지 마세요.

추가 방화벽 규칙이 필요한 Kubernetes 기능은 다음과 같습니다.

방화벽 규칙을 추가하면 클러스터 제어 영역의 트래픽이 다음 모두로 전송될 수 있습니다.

  • 각 노드의 지정된 포트(hostPort)
  • 이러한 노드에서 실행되는 각 포드의 지정된 포트
  • 이러한 노드에서 실행되는 각 서비스의 지정된 포트

방화벽 규칙에 대한 자세한 내용은 Cloud Load Balancing 문서의 방화벽 규칙을 참조하세요.

비공개 클러스터에 방화벽 규칙을 추가하려면 클러스터 제어 영역의 CIDR 블록과 사용할 대상을 기록해야 합니다. 이를 기록한 후에 규칙을 만들 수 있습니다.

1단계: 제어 영역의 CIDR 블록 보기

방화벽 규칙을 추가하려면 클러스터 제어 영역의 CIDR 블록이 필요합니다.

Console

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 클러스터 이름을 클릭합니다.

세부정보 탭의 네트워킹에서 제어 영역 주소 범위 필드의 값을 기록해둡니다.

gcloud

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

gcloud container clusters describe CLUSTER_NAME

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

명령어 결과에서 masterIpv4CidrBlock 필드 값을 기록합니다.

2단계: 기존 방화벽 규칙 보기

클러스터의 기존 방화벽 규칙이 사용하는 타겟(이 경우에는 목적지 노드)을 지정해야 합니다.

Console

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. VPC 방화벽 규칙테이블 필터링gke-CLUSTER_NAME을 입력합니다.

결과에서 대상 필드 값을 기록합니다.

gcloud

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

gcloud compute firewall-rules list \
    --filter 'name~^gke-CLUSTER_NAME' \
    --format 'table(
        name,
        network,
        direction,
        sourceRanges.list():label=SRC_RANGES,
        allowed[].map().firewall_rule().list():label=ALLOW,
        targetTags.list():label=TARGET_TAGS
    )'

명령어 결과에서 대상 필드의 값을 기록해 둡니다.

3단계: 방화벽 규칙 추가

Console

  1. Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.

    방화벽 정책으로 이동

  2. 방화벽 규칙 만들기를 클릭합니다.

  3. 이름에 원하는 방화벽 규칙 이름을 입력합니다.

  4. 네트워크 목록에서 관련 네트워크를 선택합니다.

  5. 트래픽 방향에서 인그레스를 클릭합니다.

  6. 일치 시 작업에서 허용을 클릭합니다.

  7. 대상 목록에서 지정된 대상 태그를 선택합니다.

  8. 대상 태그에 이전에 기록한 목표 값을 입력합니다.

  9. 소스 필터 목록에서 IPv4 범위를 선택합니다.

  10. 소스 IPv4 범위에 클러스터 제어 영역의 CIDR 블록을 입력합니다.

  11. 프로토콜 및 포트에서 지정된 프로토콜 및 포트를 클릭하고, 관련 프로토콜(TCP 또는UDP) 체크박스를 선택하고, 프로토콜 입력란에 원하는 포트 번호를 입력합니다.

  12. 만들기를 클릭합니다.

gcloud

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

gcloud compute firewall-rules create FIREWALL_RULE_NAME \
    --action ALLOW \
    --direction INGRESS \
    --source-ranges CONTROL_PLANE_RANGE \
    --rules PROTOCOL:PORT \
    --target-tags TARGET

다음을 바꿉니다.

  • FIREWALL_RULE_NAME: 선택한 방화벽 규칙 이름입니다.
  • CONTROL_PLANE_RANGE: 이전에 수집한 클러스터 제어 영역의 IP 주소 범위(masterIpv4CidrBlock)입니다.
  • PROTOCOL:PORT: 포트 및 해당 포트의 프로토콜(tcp, udp)입니다.
  • TARGET: 이전에 수집한 대상(Targets) 값입니다.

노드에 외부 IP 주소가 없는지 확인

비공개 클러스터를 만든 후 클러스터 노드에 외부 IP 주소가 없는지 확인합니다.

Console

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 클러스터 이름을 클릭합니다.

  3. Autopilot 클러스터의 경우 클러스터 기본사항 섹션에서 외부 엔드포인트 필드를 확인합니다. 값은 사용 중지됨입니다.

Standard 클러스터의 경우 다음을 실행합니다.

  1. 클러스터 페이지에서 노드 탭을 클릭합니다.
  2. 노드 풀에서 노드 풀 이름을 클릭합니다.
  3. 노드 풀 세부정보 페이지의 인스턴스 그룹에서 인스턴스 그룹 이름을 클릭합니다. 예: gke-private-cluster-0-default-pool-5c5add1f-grp`
  4. 인스턴스 목록에서 인스턴스에 외부 IP 주소가 없는지 확인합니다.

gcloud

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

kubectl get nodes --output wide

출력의 EXTERNAL-IP 열이 비어 있습니다.

STATUS ... VERSION        EXTERNAL-IP  OS-IMAGE ...
Ready      v.8.7-gke.1                 Container-Optimized OS
Ready      v1.8.7-gke.1                Container-Optimized OS
Ready      v1.8.7-gke.1                Container-Optimized OS

클러스터에서 VPC 피어링 재사용 확인

2020년 1월 15일 이후에 만든 모든 비공개 클러스터는 VPC 네트워크 피어링 연결을 재사용합니다.

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 비공개 클러스터가 VPC 네트워크 피어링 연결을 재사용하는지 확인할 수 있습니다.

Console

클러스터 세부정보 페이지에서 VPC 피어링 행을 확인합니다. 클러스터가 VPC 피어링 연결을 재사용하면 출력은 gke-n으로 시작합니다. 예를 들면 gke-n34a117b968dee3b2221-93c6-40af-peer입니다.

gcloud

gcloud container clusters describe CLUSTER_NAME \
    --format="value(privateClusterConfig.peeringName)"

클러스터가 VPC 피어링 연결을 재사용하면 출력은 gke-n으로 시작합니다. 예를 들면 gke-n34a117b968dee3b2221-93c6-40af-peer입니다.

삭제

이 페이지의 작업을 완료한 후에는 다음 단계에 따라 리소스를 제거하여 계정에서 원치 않는 요금이 부과되지 않도록 합니다.

클러스터 삭제

Console

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 각 클러스터를 선택합니다.

  3. 삭제를 클릭합니다.

gcloud

gcloud container clusters delete -q private-cluster-0 private-cluster-1 private-cluster-2 private-cluster-3

네트워크 삭제

Console

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

    VPC 네트워크로 이동

  2. 네트워크 목록에서 my-net-0을 클릭합니다.

  3. 네트워크 세부정보 페이지에서 VPC 네트워크 삭제를 클릭합니다.

  4. 네트워크 삭제 대화상자에서 삭제를 클릭합니다.

gcloud

gcloud compute networks delete my-net-0

다음 단계