Cloud Composer 1 | Cloud Composer 2
このページでは、プライベート IP 環境でプライベートで使用されるパブリック IP 範囲を使用する方法について説明します。 プライベート IP 環境の作成に関する一般的な情報については、プライベート IP 環境を構成するをご覧ください。
Cloud Composer でプライベートで使用されるパブリック IP 範囲について
Google Kubernetes Engine のリソースには多くの IP アドレスが必要です。各 Node、Pod、Service には固有の IP アドレスが必要です。このため、既存のプライベート IP 範囲では、十分な数の IP アドレスを確保できない場合があります。
Cloud Composer 環境では、追加の構成を行わずに、RFC 1918 以外のアドレス空間の IP 範囲を使用できます。
より多くの IP アドレスを使用する場合、環境では、Pod と Service の内部サブネット IP アドレス範囲として、特定のパブリック IP アドレス範囲をプライベートで使用できます。このような範囲は、プライベートで使用されるパブリック IP(PUPI)範囲と呼ばれます。
パブリック IP アドレスは、特定の制限付き範囲を除いてすべてプライベートに使用できます。
始める前に
新しい環境を作成する場合は、パブリック IP 範囲のみを指定できます。既存の環境の IP 範囲は変更できません。
環境は、プライベート IP 環境である必要があります。
PUPI 範囲がある環境は、
gcloud
、Terraform、REST API でのみ作成できます。パブリック IP 範囲は、GKE Pod と Service だけが使用できます。Cloud SQL、ウェブサーバー、GKE コントロール プレーンなどの他の環境コンポーネントでは、パブリック IP 範囲をプライベート IP 環境で使用できません。
GKE クラスタは、デフォルトの SNAT を無効にして作成されます。
環境を作成するときに PUPI 範囲を有効にする
gcloud
PUPI 範囲がある環境を作成するには、プライベート IP 環境を作成するときに --enable-privately-used-public-ips
引数を使用します。次に、Pod と Service にパブリック IP 範囲を指定します。
GKE により管理されるサブネットの範囲
GKE により管理されるサブネット範囲を作成するには、次のようにします。
gcloud composer environments create ENVIRONMENT_NAME \
--location LOCATION \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--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 アドレス範囲として追加され、Pod の IP アドレス範囲として使用されます。SERVICES_IP_RANGE
は、CIDR 表記の IP アドレス範囲に置き換えます。この範囲は、環境のサブネットワーク内に存在するサービスのセカンダリ IP アドレス範囲です。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--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-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--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 アドレス範囲の名前に置き換えます。 この範囲は Pod で使用されます。SERVICES_IP_RANGE_NAME
は、指定したサブネットワークの既存のセカンダリ IP アドレス範囲の名前に置き換えます。 この範囲はサービスで使用されます。
例:
gcloud composer environments create example-environment \
--location us-central1 \
--image-version composer-1.20.12-airflow-1.10.15 \
--enable-ip-alias \
--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": {
"useIpAliases": true,
"clusterIpv4CidrBlock":"POD_IP_RANGE",
"servicesIpv4CidrBlock":"SERVICES_IP_RANGE"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。POD_IP_RANGE
は、CIDR 表記の IP アドレス範囲に置き換えます。この範囲は環境のサブネットワークにセカンダリ IP アドレス範囲として追加され、Pod の IP アドレス範囲として使用されます。SERVICES_IP_RANGE
は、CIDR 表記の IP アドレス範囲に置き換えます。この範囲は、環境のサブネットワーク内に存在するサービスのセカンダリ IP アドレス範囲です。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "example-environment",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
"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": {
"useIpAliases": true,
"clusterSecondaryRangeName":"POD_IP_RANGE",
"servicesSecondaryRangeName": "SERVICES_IP_RANGE"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
以下のように置き換えます。
ENVIRONMENT_NAME
を環境の名前にする。POD_IP_RANGE_NAME
は、指定したサブネットワークの既存のセカンダリ IP アドレス範囲の名前に置き換えます。 この範囲は Pod で使用されます。SERVICES_IP_RANGE_NAME
は、指定したサブネットワークの既存のセカンダリ IP アドレス範囲の名前に置き換えます。 この範囲はサービスで使用されます。
例:
// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments
{
"name": "example-environment",
"config": {
"nodeConfig": {
"ipAllocationPolicy": {
"useIpAliases": true,
"clusterSecondaryRangeName":"public-1",
"servicesSecondaryRangeName": "public-2"
}
},
"privateEnvironmentConfig": {
"enablePrivateEnvironment": true,
"enablePrivatelyUsedPublicIps": true
}
}
}
Terraform
環境を作成するとき、private_environment_config
ブロックの enable_privately_used_public_ips
フィールドで PUPI 範囲の使用を有効にします。また、Pod とサービスに PUPI 範囲を指定する必要があります。
GKE により管理されるサブネットの範囲
GKE により管理されるサブネット範囲を作成するには、次のようにします。
resource "google_composer_environment" "example_environment" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
node_config {
ip_allocation_policy = [{
use_ip_aliases = true
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 アドレス範囲として追加され、Pod の 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 = [{
use_ip_aliases = true
// 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 = [{
use_ip_aliases = true
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 アドレス範囲の名前に置き換えます。 この範囲は Pod で使用されます。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 = [{
use_ip_aliases = true
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
}
}
}