内部範囲を作成して使用する

このドキュメントでは、内部範囲を作成、使用、削除する方法について説明します。

内部範囲を使用すると、内部 IP アドレスのブロックを割り振ってブロックの使用方法を指定することで、Virtual Private Cloud(VPC)ネットワーク間で統合された IP アドレス空間を管理できます。

始める前に

  • このガイドのコマンドラインの例を使用するには、Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新してください。
  • プロジェクトで Network Connectivity API有効にする必要があります。

必要なロール

内部範囲の操作に必要な権限を取得するには、プロジェクトに対する Compute ネットワーク管理者roles/compute.networkAdmin)IAM ロールを付与するよう管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

内部範囲を予約する

内部範囲を作成する場合、少なくとも 2 つの要素を指定します。1 つは割り振る IP アドレス、もう 1 つはアドレスを割り振るネットワークです。特定の CIDR ブロックを使用して IPv4 または IPv6(プレビュー)内部範囲を作成することも、 Google Cloud に IPv4 ブロックを自動的に割り振らせることもできます。自動的に割り振られたアドレス ブロックを使用して IPv6 内部範囲を作成することはできません。

自動的に割り振られる IPv4 CIDR ブロックをリクエストする場合は、プレフィックス長と 1 つ以上のターゲット IPv4 CIDR ブロック(省略可)を指定します。ターゲット CIDR ブロックを指定しない場合、 Google Cloud はカスタムモード VPC ネットワークには 10.0.0.0/8、自動モード VPC ネットワークには 10.128.0.0/9 のデフォルト範囲を使用します。 Google Cloud は既存の IP アドレスの割り振りを考慮し、ターゲット CIDR ブロック内から選択したサイズの空き CIDR ブロックを内部範囲に割り振ります。この割り当てをさらに絞り込むには、gcloud CLI を使用するか、API リクエストを送信して、除外する CIDR ブロックのリストを指定します(プレビュー)。 Google Cloud は、除外されたブロックと重複しない内部範囲に IP アドレス ブロックを割り振ります。内部範囲の作成後に除外ブロックのリストを更新することはできません。

IPv6(プレビュー)内部範囲を使用すると、新しい IPv6 専用またはデュアルスタック サブネットへの IP アドレスの自動割り当てを防ぐことができます。IPv6 内部範囲は、使用タイプが EXTERNAL_TO_VPC、ピアリング タイプが FOR_SELF である必要があります。特定の IPv6 CIDR ブロックを含める必要があり、overlaps フィールドは空にするか未指定にする必要があります。

ユーザーが内部範囲の CIDR ブロックや重複構成を更新できないようにするには、変更不可の内部範囲(プレビュー)を作成します。変更不可の内部範囲では、これらのプロパティを変更できませんが、説明は更新できます。内部範囲の作成後に不変性を変更することはできません。

デフォルトでは、 Google Cloud は、同じ VPC ネットワーク内で重複する IP アドレスを共有している場合、内部範囲またはリソースの作成をブロックします。ルート、サブネット、またはその両方のアドレス範囲との重複を許可するように IPv4 内部範囲を構成できます。リソースを内部範囲に明示的に関連付ける(サブネットの場合)か、重複を構成(ルートの場合)しない限り、既存の内部範囲の IP アドレスを使用する Google Cloud リソースを作成することはできません。重複する内部範囲を作成するには、Google Cloud CLI を使用するか、API リクエストを送信します。

