クラスタ マスター アクセス用の承認済みネットワークの追加

このページでは、承認済みネットワークに Google Kubernetes Engine クラスタ内のクラスタ マスターへのアクセスを許可する方法について説明します。GKE ネットワーキングに関する一般的な情報については、ネットワークの概要をご覧ください。

概要

承認済みネットワークを使用すると、特定の CIDR 範囲をホワイトリストに登録することで、その範囲内の IP アドレスが HTTPS でクラスタ マスター エンドポイントにアクセスできるようになります。承認済みネットワークは、すべてのクラスタと互換性があります。

GKE は、TLS(Transport Layer Security)と認証の両方を使用して、パブリック インターネットからクラスタ マスター エンドポイントへの安全なアクセスを実現しています。これにより、クラスタをどこからでも柔軟に管理できます。承認済みネットワークを使用することで、特定の IP アドレスセットのアクセスをさらに制限できます。

利点

承認済みネットワークを追加すると、クラスタにさらなるセキュリティ上の利点がもたらされます。承認済みネットワークにより、指定された特定のアドレスセット(自分の環境から発信されるものなど)に対してアクセスが許可されます。これによって、クラスタの認証または承認メカニズムに脆弱性が存在する場合でも、クラスタへのアクセスを保護できます。

限定公開クラスタの利点

限定公開クラスタでは、ノードは外部 IP アドレスなしで動作し、必要であれば、クラスタ マスターを公開アクセス可能なエンドポイントなしで動作させることもできます。さらに、デフォルトでは GCP IP アドレスでクラスタ マスター エンドポイントにアクセスすることはできません。承認済みネットワークで限定公開クラスタを使用すると、クラスタ マスターにアクセスできるのは、ホワイトリストに登録された CIDR、クラスタの VPC 内のノード、マスターを管理する Google 内部の本番環境ジョブのみとなります。

制限事項

  • 1 つのクラスタが持てる承認済みネットワークの CIDR 範囲は 20 個までです。

始める前に

このタスクの準備として、次の手順を行います。

  • Google Kubernetes Engine API が有効になっていることを確認します。
  • Google Kubernetes Engine API の有効化
  • Cloud SDK がインストール済みであることを確認します。
  • デフォルトのプロジェクト ID を設定します。
    gcloud config set project [PROJECT_ID]
  • ゾーンクラスタを使用する場合は、デフォルトのコンピューティング ゾーンを設定します。
    gcloud config set compute/zone [COMPUTE_ZONE]
  • リージョン クラスタを使用する場合は、デフォルトのコンピューティング リージョンを設定します。
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud を最新バージョンに更新します。
    gcloud components update

承認済みネットワークを持つクラスタの作成

承認済みネットワークを 1 つ以上持つ限定公開クラスタを作成するには、gcloud コマンドライン ツール、または Google Cloud Platform Console を使用します。

gcloud

次のコマンドを実行します。

gcloud container clusters create [CLUSTER_NAME] \
    --enable-master-authorized-networks \
    --master-authorized-networks [CIDR],[CIDR]...

--master-authorized-networks フラグを使用して、クラスタ マスター エンドポイントへの HTTPS アクセスを許可したい CIDR(たとえば 8.8.8.0/24)を、カンマ区切りで 20 個まで指定できます。

例:

gcloud container clusters create example-cluster \
    --enable-master-authorized-networks \
    --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

Console

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. [クラスタを作成] をクリックします。

  3. 必要に応じてクラスタを構成します。次に、[詳細オプション] をクリックします。

  4. [ネットワーク セキュリティ] セクションで、[マスター承認済みネットワークを有効にする] を選択します。

  5. [承認済みネットワークを追加] をクリックします。

  6. [名前] に、ネットワークに付ける名前を入力します。

  7. [ネットワーク] に、クラスタ マスターへのホワイトリスト アクセスを許可する CIDR 範囲を入力します。

  8. [完了] をクリックします。必要に応じて、さらに承認済みネットワークを追加します。

  9. メニューの下部にある [作成] をクリックします。

API

クラスタの create リクエストmasterAuthorizedNetworksConfig オブジェクトを指定します。

"masterAuthorizedNetworksConfig": {
  "enabled": true,
  "cidrBlocks": [
  {
      "displayName": string,
      "cidrBlock": string
  }
]
}

