클러스터 마스터 액세스가 승인된 네트워크 추가

이 페이지에서는 승인된 네트워크에 Google Kubernetes Engine 클러스터의 클러스터 마스터에 대한 액세스 권한을 부여하는 방법을 설명합니다. GKE 네트워킹에 대한 일반적인 정보는 네트워크 개요를 참조하세요.

개요

승인된 네트워크를 사용하면 특정 CIDR 범위를 허용하고 이러한 범위의 IP 주소가 HTTPS를 사용하여 클러스터 마스터 엔드포인트에 액세스하도록 허용할 수 있습니다. 승인된 네트워크는 모든 클러스터와 호환됩니다.

GKE는 전송 계층 보안(TLS)과 인증을 모두 사용하여 공개 인터넷에서 클러스터 마스터 엔드포인트에 대한 보안 액세스를 제공합니다. 이러한 액세스를 통해 클러스터를 어디서나 유연하게 관리할 수 있습니다. 승인된 네트워크를 사용하면 액세스를 지정된 IP 주소 집합으로 제한할 수 있습니다.

이점

승인된 네트워크를 추가하면 클러스터에 추가적 보안 이점을 제공할 수 있습니다. 승인된 네트워크는 출처가 사용자의 환경인 주소와 같이 사용자가 지정하는 특정 주소 집합에 액세스 권한을 부여합니다. 이를 통해 클러스터의 인증 또는 승인 메커니즘에 취약점이 있는 경우 클러스터에 대한 액세스를 보호할 수 있습니다.

비공개 클러스터의 이점

비공개 클러스터는 외부 IP 주소 없이 노드를 실행하며, 원한다면 공개적으로 도달할 수 있는 엔드포인트 없이 클러스터 마스터를 실행합니다. 또한 비공개 클러스터는 기본적으로 Google Cloud IP 주소가 클러스터 마스터 엔드포인트에 액세스하는 것을 허용하지 않습니다. 비공개 클러스터를 승인된 네트워크와 함께 사용하면 허용된 CIDR, 클러스터의 VPC 내 노드, 마스터를 관리하는 Google의 내부 프로덕션 작업만 클러스터 마스터에 도달할 수 있습니다.

제한사항

  • 클러스터의 승인된 네트워크 CIDR 범위는 50개를 초과할 수 없습니다.

시작하기 전에

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

다음 방법 중 하나를 사용하여 기본 gcloud 설정을 진행합니다.

  • gcloud init를 사용하여 기본값 설정 과정을 진행합니다.
  • gcloud config를 사용하여 프로젝트 ID, 영역, 리전을 개별적으로 설정합니다.

gcloud init 사용

  1. gcloud init를 실행하고 다음 안내를 따르세요.

    gcloud init

    원격 서버에서 SSH를 사용하는 경우 --console-only 플래그를 사용하여 다음 명령어로 브라우저를 실행하지 못하게 할 수 있습니다.

    gcloud init --console-only
  2. 안내를 따라 gcloud에서 Google Cloud 계정을 사용하도록 승인합니다.
  3. 새 구성을 만들거나 기존 구성을 선택합니다.
  4. Google Cloud 프로젝트를 선택합니다.
  5. 기본 Compute Engine 영역을 선택합니다.

gcloud config 사용

  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project project-id
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone compute-zone
  • 리전 클러스터를 사용하는 경우 기본 컴퓨팅 리전을 설정합니다.
    gcloud config set compute/region compute-region
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

승인된 네트워크가 있는 클러스터 만들기

gcloud 도구, Google Cloud Console 또는 GKE API를 사용하여 하나 이상의 승인된 네트워크에서 클러스터를 만들 수 있습니다.

gcloud

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

    gcloud container clusters create [CLUSTER_NAME] \
        --enable-master-authorized-networks \
        --master-authorized-networks [CIDR],[CIDR]...
    

--master-authorized-networks 플래그를 사용하면 HTTPS를 통해 클러스터 마스터 엔드포인트에 대한 액세스 권한을 부여할 쉼표로 구분된 CIDR(예: 8.8.8.0/24)을 최대 50개까지 지정할 수 있습니다.

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

    gcloud container clusters create example-cluster \
        --enable-master-authorized-networks \
        --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

Console

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 클러스터 만들기 버튼을 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다.

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

  5. 마스터 승인 네트워크 사용 설정 체크박스를 선택합니다.

  6. 승인된 네트워크 추가 버튼을 클릭합니다.

  7. 이름에 원하는 네트워크 이름을 입력합니다.

  8. 네트워크에 클러스터 마스터에 대한 액세스를 허용할 CIDR 범위를 입력합니다.

  9. 완료를 클릭합니다. 필요에 따라 승인된 네트워크를 추가합니다.

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

API

