비공개 IP Cloud Composer 환경 구성

이 페이지에서는 비공개 IP Cloud Composer 환경 구성 정보를 제공합니다.

비공개 IP를 사용 설정하면 Cloud Composer가 사용자 환경의 관리형 Google Kubernetes Engine 및 Cloud SQL VM에 비공개 IP(RFC 1918) 주소만 할당합니다.

사용자 환경의 리소스에 연결하는 방법에 대한 자세한 내용은 비공개 IP를 참조하세요.

시작하기 전에

액세스 제어

네트워크 요구사항

프로젝트의 VPC 네트워크가 다음 요구사항을 충족하는지 확인합니다.

  • 비공개 IP 블록 충돌이 없는지 확인합니다. VPC 네트워크와 설정된 VPC 피어에 Google 관리 테넌트 프로젝트의 VPC 네트워크와 겹치는 IP 블록이 있으면 Cloud Composer가 환경을 만들 수 없습니다. 각 리전에서 사용되는 기본값은 아래 표웹 서버 IP 범위 열을 참조하세요.
  • Cloud Composer GKE pod 및 서비스에 충분한 보조 IP 범위가 있는지 확인합니다. GKE는 IP 별칭 지정을 위한 보조 IP 범위를 검색합니다. GKE가 범위를 찾을 수 없으면 Cloud Composer가 환경을 만들 수 없습니다.
  • VPC 네트워크의 VPC 피어링 연결 수가 25개를 초과하지 않는지 확인합니다. 다음 사항을 고려하세요.
    • Cloud Composer는 각 비공개 IP Cloud Composer 환경에 테넌트 프로젝트 네트워크에 대한 피어링 연결을 하나 만듭니다.
    • 비공개 GKE 클러스터는 VPC 네트워크에 또 다른 VPC 피어링 연결을 만듭니다.
    • Cloud Composer가 지원할 수 있는 비공개 IP Cloud Composer 환경의 최대 수는 12개입니다.
    • 사용자가 만들 수 있는 비공개 IP Cloud Composer 환경의 최대 수는 VPC 네트워크에서 사용 중인 VPC 피어링 연결 수에 따라 달라집니다.
  • 서브네트워크의 보조 범위 수가 30개를 초과하지 않는지 확인합니다. 다음 사항을 고려하세요.
    • 비공개 IP Cloud Composer 환경의 GKE 클러스터는 서브네트워크에 보조 범위 2개를 만듭니다. 동일한 VPC 네트워크의 동일한 리전에 여러 서브네트워크를 만들 수 있습니다.
    • 지원되는 보조 범위 최대 수는 30개입니다. 각 비공개 IP Cloud Composer 환경에서는 Cloud Composer GKE Pod와 서비스에 보조 범위 두 개가 필요하므로 각 서브네트워크는 비공개 IP Cloud Composer 환경을 최대 15개까지 지원합니다.

VPC 기반 구성

Cloud Composer는 환경에서 VPC 기반 GKE 클러스터를 지원합니다.

환경을 만들비공개 IP를 사용 설정하지 않고 별칭 IP를 사용하는 VPC 기반을 사용 설정하고 IP 할당과 같은 네트워킹을 구성할 수 있습니다.

Airflow 태스크가 비공개 IP를 통해 연결 가능한 다른 VM과 통신하려면 VPC 기반 클러스터가 필요합니다. 따라서 비공개 IP 환경을 구성하려면 VPC 기반도 사용 설정해야 합니다.

다음은 비공개 IP 및 보조 범위 구성의 예시입니다.

비공개 IP Cloud Composer 환경 및 보조 범위 구성

Console

  1. Google Cloud Console에서 환경 만들기 페이지를 엽니다.

    환경 만들기 페이지 열기

  2. 환경을 구성합니다.
  3. VPC 기반 사용 설정(별칭 IP 사용)을 선택합니다.
  4. 필요에 따라 IP 별칭 보조 범위를 포함하여 환경의 GKE 클러스터에 사용할 네트워크 구성을 입력합니다.
  5. 비공개 IP Cloud Composer 환경을 사용 설정하려면 비공개 IP 환경을 선택합니다.
  6. GKE 클러스터 마스터 비공개 IP 범위에서 마스터 VPC의 IP 범위를 입력하거나 기본 IP 범위를 사용합니다.
  7. 사용자 환경에서 GKE 클러스터의 공개 엔드포인트를 사용 설정하려면 외부 IP 주소를 사용한 GKE 마스터 액세스를 선택합니다.

    클러스터가 공개 엔드포인트 액세스 사용 안 함으로 구성됩니다.

  8. 웹 서버 비공개 IP에서 Airflow 웹 서버의 IP 범위를 입력하거나 기본 IP 범위를 사용합니다.
  9. Cloud SQL 비공개 IP에서 Cloud SQL 인스턴스의 IP 범위를 입력하거나 기본 IP 범위를 사용합니다.
  10. 환경 구성을 완료했으면 만들기를 클릭합니다.

gcloud

필요에 따라 비공개 IP Cloud Composer 환경의 다음 인수를 포함한 환경을 구성합니다.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION --enable-private-environment \
    OTHER_ARGUMENTS

