ネットワーク タグを使用してノードにファイアウォール ルールを適用する


このページでは、実行中のワークロードを中断することなく、Google Kubernetes Engine(GKE)クラスタ内のノードにネットワーク タグを動的に適用する方法について説明します。

ネットワーク タグについて

ネットワーク タグは、Compute Engine 仮想マシン(VM)のメタデータであり、ファイアウォール ルールとルートを特定の VM インスタンスに適用できるようにします。GKE でネットワーク タグを使用すると、VPC ファイアウォール ルールやルートをクラスタ内のノードに適用できます。

GKE API を使用することで、実行中のワークロードを中断することなく、GKE クラスタでネットワーク タグの適用と更新を行えます。指定したネットワーク タグは、GKE が自動的にプロビジョニングする新しいノードにも適用されます。

ネットワーク タグの代わりにタグを使用する

ネットワーク タグは、Identity and Access Management のアクセス制御の対象ではない単純な文字列です。GKE API でノードにアクセスできるユーザーは、これらのノードにネットワーク タグを追加できます。

GKE バージョン 1.28 以降を使用している場合は、ファイアウォールの宛先を含むタグを使用して、リージョンまたはグローバルのネットワーク ファイアウォール ポリシーを適用することをおすすめします。これにより、VPC ファイアウォール ルールの機能が強化されます。

タグは、Compute Engine VM に適用される Key-Value ペアです。IAM を使用すると、特定のタグを操作できるユーザーを制御できます。

ネットワーク タグを適用するためのコマンドライン オプション

次の表に、Google Cloud CLI を使用してネットワーク タグをクラスタに適用するために指定できるフラグと、そのユースケースを示します。

フラグ 運用モード レベル 説明
--autoprovisioning-network-tags
  • Autopilot
  • Standard
クラスタ

指定したネットワーク タグをすべての Autopilot ノードと、自動プロビジョニングされたすべての Standard ノードプールに適用します。

--tags
  • Standard
ノードプール

特定の Standard ノードプールにネットワーク タグを手動で適用します。

制限事項

--autoprovisioning-network-tags を使用すると、自動プロビジョニングされた Standard ノードプールのネットワーク タグを、--tags を使用して更新できなくなります。

自動プロビジョニングされたノードプールには --autoprovisioning-network-tags を使用し、--tags は、手動で作成したノードプールにのみ使用することをおすすめします。

始める前に

作業を始める前に、次のことを確認してください。

  • Google Kubernetes Engine API を有効にします。
  • Google Kubernetes Engine API の有効化
  • このタスクに Google Cloud CLI を使用する場合は、gcloud CLI をインストールして初期化します。すでに gcloud CLI をインストールしている場合は、gcloud components update を実行して最新のバージョンを取得します。

新しいクラスタにネットワーク タグを追加する

ネットワーク タグは、新しいクラスタの作成時に追加できます。

新しい Autopilot クラスタにネットワーク タグを追加する

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

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --autoprovisioning-network-tags=TAG1,TAG2,...

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

  • CLUSTER_NAME: 新しい Autopilot クラスタの名前。
  • LOCATION: 新しいクラスタの Compute Engine のロケーション
  • TAG1,TAG2, ...: 適用するネットワーク タグのカンマ区切りのリスト。

新しい Standard クラスタにネットワーク タグを追加する

Standard に対しては、特にノードの自動プロビジョニングで使用するネットワーク タグを指定することもできます。

ネットワーク タグをデフォルトのノードプールに適用する

次のコマンドを実行して、新しい Standard クラスタを作成し、ネットワーク タグをデフォルトのノードプールに適用します。

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --tags=NETWORK_TAG1,NETWORK_TAG2,...

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

  • CLUSTER_NAME: 新しい Standard クラスタの名前。
  • COMPUTE_REGION: 新しいクラスタの Compute Engine のロケーション
  • NETWORK_TAG1,NETWORK_TAG2, ...: 適用するネットワーク タグのカンマ区切りのリスト。