コンソール

  1. Google Cloud コンソールで、[内部範囲] ページに移動します。

    [内部範囲] に移動

  2. [内部範囲を予約] をクリックします。

  3. 名前を入力します。

  4. (省略可)説明を入力します。

  5. IP バージョンを選択します。

    • [IPv4] を選択した場合は、次の操作を行います。
      1. 内部範囲を変更不可にするかどうかを指定します(プレビュー)。
      2. 予約方法を選択します。
        • [自動] を選択した場合は、プレフィックス長を選択し、ターゲット IP アドレス範囲を CIDR 表記で入力します。
        • [手動で指定する] を選択した場合は、CIDR 表記で IP 範囲を入力します。
      3. ネットワークを選択します。
      4. ピアリングのタイプを選択します。
      5. 使用状況のタイプを選択します。
    • [IPv6](プレビュー)を選択した場合は、次の操作を行います。
      1. 内部範囲を変更不可にするかどうかを指定します(プレビュー)。
      2. [手動で指定する] を選択し、IPv6 または IPv4 にマッピングされた IPv6 CIDR ブロックを入力します。
      3. ネットワークを選択します。
      4. [ピアリング] をクリックし、[セルフ] を選択します。
      5. [用途] をクリックし、[VPC の外部] を選択します。
  6. [予約] をクリックします。

gcloud

  • 特定の IPv4 または IPv6(プレビュー)CIDR ブロックの内部範囲を予約するには、gcloud network-connectivity internal-ranges create コマンドを使用します。

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --network=NETWORK_NAME \
        --description="DESCRIPTION" \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE
    

    次のように置き換えます。

    • RANGE_NAME: 新しい内部範囲の名前
    • CIDR_RANGE: 新しい内部範囲に割り振る IPv4、IPv6、または IPv4 マッピングされた IPv6 CIDR ブロック
      • IPv6 ブロック(プレビュー)を指定する場合、オプションは次のように制限されます。
        • peering 型は FOR_SELF に制限されます。
        • usage 型は EXTERNAL_TO_VPC に制限されます。
    • NETWORK_NAME: 内部範囲を作成するネットワークの名前
    • DESCRIPTION: 内部範囲の説明(省略可)
    • PEERING_TYPE: 内部範囲のピアリング タイプ

      FOR_SELFFOR_PEERNOT_SHARED を指定できます。FOR_SELF がデフォルトです。

    • USAGE_TYPE: 内部範囲の使用タイプ。

      FOR_VPCEXTERNAL_TO_VPCFOR_MIGRATION を指定できます。デフォルト値は FOR_VPC です。

  • 自動的に割り振られた CIDR ブロックを使用して IPv4 内部範囲を予約するには、次のコマンドを使用します。

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --network=NETWORK_NAME \
        --prefix-length=PREFIX_LENGTH \
        --target-cidr-range=TARGET_CIDR_RANGE \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --description="DESCRIPTION"
    

    次のように置き換えます。

    • PREFIX_LENGTH: 割り振られる IP アドレスのプレフィックス長。
    • TARGET_CIDR_RANGE: IPv4 アドレス ブロックを割り振るターゲット CIDR ブロック。

      複数の CIDR ブロックをカンマ区切りリストで入力できます。デフォルトは、カスタムモードの VPC ネットワークの場合は 10.0.0.0/8、自動モードの VPC ネットワークの場合は 10.128.0.0/9 です。

  • 自動的に割り振られる CIDR ブロック(プレビュー)を使用して IPv4 内部範囲を予約するときに IP アドレス範囲を除外する場合は、次のコマンドを使用します。

    gcloud alpha network-connectivity internal-ranges create RANGE_NAME \
        --network=NETWORK_NAME \
        --prefix-length=PREFIX_LENGTH \
        --target-cidr-range=TARGET_CIDR_RANGE \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --description="DESCRIPTION" \
        --exclude-cidr-ranges=EXCLUDED_RANGES
    

    EXCLUDED_RANGES を、除外する 1 つ以上の IPv4 CIDR ブロックのカンマ区切りリストに置き換えます。 Google Cloud は、除外されたブロックと重複しない内部範囲に IP アドレス ブロックを割り振ります。内部範囲の作成後にリストを更新することはできません。

  • 重複する IPv4 内部範囲を予約するには、次のコマンドを使用します。

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --network=NETWORK_NAME \
        --description="DESCRIPTION" \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --overlaps=OVERLAPS
    

    OVERLAPS は、許可する重複のタイプに置き換えます。OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE を指定できます。両方の値をカンマ区切りリストで指定できます。

  • 変更不可(プレビュー)の内部範囲を予約するには、次のコマンドを使用します。

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --network=NETWORK_NAME \
        --description="DESCRIPTION" \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --immutable
    

