비공개로 사용되는 공개 IP 범위 구성

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

이 페이지에서는 비공개 IP 환경에서 비공개로 사용되는 공개 IP 범위를 사용하는 방법을 설명합니다. 비공개 IP 환경 만들기에 대한 자세한 내용은 비공개 IP 환경 구성을 참조하세요.

Cloud Composer에서 비공개로 사용되는 공개 IP 범위 정보

Google Kubernetes Engine에는 리소스에 여러 IP 주소가 필요합니다. 각 노드, 포드, 서비스에는 고유한 IP 주소가 있어야 합니다. 이로 인해 기존 비공개 IP 범위에서 충분한 IP 주소를 수용하지 못하게 될 수 있습니다.

Cloud Composer 환경은 추가 구성 없이 RFC 1918 이외의 주소 공간의 일부 IP 범위를 사용할 수 있습니다.

더 많은 IP 주소를 사용하려는 경우 환경에서 특정 공개 IP 주소 범위를 포드 및 서비스의 내부 서브넷 IP 주소 범위로 비공개로 사용할 수 있습니다. 이러한 범위를 비공개로 사용되는 공개 IP(PUPI) 범위라고 합니다.

특정 제한된 범위를 제외한 모든 공개 IP 주소를 비공개로 사용할 수 있습니다.

시작하기 전에

  • 새 환경을 만들 때는 공개 IP 범위만 지정할 수 있습니다. 기존 환경의 IP 범위는 변경할 수 없습니다.

  • 해당 환경은 비공개 IP 환경이어야 합니다.

  • gcloud, Terraform, REST API만 사용하여 PUPI 범위로 환경을 만들 수 있습니다.

  • GKE 포드 및 서비스만 공개 IP 범위를 사용할 수 있습니다. Cloud SQL, 웹 서버, GKE 제어 영역 등의 다른 환경 구성요소는 비공개 IP 환경에서 공개 IP 범위를 사용할 수 없습니다.

  • GKE 클러스터는 기본 SNAT가 중지된 상태로 생성됩니다.

환경을 만들 때 PUPI 범위 사용 설정

gcloud

PUPI 범위로 환경을 만들려면 비공개 IP 환경을 만들 때 --enable-privately-used-public-ips 인수를 사용합니다. 그런 다음 포드 및 서비스에 대한 공개 IP 범위를 지정합니다.

GKE에서 관리되는 서브넷 범위

GKE에서 관리되는 서브넷 범위를 만들려면 다음 안내를 따르세요.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.10.0-airflow-2.10.2 \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr POD_IP_RANGE \
    --services-ipv4-cidr SERVICES_IP_RANGE

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • POD_IP_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 환경의 서브네트워크에 보조 IP 주소 범위로 추가되며 포드의 IP 주소 범위로 사용됩니다.
  • SERVICES_IP_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 서브네트워크에 있는 서비스의 보조 IP 주소 범위입니다.

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

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.10.0-airflow-2.10.2 \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr 10.3.192.0/20 \
    --services-ipv4-cidr 172.16.194.0/23

사용자 관리 서브넷 범위

사용자 관리형 범위를 만들려면 다음 안내를 따르세요.

gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version composer-2.10.0-airflow-2.10.2 \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-secondary-range-name POD_IP_RANGE_NAME \
    --services-secondary-range-name SERVICES_IP_RANGE_NAME

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • POD_IP_RANGE_NAME지정된 서브네트워크에 있는 기존 보조 IP 주소 범위의 이름으로 바꿉니다. 이 범위는 포드에 사용됩니다.
  • SERVICES_IP_RANGE_NAME지정된 서브네트워크에 있는 기존 보조 IP 주소 범위의 이름으로 바꿉니다. 이 범위는 서비스에 사용됩니다.

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

gcloud composer environments create example-environment \
    --location us-central1 \
    --image-version composer-2.10.0-airflow-2.10.2 \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-secondary-range-name "public-1" \
    --services-secondary-range-name "public-2"

API

environments.create API 요청을 생성합니다. 환경 리소스에서 PUPI 범위로 환경의 구성 매개변수를 지정합니다.

GKE에서 관리되는 서브넷 범위