지정된 경우를 제외하고 다음 매개변수가 필요합니다.

  • ENVIRONMENT_NAME은 환경 이름입니다. ^[a-z](?:[-0-9a-z]{0,62}[0-9a-z])?$ 패턴과 일치해야 합니다.
  • LOCATION은 환경이 위치한 Compute Engine 리전입니다.
  • --enable-private-environment - 비공개 IP Cloud Composer 환경을 사용 설정합니다.
  • --enable-ip-alias - 별칭 IP 주소를 사용하는 VPC 기반을 사용 설정합니다. 이 매개변수는 --enable-private-environment를 사용할 때 또는 Pod와 서비스에 보조 범위를 구성할 때 필요합니다.
    • --cluster-secondary-range-name 또는 --cluster-ipv4-cidr - Pod의 보조 범위를 구성합니다.
    • --services-secondary-range-name 또는 --services-ipv4-cidr - 서비스의 보조 범위를 구성합니다.
  • master-ipv4-cidr - 마스터 VPC의 비공개 RFC 1918 범위를 지정합니다.
  • (선택사항) enable-private-endpoint - 환경에서 GKE 클러스터의 공개 엔드포인트를 사용 설정합니다. 클러스터가 공개 엔드포인트 액세스 사용 안 함으로 구성됩니다.

다음 예시에서는 n1-standard-2 머신을 사용하는 us-central1 리전에 지원되는 최신 Cloud Composer 이미지 버전을 실행하는 환경을 만듭니다.

이 환경에 비공개 IP가 사용 설정되며 192.168.2.0/28은 GKE 마스터 VPC의 IP 범위입니다.

gcloud composer environments create test-environment \
    --location us-central1 \
    --zone us-central1-f \
    --machine-type n1-standard-2 \
    --image-version composer-latest-airflow-x.y.z \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-private-endpoint \
    --master-ipv4-cidr 192.168.2.0/28 

API

Cloud Composer REST API를 사용하여 새 Cloud Composer 환경을 만들려면 Environment 리소스에 구성 정보를 입력하여 environments.create API 요청을 작성합니다.

예를 들어 이 API 요청은 us-central1-c 영역에 privateip-test라는 새 환경을 만듭니다.

POST https://composer.googleapis.com/v1/projects/test-project/locations/us-central1/environments{
  "config":{
    "nodeConfig":{
      "ipAllocationPolicy":{
        "useIpAliases":true,
        "clusterIpv4CidrBlock":"10.56.0.0/14",
        "servicesIpv4CidrBlock":"10.122.0.0/20"
      },
      "location":"projects/test-project/zones/us-central1-c",
      "network":"projects/test-project/global/networks/default",
      "oauthScopes":[

      ],
      "subnetwork":"projects/test-project/regions/us-central1/subnetworks/default",
      "tags":[

      ]
    },
    "nodeCount":3,
    "privateEnvironmentConfig":{
      "cloudSqlIpv4CidrBlock":"10.32.0.0/12",
      "webServerIpv4CidrBlock":"172.30.240.0/24",
      "enablePrivateEnvironment":true,
      "privateClusterConfig":{
        "enablePrivateEndpoint":false,
        "masterIpv4CidrBlock":"172.18.50.0/28"
      }
    },
    "softwareConfig":{
      "airflowConfigOverrides":{

      },
      "envVariables":{

      },
      "pythonVersion":"3",
      "pypiPackages":{

      }
    }
  },
  "labels":{
    "purpose":"test"
  },
  "name":"projects/test-project/locations/us-central1/environments/privateip-test"
}

기본 IP 범위

리전 GKE 마스터 IP 범위 웹 서버 IP 범위 Cloud SQL IP 범위
asia-east2 172.16.0.0/23 172.31.255.0/24 10.0.0.0/12
asia-northeast1 172.16.2.0/23 172.31.254.0/24 10.0.0.0/12
asia-northeast2 172.16.32.0/23 172.31.239.0/24 10.0.0.0/12
asia-northeast3 172.16.30.0/23 172.31.240.0/24 10.0.0.0/12
asia-south1 172.16.4.0/23 172.31.253.0/24 10.0.0.0/12
australia-southeast1 172.16.6.0/23 172.31.252.0/24 10.0.0.0/12
europe-west1 172.16.8.0/23 172.31.251.0/24 10.0.0.0/12
europe-west2 172.16.10.0/23 172.31.250.0/24 10.0.0.0/12
europe-west3 172.16.12.0/23 172.31.249.0/24 10.0.0.0/12
europe-west6 172.16.14.0/23 172.31.248.0/24 10.0.0.0/12
northamerica-northeast1 172.16.16.0/23 172.31.247.0/24 10.0.0.0/12
southamerica-east1 172.16.18.0/23 172.31.246.0/24 10.0.0.0/12
us-central1 172.16.20.0/23 172.31.245.0/24 10.0.0.0/12
us-east1 172.16.22.0/23 172.31.244.0/24 10.0.0.0/12
us-east4 172.16.24.0/23 172.31.243.0/24 10.0.0.0/12
us-west2 172.16.34.0/23 172.31.238.0/24 10.0.0.0/12
us-west3 172.16.26.0/23 172.31.242.0/24 10.0.0.0/12
us-west4 172.16.28.0/23 172.31.241.0/24 10.0.0.0/12