API

  • 特定の IPv4 または IPv6(プレビュー)CIDR ブロックの内部範囲を予約するには、projects.locations.internalRanges.create メソッドPOST リクエストを送信します。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "ipCidrRange": "CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE"
    }
    

    次のように置き換えます。

    • PROJECT_ID: 内部範囲の親プロジェクトの ID
    • RANGE_NAME: 内部範囲の名前
    • CIDR_RANGE: 内部範囲に割り振る IPv4、IPv6、または IPv4 マッピングされた IPv6 CIDR ブロック
      • IPv6 ブロック(プレビュー)を指定する場合、オプションは次のように制限されます。
        • peering 型は FOR_SELF に制限されます。
        • usage 型は EXTERNAL_TO_VPC に制限されます。
    • NETWORK_NAME: 内部範囲を作成するネットワークの名前
    • DESCRIPTION: 新しい内部範囲の説明(省略可)
    • PEERING_TYPE: 内部範囲のピアリング タイプ

      FOR_SELFFOR_PEERNOT_SHARED を指定できます。FOR_SELF がデフォルトです。

    • USAGE_TYPE: 内部範囲の使用タイプ。

      FOR_VPCEXTERNAL_TO_VPCFOR_MIGRATION を指定できます。デフォルト値は FOR_VPC です。

  • 自動的に割り振られた CIDR ブロックで IPv4 内部範囲を予約するには、次のリクエストを実行します。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "prefixLength": PREFIX_LENGTH,
      "targetCidrRange": "TARGET_CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE"
    }
    

    次のように置き換えます。

    • PREFIX_LENGTH: 範囲の IP アドレス ブロックの CIDR プレフィックスの長さ。
    • TARGET_CIDR_RANGE: IPv4 アドレス ブロックを割り振るターゲット CIDR ブロック。

      JSON 配列で複数の CIDR 範囲を指定できます。デフォルトは、カスタムモードの VPC ネットワークの場合は 10.0.0.0/8、自動モードの VPC ネットワークの場合は 10.128.0.0/9 です。

  • 自動的に割り振られる CIDR ブロック(プレビュー)を使用して IPv4 内部範囲を予約するときに IP アドレス範囲を除外する場合は、次のリクエストを行います。

    POST https://networkconnectivity.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "prefixLength": PREFIX_LENGTH,
      "targetCidrRange": "TARGET_CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "excludeCidrRanges": ["EXCLUDED_RANGE_1","EXCLUDED_RANGE_2"]
    }
    

    EXCLUDED_RANGE_1EXCLUDED_RANGE_2 を、除外する 1 つ以上の IPv4 CIDR ブロックに置き換えます。 Google Cloud は、除外されたブロックと重複しない内部範囲に IP アドレス ブロックを割り振ります。内部範囲の作成後にリストを更新することはできません。

  • 重複する IPv4 内部範囲を予約するには、次のリクエストを行います。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "ipCidrRange": "CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "overlaps": ["OVERLAPS"]
    }
    

    OVERLAPS は、許可する重複のタイプに置き換えます。OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE を指定できます。両方の値を JSON 配列に含めることができます。

  • 変更不可(プレビュー)の内部範囲を予約するには、次のリクエストを行います。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "ipCidrRange": "CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "immutable": true
    }
    

サブネット移行用に IPv4 内部範囲を予約する

内部範囲を使用して、CIDR 範囲をサブネット間で移行できます。詳細については、IPv4 サブネット範囲の移行をご覧ください。

gcloud

gcloud network-connectivity internal-ranges create コマンドを使用します。

gcloud network-connectivity internal-ranges create RANGE_NAME \
    --ip-cidr-range=CIDR_RANGE \
    --network=NETWORK_NAME \
    --peering=FOR_SELF \
    --usage=FOR_MIGRATION \
    --migration-source=SOURCE_SUBNET \
    --migration-target=TARGET_SUBNET