自動プロビジョニングされたノードプールにネットワーク タグを適用する

ノードの自動プロビジョニングによって作成されたすべてのノードプールには、ネットワーク タグを自動的に適用できます。

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

gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --enable-autoprovisioning \
    --autoprovisioning-network-tags=TAG1,TAG2,...

TAG1,TAG2,... は、自動プロビジョニングされたすべてのノードプールに適用するネットワーク タグのカンマ区切りのリストに置き換えます。

既存クラスタのネットワーク タグを更新する

既存のクラスタのネットワーク タグを更新できます。

既存の Autopilot クラスタのネットワーク タグを更新する

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

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=TAG1,TAG2,...

既存の Standard クラスタのネットワーク タグを更新する

特定の Standard ノードプールのネットワーク タグを更新するには、次のコマンドを実行します。--autoprovisioning-network-tags を使用した場合、自動プロビジョニングされたノードプールの更新にはこのコマンドを使用できません

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --tags=NETWORK_TAG1,NETWORK_TAG2,...

クラスタに --autoprovisioning-network-tags が設定されていると、このコマンドはエラーを返します。

自動プロビジョニングされたノードプールのネットワーク タグを更新する

ノードの自動プロビジョニングが新しい自動プロビジョニング ノードプールと既存の自動プロビジョニング ノードプールに適用するネットワーク タグは、更新できます。

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

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=TAG1,TAG2,...

新しい Standard ノードプールにネットワーク タグを追加する

Standard クラスタに特定のネットワーク タグを付けて新しいノードプールを作成するには、次のコマンドを実行します。

gcloud container node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --tags=NETWORK_TAG1,NETWORK_TAG2,...

NODE_POOL_NAME は、新しいノードプールの名前に置き換えます。

既存のネットワーク タグを表示する

このセクションでは、既存のネットワーク タグを表示する方法について説明します。

Autopilot で既存のネットワーク タグを表示する

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

gcloud container clusters describe CLUSTER_NAME \
    --flatten=nodePoolAutoConfig.networkTags

クラスタにネットワーク タグがある場合、出力は次のようになります。

---
tags:
- example-tag

Standard で既存のネットワーク タグを表示する

ネットワーク タグは、自動プロビジョニングされたノードプールまたは作成したノードプールで表示できます。

自動プロビジョニングされたノードプールのネットワーク タグを表示する

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

gcloud container clusters describe CLUSTER_NAME \
    --flatten=nodePoolAutoConfig.networkTags

クラスタにネットワーク タグがある場合、出力は次のようになります。

---
tags:
- example-tag

ノードの自動プロビジョニングのないノードプールのネットワーク タグを表示する

--tags フラグを使用してタグを適用した特定の Standard ノードプールのネットワーク タグを表示するには、次のコマンドを実行します。

gcloud container node-pools describe NODE_POOL_NAME\
    --cluster=CLUSTER_NAME \
    --format='value(config.tags)'

NODE_POOL_NAME は、ノードプールの名前に置き換えます。

ノードプールにタグがある場合、出力は次のようになります。

example-tag

ネットワーク タグを削除する

GKE からネットワーク タグを削除できます。

Autopilot クラスタからネットワーク タグを削除する

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

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=""

Standard クラスタとノードプールからネットワーク タグを削除する

自動プロビジョニングされたすべてのノードプールまたは特定のノードプールからタグを削除できます。

自動プロビジョニングされたノードプールからネットワーク タグを削除する

自動プロビジョニングされたすべてのノードプールからネットワーク タグを削除するには、次のコマンドを実行します。

gcloud container clusters update CLUSTER_NAME \
    --autoprovisioning-network-tags=""

このコマンドは、--tags オプションを使用して、自動プロビジョニングされたノードプールのネットワーク タグを手動で指定する機能も復元します。

特定のノードプールからネットワーク タグを削除する

特定のノードプールからネットワーク タグを削除するには、次のコマンドを実行します。

gcloud container node-pools update NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --tags=""

次のステップ