제어 영역 액세스를 위한 승인된 네트워크 추가

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

개요

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

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

비공개 클러스터는 승인된 네트워크와 유사한 내부 IP 주소만 있는 노드를 실행하며 신뢰할 수 없는 Google Cloud 외부의 IP 주소가 제어 영역 엔드포인트에 액세스하는 것을 허용하지 않습니다.

비공개 클러스터에서 승인된 네트워크를 사용하면 다음 경우에만 제어 영역에 연결할 수 있습니다.

  • Compute Engine 가상 머신(VM), Cloud Functions, Cloud Run과 같은 Google Cloud 내부 주소
  • 허용되는 CIDR 블록
  • 클러스터 VPC 내의 노드 및 포드
  • 제어 영역을 관리하는 Google의 내부 프로덕션 작업

승인된 네트워크 및 비공개 클러스터 사용자는 Cloud Run 및 Cloud Functions와 같은 클라우드 서비스에서 제어 영역에 액세스하는 데 의존하지 않아야 합니다. 이 액세스는 나중에 삭제되기 때문입니다.

이점

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

제한사항

  • 공개 클러스터에는 최대 50개의 승인된 네트워크 CIDR 범위가 있을 수 있습니다. 비공개 클러스터에는 최대 100개 있을 수 있습니다.
  • 승인된 네트워크가 있는 클러스터에서 사용되는 서브넷을 확장하는 경우 확장된 IP 주소 범위를 포함하도록 승인된 네트워크를 업데이트해야 합니다.

시작하기 전에

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

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Google Cloud CLI가 설치되었는지 확인합니다.
  • 다음 방법 중 하나를 사용하여 프로젝트의 기본 Google Cloud CLI 설정을 지정합니다.
    • 프로젝트 기본값 설정 방법을 알아보려면 gcloud init를 사용합니다.
    • 프로젝트 ID, 영역, 리전을 개별적으로 설정하려면 gcloud config를 사용합니다.

    gcloud init

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

      gcloud init

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

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

    gcloud config

    1. 기본 프로젝트 ID를 설정합니다.
      gcloud config set project PROJECT_ID
    2. 기본 Compute Engine 리전(예시: us-central1)을 설정합니다.
      gcloud config set compute/region COMPUTE_REGION
    3. 기본 Compute Engine 영역(예시: us-central1-c)을 설정합니다.
      gcloud config set compute/zone COMPUTE_ZONE
    4. gcloud를 최신 버전으로 업데이트합니다.
      gcloud components update

    기본 위치를 설정하면 gcloud CLI에서 One of [--zone, --region] must be supplied: Please specify location과 같은 오류를 방지할 수 있습니다.

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

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

gcloud

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

gcloud container clusters create CLUSTER_NAME \
    --enable-master-authorized-networks \
    --master-authorized-networks CIDR1,CIDR2,...

다음을 바꿉니다.

  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • CIDR1,CIDR2,...: 쉼표로 구분된 승인된 네트워크의 CIDR 값 목록입니다. 예를 들면 8.8.8.8/32,8.8.8.0/24입니다.

콘솔

  1. 콘솔에서 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 CLI 또는 콘솔을 사용하여 기존 클러스터에 승인된 네트워크를 추가할 수 있습니다.

gcloud

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

gcloud container clusters update CLUSTER_NAME \
    --enable-master-authorized-networks \
    --master-authorized-networks CIDR1,CIDR2,...

다음을 바꿉니다.

  • CLUSTER_NAME: 기존 클러스터의 이름입니다.
  • CIDR1,CIDR2,...: 쉼표로 구분된 승인된 네트워크의 CIDR 값 목록입니다. 예를 들면 8.8.8.8/32,8.8.8.0/24입니다.

콘솔

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

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 네트워킹제어 영역 승인된 네트워크 필드에서 제어 영역 승인된 네트워크 수정을 클릭합니다.

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

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

  6. 네트워크의 이름을 입력합니다.

  7. 네트워크에 클러스터 제어 영역에 대한 액세스 권한을 부여할 CIDR 범위를 입력합니다.

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

  9. 변경사항 저장을 클릭합니다.

API

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

"desiredMasterAuthorizedNetworksConfig": {
    object(MasterAuthorizedNetworksConfig)
  }

승인된 네트워크 확인

gcloud CLI 또는 콘솔을 사용하여 기존 클러스터에서 승인된 네트워크를 확인할 수 있습니다.

gcloud

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

gcloud container clusters describe CLUSTER_NAME

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

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

콘솔

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

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 네트워킹제어 영역 승인된 네트워크 필드에 허용되는 CIDR이 표시됩니다.

API

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

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

승인된 네트워크 사용 중지

gcloud CLI 또는 콘솔을 사용하여 기존 클러스터의 승인된 네트워크를 중지할 수 있습니다.

gcloud

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

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

콘솔

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

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 네트워킹제어 영역 승인된 네트워크 필드에서 제어 영역 승인된 네트워크 수정을 클릭합니다.

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

  5. 변경사항 저장을 클릭합니다.

승인된 네트워크 삭제

콘솔을 사용하여 기존 클러스터의 커스텀 승인 네트워크를 모두 삭제할 수 있습니다.

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

    Google Kubernetes Engine으로 이동

  2. 수정할 클러스터의 이름을 클릭합니다.

  3. 네트워킹제어 영역 승인된 네트워크 필드에서 제어 영역 승인된 네트워크 수정을 클릭합니다.

  4. CIDR을 삭제하려면 삭제를 클릭합니다.

  5. 변경사항 저장을 클릭합니다.

문제해결

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

CIDR 블록이 너무 많음

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

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

이 문제를 해결하려면 클러스터가 공개인 경우 CIDR 블록을 50개 이하로 지정해야 합니다. 클러스터가 비공개인 경우 CIDR 블록을 100개 이하로 지정합니다.

서버에 연결할 수 없음

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

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

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

다음 단계