次のように置き換えます。

  • RANGE_NAME: 作成する内部範囲の名前
  • CIDR_RANGE: 移行するサブネットの IPv4 CIDR ブロック
  • NETWORK_NAME: 内部範囲を作成するネットワークの名前
  • SOURCE_SUBNET: ソース サブネットの URI
  • TARGET_SUBNET: ターゲット サブネットの URI

API

projects.locations.internalRanges.create メソッドPOST リクエストを送信します。

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
{
  "ipCidrRange": "CIDR_RANGE",
  "network": "NETWORK_NAME",
  "peering": "FOR_SELF",
  "usage": "FOR_MIGRATION",
  "migration": {
    "source": "SOURCE_SUBNET",
    "target": "TARGET_SUBNET"
  }
}

次のように置き換えます。

  • PROJECT_ID: 内部範囲の親プロジェクトの ID
  • RANGE_NAME: 新しい内部範囲の名前
  • CIDR_RANGE: 移行するサブネットの IPv4 CIDR ブロック
  • NETWORK_NAME: 内部範囲を作成するネットワークの名前
  • SOURCE_SUBNET: ソース サブネットの URI
  • TARGET_SUBNET: ターゲット サブネットの URI

IPv4 内部範囲を使用してサブネットワークを作成する

IPv4 のみのサブネットまたはデュアルスタック サブネットを作成し、内部範囲を使用してサブネットのプライマリ内部 IPv4 アドレス範囲を指定できます。サブネットワークは、内部範囲全体または範囲の一部のみに関連付けることができます。サブネットワークのセカンダリ範囲を内部範囲に関連付けることもできます。

コンソール

  1. 新しいサブネットを作成するネットワークで IPv4 内部範囲を予約します。この内部範囲の使用タイプを For VPC に設定し、ピアリング タイプを For self に設定します。

  2. Google Cloud コンソールの [VPC ネットワーク] ページに移動します。

    [VPC ネットワーク] に移動

  3. VPC ネットワークの名前をクリックして、[VPC ネットワークの詳細] ページを表示します。

  4. [サブネットを追加] をクリックします。表示されたダイアログで次の操作を行います。

    1. 名前を入力します。
    2. リージョンを選択します。
    3. [内部範囲に関連付ける] チェックボックスをオンにします。
    4. [予約済みの内部範囲] を選択します。
    5. 省略可: サブネットを内部範囲の一部に関連付けるには、IPv4 範囲を入力します。
    6. [追加] をクリックします。

gcloud

  1. 新しいサブネットを作成するネットワークで IPv4 内部範囲を予約します。この内部範囲の使用タイプを FOR_VPC に設定し、ピアリング タイプを FOR_SELF に設定します。
  2. 次のいずれかを行います。

    • 内部範囲全体に関連付けられたサブネットを作成するには、gcloud compute networks subnets create コマンドを使用します。

      gcloud compute networks subnets create SUBNET_NAME \
          --reserved-internal-range=networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME \
          --network=NETWORK_NAME \
          --region=REGION
      

      次のように置き換えます。

      • SUBNET_NAME: サブネットの名前
      • PROJECT_ID: サブネットを作成するプロジェクトの ID
      • RANGE_NAME: サブネットに関連付ける内部範囲の名前
      • NETWORK_NAME: サブネットを作成するネットワークの名前
      • REGION: サブネットを作成するリージョン
    • 内部範囲の一部に関連付けられたサブネットを作成するには、次のコマンドを使用します。

      gcloud compute networks subnets create SUBNET_NAME \
          --reserved-internal-range=networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME \
          --range=IP_RANGE \
          --network=NETWORK_NAME \
          --region=REGION
      

      IP_RANGE は、内部範囲のサブセットである IPv4 CIDR 範囲に置き換えます。

たとえば、次のコマンドは 10.9.0.0/16 CIDR ブロックを予約する内部範囲の 10.9.1.0/24 部分のみに関連付けられたサブネットを作成します。

