ワークロードからのアウトバウンド トラフィックを管理する

このページでは、ワークロードが組織外に出るようにするために、プロジェクト内の仮想マシン(VM)または Pod で実行する必要がある下り(外向き)接続アクションについて説明します。この手順では、アウトバウンド トラフィックを明示的に有効にして、ワークロードが組織外で通信できるようにするために、デプロイに必須ラベルを追加する方法について説明します。

デフォルトでは、Google Distributed Cloud(GDC)エアギャップは、プロジェクト内のワークロードが組織外に出るのをブロックします。プラットフォーム管理者(PA)がプロジェクトのデータ漏洩保護を無効にしている場合、ワークロードは組織を終了できます。データ漏洩保護を無効にするだけでなく、Application Operator(AO)は、ポッドのワークロードにラベル egress.networking.gke.io/enabled: true を追加して、そのポッドの下り(外向き)接続を有効にする必要があります。プロジェクトに既知の IP アドレスを割り当てて使用すると、組織からのアウトバウンド トラフィックに対して送信元ネットワーク アドレス変換(NAT)が実行されます。

Pod または VM のワークロードからの下り(外向き)接続を管理できます。

Pod 内のワークロードからのアウトバウンド トラフィックを管理する

下り(外向き)接続用に Pod のワークロードを構成するには、まずプロジェクトでデータ漏洩保護が無効になっていることを確認する必要があります。次に、Pod に egress.networking.gke.io/enabled: true ラベルが追加されていることを確認します。Deployment などの上位レベルのコンストラクトまたは Daemonset コンストラクトを使用して Pod のセットを管理している場合は、これらの仕様で Pod ラベルを構成する必要があります。

次の例は、マニフェスト ファイルから Deployment を作成する方法を示しています。サンプル ファイルの labels フィールドには、プロジェクトからのアウトバウンド トラフィックを明示的に有効にする値 egress.networking.gke.io/enabled: true が含まれています。このラベルは Deployment 内の各 Pod に追加され、Pod 内のワークロードが組織から離脱できるようになります。

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG \
    apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: DEPLOYMENT_NAME
spec:
  replicas: NUMBER_OF_REPLICAS
  selector:
    matchLabels:
      run: APP_NAME
  template:
    metadata:
      labels: # The labels given to each pod in the deployment, which are used
              # to manage all pods in the deployment.
        run: APP_NAME
        egress.networking.gke.io/enabled: true
    spec: # The pod specification, which defines how each pod runs in the deployment.
      containers:
      - name: CONTAINER_NAME
        image: CONTAINER_IMAGE
EOF

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

  • USER_CLUSTER_KUBECONFIG: コンテナ ワークロードをデプロイするユーザー クラスタの kubeconfig ファイル。

  • DEPLOYMENT_NAME: コンテナ ワークロードをデプロイするユーザー クラスタの kubeconfig ファイル。

  • APP_NAME: デプロイ内で実行するアプリケーションの名前。

  • NUMBER_OF_REPLICAS: Deployment が管理する複製 Pod オブジェクトの数。

  • CONTAINER_NAME: コンテナの名前。

  • CONTAINER_IMAGE: コンテナ イメージの名前。REGISTRY_PATH/hello-app:1.0 など、コンテナ レジストリのパスとイメージのバージョンを含める必要があります。

次に例を示します。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
        egress.networking.gke.io/enabled: true
    spec:
      containers:
      - name: hello-app
        image: REGISTRY_PATH/hello-app:1.0

VM 内のワークロードからのアウトバウンド トラフィックを管理する

下り(外向き)接続用に VM のワークロードを構成するには、VM 構成に GDC コンソールを使用するか、VirtualMachineExternalAccess リソースを作成します。データ転送用に外部アクセスで VM を有効にする方法については、VM に接続するセクションの外部アクセスを有効にするをご覧ください。