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


이 페이지에서는 승인된 네트워크를 사용하여 Google Kubernetes Engine(GKE) 클러스터의 제어 영역에 액세스할 수 있는 출처를 제한하는 방법을 보여줍니다. 승인된 네트워크는 신뢰할 수 있는 특정 IP 주소 집합에 대한 제어 영역 액세스 권한을 부여하고 GKE 클러스터에 보호 및 추가 보안 이점을 제공합니다.

승인된 네트워크의 작동 방식

승인된 네트워크는 GKE 제어 영역에 대한 액세스를 제어하는 IP 기반 방화벽을 제공합니다. 제어 영역에 대한 액세스는 GKE 클러스터의 유형 및 소스 IP 주소에 따라 달라집니다. 승인된 네트워크를 사용하여 GKE 클러스터의 제어 영역 엔드포인트에 대한 액세스를 CIDR 블록 목록으로 허용하려는 IP 주소를 구성합니다.

다음 용어는 클러스터 유형에 따라 적용되는 IP 기반 방화벽 규칙을 구분하는 데 사용됩니다.

IP 주소 차이점:

  • Google Cloud에 있는 모든 Compute Engine VM의 공개 IP 주소: Google Cloud에서 호스팅되는 모든 고객이 사용하는 모든 VM에 할당된 공개 IP 주소입니다. Google Cloud는 이러한 IP 주소를 소유합니다. 자세한 내용은 Compute Engine IP 범위를 어디에서 찾을 수 있나요?를 참조하세요.
  • Google Cloud Platform IP 주소: Cloud Run 또는 Cloud Functions와 같은 Google Cloud 제품에서 사용되는 IP 주소입니다. Google Cloud에서 호스팅되는 모든 클라이언트는 이러한 IP 주소를 인스턴스화할 수 있습니다. Google Cloud는 이러한 IP 주소를 소유합니다.
  • Google에서 예약한 IP 주소: GKE 클러스터 관리 용도의 공개 IP 주소입니다. 이러한 IP 주소에는 GKE 관리형 프로세스 및 기타 프로덕션 Google 서비스가 포함됩니다. Google에서 이러한 IP 주소를 소유합니다.
  • 인터넷 공개 IP 주소: RFC 1918이 아닌 Google 이외의 공개 IP 주소입니다. Google 또는 Google Cloud 제품 모두 이러한 공개 IP 주소를 소유하지 않습니다.
  • GKE 클러스터 IP 주소 범위: GKE에서 클러스터의 노드, 포드, 서비스에 사용하는 클러스터에 할당된 IP 주소입니다.
  • 비공개로 사용되는 IP 주소: 클러스터 VPC 네트워크의 IP 주소입니다. 이러한 IP 주소에는 클러스터 IP 주소, 온프레미스 네트워크, RFC 1918 범위, RFC 1918이 아닌 범위가 포함된 비공개로 사용된 공개 IP(PUPI) 주소가 포함될 수 있습니다.

클러스터 유형

  • 기존 공개 클러스터: 공개 IP 주소가 노드에 할당된 기존 네트워크 또는 VPC 네트워크에서 실행되는 공개 클러스터입니다. Private Service Connect 아키텍처로 마이그레이션되지 않았습니다.
  • 기존 비공개 클러스터: 비공개 IP 주소만 있는 노드의 제어 영역 연결에 대한 VPC 네트워크 피어링을 기반으로 하는 클러스터입니다.
  • 공개 또는 비공개로 생성된 PSC 기반 클러스터: GKE 클러스터 제어 영역과 노드 간의 통신을 위해 Private Service Connect 아키텍처를 사용하는 클러스터입니다. 클러스터가 Private Service Connect를 사용하는지 확인하려면 GKE 제어 영역을 참조하세요.

제어 영역 엔드포인트에 대한 액세스

다음 표에서는 클러스터 생성 시 승인된 기본 네트워크 상태를 보여줍니다. GKE 클러스터 및 제어 영역 엔드포인트 유형에 따라 다음을 결정할 수 있습니다.

  • 항상 GKE 제어 영역에 액세스할 수 있는 사전 설정된 IP 주소
  • 승인된 네트워크가 사용 설정된 클러스터의 제어 영역에 액세스하도록 구성할 수 있는 IP 주소

