プライベートで使用されるパブリック IP 範囲を構成する

このページでは、プライベート IP 環境で、プライベートで使用されるパブリック IP 範囲を使用する方法について説明します。プライベート IP 環境の作成に関する一般的な情報については、プライベート IP Cloud Composer 環境の構成をご覧ください。

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 beta composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --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 は、環境が配置される Compute Engine のリージョンに置き換えます。
  • POD_IP_RANGE は、CIDR 表記の IP アドレス範囲に置き換えます。この範囲は、環境のサブネットワークにセカンダリ IP アドレス範囲として追加され、Pod の IP アドレス範囲として使用されます。
  • SERVICES_IP_RANGE は、CIDR 表記の IP アドレス範囲に置き換えます。この範囲は、環境のサブネットワーク内の Service のセカンダリ IP アドレス範囲です。

例:

gcloud beta composer environments create example-environment \
    --location us-central1 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr 7.32.0.0/16 \
    --services-ipv4-cidr 7.33.0.0/16

ユーザーが管理するサブネットの範囲

ユーザーが管理する範囲を作成するには、次のようにします。

gcloud beta composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --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 は、環境が配置される Compute Engine のリージョンに置き換えます。
  • POD_IP_RANGE_NAME は、指定したサブネットワークの既存のセカンダリ IP アドレス範囲の名前に置き換えます。この範囲は、Pod によって使用されます。
  • SERVICES_IP_RANGE_NAME は、指定したサブネットワークの既存のセカンダリ IP アドレス範囲の名前に置き換えます。この範囲は、Service によって使用されます。

例:

gcloud beta composer environments create example-environment \
    --location us-central1 \
    --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 リクエストを作成します。Environment リソースで、PUPI 範囲を使用して環境の構成パラメータを指定します。

GKE により管理されるサブネットの範囲

GKE により管理されるサブネット範囲を作成するには、次のようにします。

// POST https://composer.googleapis.com/v1beta1/{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 アドレス範囲に置き換えます。この範囲は、環境のサブネットワーク内の Service のセカンダリ IP アドレス範囲です。

例:

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

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterIpv4CidrBlock":"7.32.0.0/16"
        "servicesIpv4CidrBlock":"7.33.0.0/16"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true,
    },
  }
}

ユーザーが管理するサブネットの範囲

ユーザーが管理する範囲を作成するには、次のようにします。

// POST https://composer.googleapis.com/v1beta1/{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 アドレス範囲の名前に置き換えます。この範囲は、Service によって使用されます。

例:

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

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

次のステップ