このページでは、Google Distributed Cloud(GDC)エアギャップでワークロード レベルのネットワーク ポリシーを構成する手順について説明します。
ワークロード単位のネットワーク ポリシーを使用すると、プロジェクト内の個々のワークロード間の通信をきめ細かく制御できます。この粒度により、ネットワーク アクセスをより厳密に制御できるため、セキュリティとリソースの使用率が向上します。
ワークロード単位のネットワーク ポリシーは、単一のゾーンに沿って PNP を適用できます。特定のラベルを単一ゾーン内のワークロードに追加すると、そのゾーンのプロジェクト内または異なるプロジェクト内の個々のワークロード間の通信を制御できます。詳細については、単一ゾーンのワークロード レベルのネットワーク ポリシーをご覧ください。
ワークロード レベルのプロジェクト内トラフィック ポリシーを作成する
ワークロード レベルのプロジェクト内トラフィック ポリシーを作成すると、プロジェクト内のワークロード間のトラフィックのネットワーク アクセスを有効または無効にできます。
上り(内向き)ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシー
プロジェクトを作成すると、すべてのワークロード間のプロジェクト内通信を可能にするデフォルトのベース ProjectNetworkPolicy
リソースが暗黙的に作成されます。このポリシーでは、同じプロジェクト内の他のワークロードからのインバウンド トラフィックが許可されます。
ワークロード レベルのプロジェクト内トラフィック ポリシーを作成するには、まずデフォルトのベースポリシーを削除する必要があります。そうしないと、予期しない動作が発生する可能性があります。
デフォルトのベースポリシーを削除するには、次のコマンドを実行します。
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
上り(内向き)のワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-intra-project-inbound-traffic-from-target-to-subject spec: policyType: Ingress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE EOF
次のように置き換えます。
GLOBAL_API_SERVER
: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。PROJECT
: ワークロード レベルのプロジェクト内インバウンド トラフィックを許可するプロジェクトの名前。SUBJECT_LABEL_KEY
: ソース ワークロードの選択に使用されるラベルのキー。例:app
、tier
、またはrole
SUBJECT_LABEL_VALUE
:SUBJECT_LABEL_KEY
に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEY
がapp
で、SUBJECT_LABEL_VALUE
がbackend
の場合、ラベルapp: backend
のワークロードがトラフィック ソースになります。TARGET_LABEL_KEY
: 宛先ワークロードの選択に使用されるラベルのキー。TARGET_LABEL_VALUE
:TARGET_LABEL_KEY
に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。
ワークロード レベルのプロジェクト間トラフィック ポリシーを作成する
ワークロード レベルのプロジェクト間トラフィック ポリシーを作成して、異なるプロジェクトのワークロード間のトラフィックに対するネットワーク アクセスを有効または無効にできます。
下り(外向き)ワークロード レベルのクロス プロジェクト トラフィック ネットワーク ポリシー
下り(外向き)ワークロード レベルのクロス プロジェクト トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT_1 name: allow-cross-project-outbound-traffic-to-subject-from-target spec: policyType: Egress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT_2 workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE EOF
次のように置き換えます。
GLOBAL_API_SERVER
: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。PROJECT_1
: ワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを許可するプロジェクトの名前。PROJECT_2
: ワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを送信するプロジェクトの名前。SUBJECT_LABEL_KEY
: ソース ワークロードの選択に使用されるラベルのキー。例:app
、tier
、またはrole
SUBJECT_LABEL_VALUE
:SUBJECT_LABEL_KEY
に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEY
がapp
で、SUBJECT_LABEL_VALUE
がbackend
の場合、ラベルapp: backend
のワークロードがトラフィック ソースになります。TARGET_LABEL_KEY
: 宛先ワークロードの選択に使用されるラベルのキー。TARGET_LABEL_VALUE
:TARGET_LABEL_KEY
に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。
単一ゾーンのワークロード レベルのプロジェクト内トラフィック ポリシーを作成する
単一ゾーンのワークロード レベルのプロジェクト内トラフィック ポリシーを作成すると、特定のゾーンのプロジェクト内のワークロード間のトラフィックのネットワーク アクセスを有効または無効にできます。
単一ゾーンの上り(内向き)ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシー
プロジェクトを作成すると、すべてのワークロード間のプロジェクト内通信を可能にするデフォルトのベース ProjectNetworkPolicy
リソースが暗黙的に作成されます。このポリシーでは、同じプロジェクト内の他のワークロードからのインバウンド トラフィックが許可されます。
単一ゾーンのワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、まずデフォルトの基本ポリシーを削除する必要があります。そうしないと、予期しない動作が発生する可能性があります。
デフォルトのベースポリシーを削除するには、次のコマンドを実行します。
kubectl --kubeconfig GLOBAL_API_SERVER delete pnp base-policy-allow-intra-project-traffic -n PROJECT
単一ゾーンの Ingress ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT name: allow-single-zone-intra-project-inbound-traffic-from-target-to-subject spec: policyType: Ingress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE ingress: - from: - projectSelector: projects: matchNames: - PROJECT workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE EOF
次のように置き換えます。
GLOBAL_API_SERVER
: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。PROJECT
: 単一ゾーンのワークロード レベルのプロジェクト内インバウンド トラフィックを許可するプロジェクトの名前。SUBJECT_LABEL_KEY
: ソース ワークロードの選択に使用されるラベルのキー。例:app
、tier
、またはrole
SUBJECT_LABEL_VALUE
:SUBJECT_LABEL_KEY
に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEY
がapp
で、SUBJECT_LABEL_VALUE
がbackend
の場合、ラベルapp: backend
のワークロードがトラフィック ソースになります。TARGET_LABEL_KEY
: 宛先ワークロードの選択に使用されるラベルのキー。TARGET_LABEL_VALUE
:TARGET_LABEL_KEY
に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。ZONE_SUBJECT_LABEL_KEY
: ソースゾーンの選択に使用されるラベルのキー。例:zone
、またはregion
。ZONE_SUBJECT_LABEL_VALUE
:ZONE_SUBJECT_LABEL_KEY
に関連付けられた値。許可されたトラフィックの送信元ゾーンを指定します。たとえば、ZONE_SUBJECT_LABEL_KEY
がzone
で、ZONE_SUBJECT_LABEL_VALUE
がus-central1-a
の場合、ラベルzone: us-central1-a
のワークロードがトラフィック ソースになります。ZONE_TARGET_LABEL_KEY
: 宛先ゾーンの選択に使用されるラベルのキー。ZONE_TARGET_LABEL_VALUE
:ZONE_TARGET_LABEL_KEY
に関連付けられた値。許可されたトラフィックの宛先となるゾーンを指定します。
単一ゾーンのワークロード レベルのプロジェクト間トラフィック ポリシーを作成する
単一ゾーンのワークロード レベルのクロス プロジェクト トラフィック ポリシーを作成して、特定のゾーン内の異なるプロジェクトのワークロード間のトラフィックのネットワーク アクセスを有効または無効にできます。
単一ゾーンの下り(外向き)ワークロード レベルのクロス プロジェクト トラフィック ネットワーク ポリシー
単一ゾーンの下り(外向き)ワークロード レベルのプロジェクト内トラフィック ネットワーク ポリシーを作成するには、次のカスタム リソースを作成して適用します。
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ProjectNetworkPolicy metadata: namespace: PROJECT_1 name: allow-single-zone-cross-project-outbound-traffic-to-subject-from-target spec: policyType: Egress subject: subjectType: UserWorkload workloadSelector: matchLabels: SUBJECT_LABEL_KEY: SUBJECT_LABEL_VALUE ZONE_SUBJECT_LABEL_KEY: ZONE_SUBJECT_LABEL_VALUE egress: - to: - projectSelector: projects: matchNames: - PROJECT_2 workloads: matchLabels: TARGET_LABEL_KEY: TARGET_LABEL_VALUE ZONE_TARGET_LABEL_KEY: ZONE_TARGET_LABEL_VALUE EOF
次のように置き換えます。
GLOBAL_API_SERVER
: グローバル API サーバーの kubeconfig パス。詳細については、グローバル API サーバーとゾーン API サーバーをご覧ください。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインで詳細を確認してください。PROJECT_1
: 単一ゾーンのワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを許可するプロジェクトの名前。PROJECT_2
: 単一ゾーン ワークロード レベルのクロス プロジェクト アウトバウンド トラフィックを送信するプロジェクトの名前。SUBJECT_LABEL_KEY
: ソース ワークロードの選択に使用されるラベルのキー。例:app
、tier
、またはrole
SUBJECT_LABEL_VALUE
:SUBJECT_LABEL_KEY
に関連付けられた値。許可されたトラフィックの送信元となるワークロードを指定します。たとえば、SUBJECT_LABEL_KEY
がapp
で、SUBJECT_LABEL_VALUE
がbackend
の場合、ラベルapp: backend
のワークロードがトラフィック ソースになります。TARGET_LABEL_KEY
: 宛先ワークロードの選択に使用されるラベルのキー。TARGET_LABEL_VALUE
:TARGET_LABEL_KEY
に関連付けられた値。許可されたトラフィックの宛先となるワークロードを指定します。ZONE_SUBJECT_LABEL_KEY
: ソースゾーンの選択に使用されるラベルのキー。例:zone
、またはregion
。ZONE_SUBJECT_LABEL_VALUE
:ZONE_SUBJECT_LABEL_KEY
に関連付けられた値。許可されたトラフィックの送信元ゾーンを指定します。たとえば、ZONE_SUBJECT_LABEL_KEY
がzone
で、ZONE_SUBJECT_LABEL_VALUE
がus-central1-a
の場合、ラベルzone: us-central1-a
のワークロードがトラフィック ソースになります。ZONE_TARGET_LABEL_KEY
: 宛先ゾーンの選択に使用されるラベルのキー。ZONE_TARGET_LABEL_VALUE
:ZONE_TARGET_LABEL_KEY
に関連付けられた値。許可されたトラフィックの宛先となるゾーンを指定します。