클러스터 create 요청에서 masterAuthorizedNetworksConfig 객체를 지정합니다.

    "masterAuthorizedNetworksConfig": {
      "enabled": true,
      "cidrBlocks": [
      {
          "displayName": string,
          "cidrBlock": string
      }
    ]
    }
    

자세한 내용은 MasterAuthorizedNetworksConfig를 참조하세요.

승인된 네트워크가 있는 비공개 클러스터 만들기

하나 이상의 승인된 네트워크가 있는 비공개 클러스터를 만드는 방법을 알아보려면 비공개 클러스터를 참조하세요.

기존 클러스터에 승인된 네트워크 추가

gcloud 명령줄 도구를 사용하거나 Cloud Console을 사용하여 승인된 네트워크를 기존 클러스터에 추가할 수 있습니다.

gcloud

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

    gcloud container clusters update [CLUSTER_NAME] \
        --enable-master-authorized-networks \
        --master-authorized-networks [CIDR],[CIDR]...
    

--master-authorized-networks 플래그를 사용하면 HTTPS를 통해 클러스터 마스터 엔드포인트에 대한 액세스 권한을 부여할 쉼표로 구분된 CIDR(예: 8.8.8.0/24)을 최대 50개까지 지정할 수 있습니다.

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

    gcloud container clusters update example-cluster \
        --enable-master-authorized-networks \
        --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

Console

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 원하는 클러스터를 선택합니다.

  3. 수정을 클릭합니다.

  4. 마스터 승인 네트워크 드롭다운 메뉴에서 아직 사용 설정되지 않았다면 사용을 선택합니다.

  5. 승인된 네트워크 추가를 클릭합니다.

  6. 원하는 네트워크 이름을 이름에 입력합니다.

  7. 클러스터 마스터에 대한 액세스를 허용할 CIDR 범위를 네트워크에 입력합니다.

  8. 완료를 클릭합니다. 필요에 따라 승인된 네트워크를 추가합니다.

  9. 메뉴 하단의 저장을 클릭합니다.

API

클러스터 update 요청에서 desiredMasterAuthorizedNetworksConfig 필드를 지정합니다. 필드에 MasterAuthorizedNetworksConfig 객체를 지정합니다.

    "desiredMasterAuthorizedNetworksConfig": {
        object(MasterAuthorizedNetworksConfig)
      }
    

승인된 네트워크 확인

gcloud 명령줄 도구를 사용하거나 Cloud Console을 사용하여 기존 클러스터에서 승인된 네트워크를 확인할 수 있습니다.

gcloud

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

    gcloud container clusters describe [CLUSTER_NAME]
    

명령어 결과에서 masterAuthorizedNetworksConfig 필드를 찾습니다.

  ...
    masterAuthorizedNetworksConfig:
      cidrBlocks:
      - cidrBlock: 8.8.8.8/32
      - cidrBlock: 8.8.4.4/32
      enabled: true
      ...
    

Console

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 원하는 클러스터를 선택합니다.

마스터 승인 네트워크 필드에 허용되는 CIDR이 표시됩니다.

API

get 요청을 전송합니다. masterAuthorizedNetworksConfig 필드 아래에서 CIDR 블록을 찾습니다. 예를 들면 다음과 같습니다.

    "masterAuthorizedNetworksConfig": {
    "enabled": true,
    "cidrBlocks": [
      {
        "displayName": "Office",
        "cidrBlock": "192.0.2.0/24"
      }
    ]
    }
    

승인된 네트워크 사용 중지

gcloud 명령줄 도구 또는 Cloud Console을 사용하여 기존 클러스터에 승인된 네트워크를 중지할 수 있습니다.

gcloud

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

    gcloud container clusters update [CLUSTER_NAME] \
    --no-enable-master-authorized-networks
    

Console

  1. Cloud Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 원하는 클러스터를 선택합니다.

  3. 수정을 클릭합니다.

  4. 마스터 승인 네트워크 드롭다운 메뉴에서 사용 안함을 선택합니다.

  5. 저장을 클릭합니다.

문제해결

다음 섹션에서는 승인된 네트워크의 일반적 문제를 해결하는 방법을 설명합니다.

CIDR 블록이 너무 많음

CIDR 블록이 50개를 초과하는 클러스터를 만들거나 업데이트하려 하면 gcloud가 다음 오류를 반환합니다.

    ERROR: (gcloud.container.clusters.update) argument --master-authorized-networks: too many args
    

이 문제를 해결하려면 CIDR 블록을 50개 미만으로 지정해야 합니다.

마스터에 연결할 수 없음

잘못 구성된 CIDR 블록으로 인해 kubectl 명령어가 시간 초과됩니다.

    Unable to connect to the server: dial tcp MASTER_IP: getsockopt: connection timed out
    

클러스터를 만들거나 업데이트할 때는 올바른 CIDR 블록을 지정해야 합니다.

다음 단계