구성 가능한 IP 주소는 허용 목록에 추가하고 승인된 네트워크를 사용 설정하면 클러스터의 제어 영역에 액세스할 수 있습니다.

GKE 클러스터 및 제어 영역 엔드포인트 유형 기본 제어 영역 승인 네트워크 상태 항상 GKE 제어 영역에 액세스할 수 있는 사전 설정된 IP 주소1 승인된 네트워크가 사용 설정된 GKE 제어 영역에 액세스할 수 있는 구성 가능한 IP 주소2
기존 공개 클러스터 또는 VPC 네트워크 피어링 기반의 비공개 클러스터
공개 엔드포인트가 있는 기존 공개 클러스터 사용 중지됨
  • Google Cloud에 있는 모든 Compute Engine VM의 공개 IP 주소
  • Google Cloud Platform IP 주소
  • Google에서 예약한 IP 주소
  • GKE 클러스터 IP 주소 범위
  • 클러스터의 공개 IP 엔드포인트에 액세스하도록 허용 목록에 포함된 인터넷 공개 IP 주소
공개 및 비공개 엔드포인트가 있는 기존 비공개 클러스터 사용 설정됨
  • Google에서 예약한 IP 주소
  • GKE 클러스터 IP 주소 범위(노드, 포드, 서비스에는 비공개 IP 주소만 있음)
  • 클러스터의 비공개 엔드포인트에 액세스하기 위해 클러스터 네트워크에서 비공개로 사용되는 허용 목록에 추가된 IP 주소
  • --enable-private-endpoint 플래그가 중지된 경우 클러스터의 공개 엔드포인트에 액세스하기 위해 허용 목록에 추가된 인터넷 공개 IP 주소
Private Service Connect를 사용하는 클러스터
공개로 생성된 클러스터 사용 중지됨
  • 클러스터 네트워크의 모든 비공개 IP 주소(학습된 VPC 네트워크 피어링 경로 제외)

–enable-google-cloud 플래그가 설정된 경우(기본값) 다음 IP 주소가 GKE 제어 영역에 액세스할 수 있습니다.

  • Google Cloud에 있는 모든 Compute Engine VM의 공개 IP 주소
  • Google Cloud Platform IP 주소
  • Google에서 예약한 IP 주소
  • GKE 클러스터 노드의 공개 IP 주소

–no-enable-google-cloud 플래그가 설정된 경우, 다음 IP 주소가 GKE 제어 영역에 액세스할 수 있습니다.

  • Google에서 예약한 IP 주소
  • GKE 클러스터 IP 주소 범위(노드, 포드, 서비스에는 비공개 IP 주소만 있음)

자세한 내용은 클러스터 격리 변경을 참조하세요.

  • 클러스터의 공개 엔드포인트에 액세스하도록 허용 목록에 포함된 인터넷 공개 IP 주소
비공개로 생성된 클러스터 사용 설정됨

노드, 포드, 서비스와 같은 GKE 클러스터 IP 주소 범위에는 비공개 IP 주소만 있습니다.

기본적으로 클러스터가 생성될 때 –enable-google-cloud는 사용 중지됩니다. 하지만 –enable-google-cloud 플래그를 설정하면 다음 IP 주소가 GKE 제어 영역에 액세스할 수 있습니다.

  • Google Cloud에 있는 모든 Compute Engine VM의 공개 IP 주소
  • Google Cloud Platform IP 주소
  • Google에서 예약한 IP 주소
  • GKE 클러스터 노드의 공개 IP 주소

–no-enable-google-cloud 플래그가 설정된 경우, 다음 IP 주소가 GKE 제어 영역에 액세스할 수 있습니다.

  • Google에서 예약한 IP 주소
  • GKE 클러스터 IP 주소 범위(노드, 포드, 서비스에는 비공개 IP 주소만 있음)