gcloud network-connectivity internal-ranges create reserved-range-one \
    --ip-cidr-range=10.9.0.0/16 \
    --network=vpc-one
gcloud compute networks subnets create subnet-one \
    --reserved-internal-range=networkconnectivity.googleapis.com/projects/project-one/locations/global/internalRanges/reserved-range-one \
    --range=10.9.1.0/24 \
    --network=vpc-one \
    --region=us-central1

API

  1. 新しいサブネットを作成するネットワークで IPv4 内部範囲を予約します。この内部範囲の使用タイプを FOR_VPC に設定し、ピアリング タイプを FOR_SELF に設定します。
  2. 次のいずれかを行います。

    • 内部範囲全体に関連付けられたサブネットを作成するには、subnetworks.insert メソッドPOST リクエストを送信します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
      {
        "name" : "SUBNET_NAME",
        "reservedInternalRange" : "networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME",
        "network" : "NETWORK"
      }
      

      次のように置き換えます。

      • PROJECT_ID: 新しいサブネットの親プロジェクトの ID
      • REGION: サブネットを作成するリージョン
      • SUBNET_NAME: 新しいサブネットの名前
      • PROJECT_ID: サブネットを作成するプロジェクトの ID
      • RANGE_NAME: 新しいサブネットに使用する内部範囲の名前
      • NETWORK: サブネットを作成するネットワークの名前
    • 内部範囲の一部に関連付けられたサブネットを作成するには、次のリクエストを送信します。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
      {
        "name" : "SUBNET_NAME",
        "reservedInternalRange" : "networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME",
        "range" : "IP_RANGE",
        "network" : "NETWORK"
      }
      

      IP_RANGE は、内部範囲のサブセットである IPv4 CIDR 範囲に置き換えます。

たとえば、次のリクエストは、10.9.0.0/16 CIDR ブロックを含む内部範囲の 10.9.1.0/24 部分のみに関連付けられたサブネットを作成します。

POST https://networkconnectivity.googleapis.com/v1/projects/sample-project/locations/global/internalRanges?internalRangeId=reserved-for-subnet
{
  "targetCidrRange": "10.9.0.0/16",
  "network": "network-b"
}
POST https://compute.googleapis.com/compute/v1/projects/11223344/regions/us-central1/subnetworks
{
  "name" : "subnet-with-partial-range",
  "reservedInternalRange" : "networkconnectivity.googleapis.com/projects/project-one/locations/global/internalRanges/reserved-for-subnet",
  "range" : "10.9.1.0/24",
  "network" : "network-b"
}

IPv4 内部範囲を使用して GKE クラスタを作成する

IPv4 内部範囲を使用して、Google Kubernetes Engine(GKE)の VPC ネイティブ クラスタに IP アドレスを割り振ることができます。

gcloud

  1. gcloud network-connectivity internal-ranges create コマンドを使用して、次の IPv4 内部範囲を作成します。

    gcloud network-connectivity internal-ranges create gke-nodes-1 \
        --prefix-length=NODE_PREFIX_LENGTH \
        --network=NETWORK
    
    • GKE Pod の場合:
    gcloud network-connectivity internal-ranges create gke-pods-1 \
        --prefix-length=POD_PREFIX_LENGTH \
        --network=NETWORK
    
    gcloud network-connectivity internal-ranges create gke-services-1 \
        --prefix-length=SERVICE_PREFIX_LENGTH \
        --network=NETWORK
    

    次のように置き換えます。

    • NODE_PREFIX_LENGTH: GKE ノードに関連付けられている内部範囲のプレフィックスの長さ
    • POD_PREFIX_LENGTH: GKE Pod に関連付けられている内部範囲のプレフィックスの長さ
    • SERVICE_PREFIX_LENGTH: GKE サービスに関連付けられている内部範囲のプレフィックスの長さ
    • NETWORK: ネットワークの名前
  2. gcloud compute networks subnets create コマンドを使用して、前の手順で作成した内部範囲でサブネットを作成します。

    gcloud compute networks subnets create gke-subnet-1 \
        --network=NETWORK \
        --region=REGION \
        --reserved-internal-range="//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-nodes-1" \
        --secondary-range-with-reserved-internal-range="pods=//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-pods-1,services=//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-services-1"
    

    次のように置き換えます。

    • REGION: サブネットのリージョン
    • PROJECT_ID: プロジェクトの ID
  3. gcloud container clusters create コマンドを使用して、VPC ネイティブ クラスタを作成します。

    gcloud container clusters create CLUSTER_NAME \
        --network=NETWORK \
        --subnetwork=gke-subnet-1 \
        --zone=ZONE \
        --cluster-secondary-range-name=pods \
        --services-secondary-range-name=services \
        --enable-ip-alias
    

    ZONE は、クラスタのゾーンに置き換えます。