GKE에서 관리되는 서브넷 범위를 만들려면 다음 안내를 따르세요.

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "clusterIpv4CidrBlock":"POD_IP_RANGE",
        "servicesIpv4CidrBlock":"SERVICES_IP_RANGE"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • POD_IP_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 환경의 서브네트워크에 보조 IP 주소 범위로 추가되며 포드의 IP 주소 범위로 사용됩니다.
  • SERVICES_IP_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 서브네트워크에 있는 서비스의 보조 IP 주소 범위입니다.

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

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "clusterIpv4CidrBlock":"10.3.192.0/20",
        "servicesIpv4CidrBlock":"172.16.194.0/23"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

사용자 관리 서브넷 범위

사용자 관리형 범위를 만들려면 다음 안내를 따르세요.

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "clusterSecondaryRangeName":"POD_IP_RANGE",
        "servicesSecondaryRangeName": "SERVICES_IP_RANGE"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME을 환경 이름으로 바꿉니다.
  • POD_IP_RANGE_NAME지정된 서브네트워크에 있는 기존 보조 IP 주소 범위의 이름으로 바꿉니다. 이 범위는 포드에 사용됩니다.
  • SERVICES_IP_RANGE_NAME지정된 서브네트워크에 있는 기존 보조 IP 주소 범위의 이름으로 바꿉니다. 이 범위는 서비스에 사용됩니다.

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

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "clusterSecondaryRangeName":"public-1",
        "servicesSecondaryRangeName": "public-2"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true
    }
  }
}

Terraform

환경을 만들 때 private_environment_config 블록의 enable_privately_used_public_ips 필드에서 PUPI 범위의 사용을 지원합니다. 포드 및 서비스에 PUPI 범위도 지정해야 합니다.

GKE에서 관리되는 서브넷 범위

GKE에서 관리되는 서브넷 범위를 만들려면 다음 안내를 따르세요.

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {

      ip_allocation_policy = [{
        
        cluster_ipv4_cidr_block = "POD_IP_RANGE"
        services_ipv4_cidr_block = "SERVICES_IP_RANGE"
        cluster_secondary_range_name = null
        services_secondary_range_name = null
      }]
    }

    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private ip environment parameters
    }

  }
}

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • POD_IP_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 환경의 서브네트워크에 보조 IP 주소 범위로 추가되며 포드의 IP 주소 범위로 사용됩니다.
  • SERVICES_IP_RANGE를 CIDR 표기법으로 표시된 IP 주소 범위로 바꿉니다. 이 범위는 해당 환경의 서브네트워크에 있는 서비스의 보조 IP 주소 범위입니다.

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

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {

      // Specify your network and subnetwork
      network    = google_compute_network.example_network.id
      subnetwork = google_compute_subnetwork.example_subnet.id

      ip_allocation_policy = [{
        
        // Specify PUPI addresses
        cluster_ipv4_cidr_block = "10.3.192.0/20"
        services_ipv4_cidr_block = "172.16.194.0/23"
        cluster_secondary_range_name = null
        services_secondary_range_name = null
      }]
    }

    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private environment parameters
    }

  }
}

사용자 관리 서브넷 범위

사용자 관리형 범위를 만들려면 다음 안내를 따르세요.

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    node_config {

      ip_allocation_policy = [{
        
        cluster_ipv4_cidr_block = null
        services_ipv4_cidr_block = null
        cluster_secondary_range_name = POD_IP_RANGE_NAME
        services_secondary_range_name = SERVICES_IP_RANGE_NAME
      }]
    }

    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private ip environment parameters
    }

  }

다음과 같이 바꿉니다.

  • ENVIRONMENT_NAME: 환경 이름
  • LOCATION을 환경이 위치한 리전으로 바꿉니다.
  • POD_IP_RANGE_NAME지정된 서브네트워크에 있는 기존 보조 IP 주소 범위의 이름으로 바꿉니다. 이 범위는 포드에 사용됩니다.
  • SERVICES_IP_RANGE_NAME지정된 서브네트워크에 있는 기존 보조 IP 주소 범위의 이름으로 바꿉니다. 이 범위는 서비스에 사용됩니다.

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

resource "google_composer_environment" "example_environment" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    node_config {

      // Specify your network and subnetwork
      network    = google_compute_network.example_network.id
      subnetwork = google_compute_subnetwork.example_subnet.id

      ip_allocation_policy = [{
        
        cluster_ipv4_cidr_block = null
        services_ipv4_cidr_block = null
        // Specify existing ranges
        cluster_secondary_range_name = "public-1"
        services_secondary_range_name = "public-2"
      }]
    }
    private_environment_config {
      enable_privately_used_public_ips = true
      // Other private environment parameters
    }

  }
}

다음 단계