자세한 내용은 클러스터 격리 변경을 참조하세요.

  • --enable-private-endpoint 플래그가 중지된 경우 클러스터의 공개 엔드포인트에 액세스하기 위해 허용 목록에 추가된 인터넷 공개 IP 주소
  • 클러스터의 비공개 엔드포인트에 액세스하기 위해 클러스터 네트워크에서 비공개로 사용되는 허용 목록에 추가된 IP 주소
  1. 승인된 네트워크 사용 설정 또는 중지 여부에 관계없이 GKE 제어 영역에 항상 액세스할 수 있는 IP 주소

  2. 클러스터 제어 영역에 액세스하려면 구성 가능한 IP 주소를 허용 목록에 추가해야 합니다.

제한사항

  • 승인된 네트워크가 있는 클러스터에서 사용되는 서브넷을 확장하는 경우 확장된 IP 주소 범위를 포함하도록 승인된 네트워크 구성을 업데이트해야 합니다.
  • 공개 및 비공개 IP 주소에 지정할 수 있는 승인된 IP 주소 범위의 수는 클러스터 유형에 따라 다릅니다.

    • 공개 클러스터: IP 주소 범위 50개
    • 비공개 클러스터: IP 주소 범위 100개
    • PSC 기반 클러스터: IP 주소 범위 100개

시작하기 전에

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

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

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

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

gcloud

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

gcloud container clusters create-auto 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 Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

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

  3. Autopilot 또는 Standard 섹션에서 구성을 클릭합니다.

  4. 필요에 따라 클러스터를 구성합니다.

  5. 탐색 메뉴에서 네트워킹을 클릭합니다.

  6. 고급 네트워킹 옵션에서 제어 영역 승인된 네트워크 사용 설정 체크박스를 선택합니다.

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

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

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

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

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

API

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

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

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

하나 이상의 승인된 네트워크로 비공개 클러스터를 구성할 수 있습니다. 자세한 내용은 비공개 클러스터를 참조하세요.

제어 영역 액세스가 제한된 클러스터 만들기

GKE는 공개 클러스터의 제어 영역에 공개 IP 주소(외부 엔드포인트)를 할당합니다. Private Service Connect를 사용하여 노드와 제어 영역을 비공개로 연결하는 공개 클러스터에서 클러스터 격리를 추가로 설정할 수 있습니다. 클러스터가 Private Service Connect를 사용하는지 확인하려면 Private Service Connect를 사용하는 공개 클러스터를 참조하세요.

클러스터를 만들고 다음 원본에서 제어 영역으로의 액세스를 차단하도록 GKE에 지시할 수 있습니다.

Google Cloud CLI 또는 Google Cloud 콘솔을 사용하여 클러스터를 만들고 제어 영역 액세스를 정의할 수 있습니다.

gcloud

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

gcloud container clusters create-auto CLUSTER_NAME
    --no-enable-google-cloud-access

CLUSTER_NAME을 GKE 클러스터의 이름으로 바꿉니다.

이 명령어를 사용하면 no-enable-google-cloud-access 플래그는 Google Cloud가 소유하는 IP 주소에서 제어 영역에 액세스할 수 없도록 합니다.

콘솔

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

    Google Kubernetes Engine으로 이동

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

  3. Autopilot 또는 Standard 섹션에서 구성을 클릭합니다.

  4. 필요에 따라 클러스터를 구성합니다.

  5. 탐색 메뉴에서 네트워킹을 클릭합니다.

  6. 고급 네트워킹 옵션에서 제어 영역 승인된 네트워크 사용 설정 체크박스를 선택합니다.

  7. Google Cloud에서 소유한 IP 주소에서 제어 영역에 액세스할 수 없도록 Google Cloud 공개 IP 주소를 통한 액세스 허용 체크박스를 선택 해제합니다.

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

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

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

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

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

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

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

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 Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

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

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

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

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

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

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

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

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

API

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

"desiredMasterAuthorizedNetworksConfig": {
    object(MasterAuthorizedNetworksConfig)
  }

승인된 네트워크 확인

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

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

gcloud

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

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

콘솔

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

    Google Kubernetes Engine으로 이동

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

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

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

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

승인된 네트워크 삭제

gcloud

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

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

콘솔

  1. Google Cloud 콘솔에서 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 블록을 100개 이하로 지정합니다.

서버에 연결할 수 없음

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

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

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

다음 단계