API

  1. projects.locations.internalRanges.create メソッドPOST リクエストを送信して、次の内部範囲を作成します。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=gke-nodes-1
    {
      "network": "NETWORK",
      "prefixLength": NODE_PREFIX_LENGTH,
      "peering": "FOR_SELF",
      "usage": "FOR_VPC"
    }
    
    • GKE Pod の場合:
    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=gke-pods-1
    {
      "network": "NETWORK",
      "prefixLength": POD_PREFIX_LENGTH,
      "peering": "FOR_SELF",
      "usage": "FOR_VPC"
    }
    
    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=gke-services-1
    {
      "network": "NETWORK",
      "prefixLength": SERVICE_PREFIX_LENGTH,
      "peering": "FOR_SELF",
      "usage": "FOR_VPC"
    }
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの ID
    • NETWORK: ネットワークの名前
    • NODE_PREFIX_LENGTH: GKE ノードに関連付けられている内部範囲のプレフィックスの長さ
    • POD_PREFIX_LENGTH: GKE Pod に関連付けられている内部範囲のプレフィックスの長さ
    • SERVICE_PREFIX_LENGTH: GKE サービスに関連付けられている内部範囲のプレフィックスの長さ
  2. subnetworks.insert メソッドPOST リクエストを送信して、前の手順で作成した内部範囲を持つサブネットを作成します。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
    {
      "name": "gke-subnet-1",
      "network": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK",
      "privateIpGoogleAccess": false,
      "reservedInternalRange": "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-nodes-1",
      "secondaryIpRanges": [
        {
          "rangeName": "pods",
          "reservedInternalRange": "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-pods-1"
        },
        {
          "rangeName": "services",
          "reservedInternalRange": "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-services-1"
        }
      ]
    }
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの ID
    • REGION: サブネットのリージョン
    • NETWORK: サブネットのネットワーク
  3. clusters.create メソッドPOST リクエストを送信して、VPC ネイティブ クラスタを作成します。

    POST https://container.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/clusters
    {
      "cluster": {
        "ipAllocationPolicy": {
          "clusterSecondaryRangeName": "pods",
          "createSubnetwork": false,
          "servicesSecondaryRangeName": "services",
          "useIpAliases": true
        },
        "name": "CLUSTER_NAME",
        "network": "NETWORK",
        "nodePools": [
          {
            "config": {
              "oauthScopes": [
                "https://www.googleapis.com/auth/devstorage.read_only",
                "https://www.googleapis.com/auth/logging.write",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/service.management.readonly",
                "https://www.googleapis.com/auth/servicecontrol",
                "https://www.googleapis.com/auth/trace.append"
              ]
            },
            "initialNodeCount": 3,
            "management": {
              "autoRepair": true,
              "autoUpgrade": true
            },
            "name": "default-pool",
            "upgradeSettings": {
              "maxSurge": 1
            }
          }
        ],
        "subnetwork": "gke-subnet-1"
      },
      "parent": "projects/PROJECT_ID/locations/ZONE"
    }
    

    次のように置き換えます。

    • PROJECT_ID: プロジェクトの ID
    • ZONE: クラスタのゾーン
    • CLUSTER_NAME: 新しいクラスタの名前
    • NETWORK: クラスタのネットワーク