詳細については、MasterAuthorizedNetworksConfig をご覧ください。

承認済みネットワークを持つ限定公開クラスタの作成

承認済みネットワークを 1 つ以上持つ限定公開クラスタを作成する方法については、限定公開クラスタをご覧ください。

承認済みネットワークを既存のクラスタに追加する

承認済みネットワークを既存のクラスタに追加するには、gcloud コマンドライン ツール、または GCP Console を使用します。

gcloud

次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] \
    --enable-master-authorized-networks \
    --master-authorized-networks [CIDR],[CIDR]...

--master-authorized-networks フラグを使用して、クラスタ マスター エンドポイントへの HTTPS アクセスを許可したい CIDR(たとえば 8.8.8.0/24)を、カンマ区切りで 20 個まで指定できます。

例:

gcloud container clusters update example-cluster \
    --enable-master-authorized-networks \
    --master-authorized-networks 8.8.8.8/32,8.8.8.0/24

Console

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 目的のクラスタを選択します。

  3. [編集] をクリックします。

  4. [マスター承認済みのネットワーク] プルダウン メニューから、[有効] を選択します(まだ有効になっていない場合)。

  5. [承認済みネットワークを追加] をクリックします。

  6. [名前] に、ネットワークに付ける名前を入力します。

  7. [ネットワーク] に、クラスタ マスターへのホワイトリスト アクセスを許可する CIDR 範囲を入力します。

  8. [完了] をクリックします。必要に応じて、さらに承認済みネットワークを追加します。

  9. メニューの下部にある [保存] をクリックします。

API

クラスタの update リクエストdesiredMasterAuthorizedNetworksConfig フィールドを指定します。そのフィールドで、MasterAuthorizedNetworksConfig オブジェクトを指定します。

"desiredMasterAuthorizedNetworksConfig": {
    object(MasterAuthorizedNetworksConfig)
  }

承認済みネットワークの確認

既存のクラスタで承認済みネットワークを確認するには、gcloud コマンドライン ツール、または GCP Console を使用します。

gcloud

次のコマンドを実行します。

gcloud container clusters describe [CLUSTER_NAME]

コマンド出力から、masterAuthorizedNetworksConfig フィールドを探します。

  ...
masterAuthorizedNetworksConfig:
  cidrBlocks:
  - cidrBlock: 8.8.8.8/32
  - cidrBlock: 8.8.4.4/32
  enabled: true
  ...

Console

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 目的のクラスタを選択します。

[マスター承認済みのネットワーク] フィールドに、ホワイトリストに登録された CIDR が表示されます。

API

get リクエストを送信します。masterAuthorizedNetworksConfig フィールドの下にある CIDR ブロックを探します。例:

"masterAuthorizedNetworksConfig": {
"enabled": true,
"cidrBlocks": [
  {
    "displayName": "Office",
    "cidrBlock": "192.0.2.0/24"
  }
]
}

承認済みネットワークの無効化

既存のクラスタで承認済みネットワークを無効化するには、gcloud コマンドライン ツール、または GCP Console を使用します。

gcloud

次のコマンドを実行します。

gcloud container clusters update [CLUSTER_NAME] \
--no-enable-master-authorized-networks

Console

  1. GCP Console で Google Kubernetes Engine のメニューに移動します。

    Google Kubernetes Engine のメニューに移動

  2. 目的のクラスタを選択します。

  3. [編集] をクリックします。

  4. [マスター承認済みのネットワーク] プルダウン メニューから、[無効] を選択します。

  5. [保存] をクリックします。

トラブルシューティング

以降のセクションでは、承認済みネットワークに関連する一般的な問題の解決方法について説明します。

CIDR ブロックが多すぎます

CIDR ブロック数が 20 個を超えるクラスタを作成または更新しようとすると、gcloud は次のエラーを返します。

ERROR: (gcloud.container.clusters.update) argument --master-authorized-networks: too many args

この問題を解決するには、指定する CIDR ブロックの数を 20 個以下にしてください。

マスターに接続できません

CIDR ブロックの指定に誤りがあると、kubectl コマンドはタイムアウトになります。

Unable to connect to the server: dial tcp MASTER_IP: getsockopt: connection timed out

クラスタを作成または更新するときは、CIDR ブロックを正しく指定するよう注意してください

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Kubernetes Engine のドキュメント