内部範囲を一覧表示する

内部範囲を一覧取得して、現在のプロジェクトまたは特定の VPC ネットワークのすべての内部範囲を確認できます。VPC ネットワーク内のプロジェクトを一覧取得するには、Google Cloud CLI を使用するか、API リクエストを送信します。

コンソール

gcloud

  • 現在のプロジェクト内のすべての内部範囲を表示するには、gcloud network-connectivity internal-ranges list コマンドを使用します。

    gcloud network-connectivity internal-ranges list
    
  • VPC ネットワーク内のすべての内部範囲を表示するには、internal-ranges list コマンドを使用してフィルタを指定します。

    gcloud network-connectivity internal-ranges list \
        --filter=network:NETWORK_NAME \
        --project=PROJECT_ID
    

    次のように置き換えます。

    • NETWORK_NAME: 内部範囲を一覧取得する VPC ネットワークの名前
    • PROJECT_ID: VPC ネットワークを含むプロジェクトの ID

API

  • プロジェクト内のすべての内部範囲を表示するには、projects.locations.internalRanges.list メソッドGET リクエストを送信します。

    GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges
    

    PROJECT_ID は、内部範囲を表示するプロジェクトの ID に置き換えます。

  • VPC ネットワーク内のすべての内部範囲を表示するには、projects.locations.internalRanges.list メソッドに GET リクエストを送信し、フィルタを含めます。

    GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?filter=network=\"https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME\"
    

    NETWORK_NAME は、内部範囲を一覧取得する VPC ネットワークの名前に置き換えます。

内部範囲の説明を取得する

内部範囲の説明を取得して、内部範囲に関連付けられているサブネットなど、選択した範囲の詳細を表示できます。

コンソール

  1. Google Cloud コンソールで、[内部範囲] ページに移動します。

    [内部範囲] に移動

  2. 説明を追加する内部範囲の名前をクリックします。

gcloud

gcloud network-connectivity internal-ranges describe コマンドを使用します。

gcloud network-connectivity internal-ranges describe RANGE_NAME

RANGE_NAME は、説明を取得する内部範囲の名前に置き換えます。

API

projects.locations.internalRanges.get メソッドGET リクエストを送信します。

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME

次のように置き換えます。

  • PROJECT_ID: 内部範囲の親プロジェクトの ID
  • RANGE_NAME: 説明を取得する内部範囲の名前

内部範囲を更新する

内部範囲が変更不可の場合、更新できるのは説明のみです。内部範囲が変更可能な場合は、範囲の CIDR ブロックを拡張し、その重複プロパティと説明を更新できます。

内部範囲を拡張するには、その範囲の CIDR ブロックを更新するか、プレフィックス長を短くします。更新された CIDR ブロックには、以前のブロックが含まれている必要があります。

割り振り範囲を絞り込むか、別の要素を変更する場合は、内部範囲を削除して新しい範囲を作成します。

IPv4 内部範囲の重複プロパティを更新するには、API リクエストを送信するか、Google Cloud CLI を使用します。

コンソール

  1. Google Cloud コンソールで、[内部範囲] ページに移動します。

    [内部範囲] に移動

  2. 更新する内部範囲の名前をクリックします。

  3. 範囲の CIDR ブロックを拡張するには、[範囲を拡張] をクリックし、次のいずれかの操作を行います。

    • IPv4 内部範囲の場合は、[プレフィックス長] をクリックして、次の操作を行います。
      1. [プレフィックス長] フィールドで、前のプレフィックスよりも短いプレフィックス長を選択します。
      2. [開く] をクリックします。
    • IPv4 または IPv6 内部範囲の場合は、[IP 範囲] をクリックして、次の操作を行います。
      1. IPv4、IPv6、または IPv4 にマッピングされた IPv6 の CIDR ブロックを入力します。新しいブロックには、以前のブロックを含める必要があります。
      2. [開く] をクリックします。
  4. 範囲の説明を更新するには、次の手順を行います。

    1. [説明の編集] をクリックします。
    2. 新しい説明を入力します。
    3. [保存] をクリックします。

gcloud

  • 内部範囲を更新するには、gcloud network-connectivity internal-ranges update コマンドを使用します。変更する必要のないプロパティのフラグは省略します。

    gcloud network-connectivity internal-ranges update RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --overlaps=OVERLAPS \
        --description=DESCRIPTION
    

    次のように置き換えます。

    • RANGE_NAME: 内部範囲の名前
    • CIDR_RANGE: 拡張された IPv4、IPv6、IPv4 にマッピングされた IPv6 CIDR ブロック。前のブロックを含める必要があります。
    • OVERLAPS: 許可する重複のタイプ(IPv4 範囲のみ)

      OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE を指定できます。両方の値をカンマ区切りリストで指定できます。重複を無効にするには、フラグを含めますが、値は指定しません(--overlaps=)。

    • DESCRIPTION: 更新された説明

  • プレフィックス長を短くして内部範囲を拡張するには、次のコマンドを使用します。

    gcloud network-connectivity internal-ranges update RANGE_NAME \
        --prefix-length=PREFIX_LENGTH
    

    PREFIX_LENGTH は、更新されたプレフィックス長に置き換えます。更新後のプレフィックス長は、以前のプレフィックス長よりも短くする必要があります。

API

  • CIDR 範囲を更新して内部範囲を拡張するには、projects.locations.internalRanges.patch メソッドPATCH リクエストを送信します。

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=ipCidrRange
    {
      "ipCidrRange": "CIDR_RANGE"
    }
    

    次のように置き換えます。

    • PROJECT_ID: 内部範囲の親プロジェクトの ID
    • RANGE_NAME: 内部範囲の名前
    • CIDR_RANGE: 拡張された IPv4、IPv6、IPv4 にマッピングされた IPv6 CIDR ブロック。前のブロックを含める必要があります。
  • プレフィックス長を短くして内部範囲を拡張するには、次のリクエストを実行します。

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=prefixLength
    {
      "prefixLength": PREFIX_LENGTH
    }
    

    PREFIX_LENGTH は、更新されたプレフィックス長に置き換えます。更新後のプレフィックス長は、以前のプレフィックス長よりも短くする必要があります。

  • IPv4 内部範囲の重複プロパティを更新するには、次のリクエストを行います。

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=overlaps
    {
      "overlaps": ["OVERLAPS"]
    }
    

    OVERLAPS は、許可する重複のタイプに置き換えます。OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE を指定できます。両方の値を JSON 配列に含めることができます。重複を無効にするには、フィールドを含めますが、値は指定しません("overlaps": [])。

  • 内部範囲の説明を更新するには、次のリクエストを行います。

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=description
    {
      "description": "DESCRIPTION"
    }
    

    DESCRIPTION は、更新された説明に置き換えます。

内部範囲の削除

内部範囲は、サブネットなどの Google Cloudリソースに関連付けられていない場合は削除できます。 Google Cloud リソースに関連付けられた内部範囲を削除するには、まず関連付けられているリソースを削除します。

コンソール

  1. Google Cloud コンソールで、[内部範囲] ページに移動します。

    [内部範囲] に移動

  2. 削除する内部範囲の名前をクリックします。

  3. [削除] をクリックします。

  4. [削除] をクリックして確定します。

gcloud

gcloud network-connectivity internal-ranges delete コマンドを使用します。

gcloud network-connectivity internal-ranges delete RANGE_TO_DELETE

RANGE_TO_DELETE は、削除する内部範囲の名前に置き換えます。

API

projects.locations.internalRanges.delete メソッドDELETE リクエストを送信します。

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME

次のように置き換えます。

  • PROJECT_ID: 内部範囲の親プロジェクトの ID
  • RANGE_NAME: 内部範囲の名前