このページでは、Google Distributed Cloud(GDC)エアギャップ アプライアンスでプロジェクト間のトラフィック ネットワーク ポリシーを構成する手順について説明します。
プロジェクト間のトラフィックとは、異なるプロジェクト Namespace のサービスとワークロード間の通信を指しますが、同じ組織内に存在します。
プロジェクト内のサービスとワークロードは、デフォルトで外部のサービスとワークロードから分離されています。ただし、異なるプロジェクト Namespace に属し、同じ組織内のサービスとワークロードは、クロス プロジェクト トラフィック ネットワーク ポリシーを適用することで相互に通信できます。
始める前に
プロジェクト内トラフィック ネットワーク ポリシーを構成するには、次のものが必要です。
- 必要な ID とアクセスロール。詳細については、事前定義ロールとアクセスを準備するをご覧ください。
- 既存のプロジェクト。詳細については、プロジェクトを作成するをご覧ください。
プロジェクト間のトラフィック ポリシーを作成する
上り(内向き)または下り(外向き)のプロジェクト間トラフィック ポリシーを定義して、プロジェクト間の通信を管理できます。
クロス プロジェクト トラフィックの上り(内向き)ファイアウォール ルールを作成する
プロジェクトのワークロードまたはサービスが別のプロジェクトの他のワークロードからの接続を許可するには、他のプロジェクトのワークロードの上り(内向き)トラフィックを許可するように上り(内向き)ファイアウォール ルールを構成する必要があります。
次の手順に沿って、新しいファイアウォール ルールを作成し、別のプロジェクトのワークロードからの上り(内向き)トラフィックを許可します。
コンソール
- 構成するプロジェクトの GDC コンソールで、ナビゲーション メニューの [ネットワーキング] > [ファイアウォール] に移動して、[ファイアウォール] ページを開きます。
- アクションバーの [作成] をクリックして、新しいファイアウォール ルールの作成を開始します。
[ファイアウォール ルールの詳細] ページで、次の情報を入力します。
- [名前] フィールドに、ファイアウォール ルールの有効な名前を入力します。
- [トラフィックの方向] セクションで、[上り(内向き)] を選択して、他のプロジェクトのワークロードからの上り(内向き)トラフィックを許可します。
- [ターゲット] セクションで、次のいずれかのオプションを選択します。
- すべてのユーザー ワークロード: 構成しているプロジェクトのワークロードへの接続を許可します。
- Service: このファイアウォール ルールが、構成しているプロジェクト内の特定のサービスをターゲットにしていることを示します。
- ターゲットがプロジェクト サービスの場合は、[サービス] プルダウン メニューの利用可能なサービスのリストからサービスの名前を選択します。
- [From] セクションで、次の 2 つのオプションのいずれかを選択します。
- すべてのプロジェクト: すべてのプロジェクトのワークロードからの接続を許可します。
- [別のプロジェクト] と [すべてのユーザー ワークロード:] では、別のプロジェクトのワークロードからの接続が許可されます。
- 別のプロジェクトからのみワークロードを転送する場合は、[プロジェクト ID] プルダウン メニューのプロジェクトのリストから、アクセス可能なプロジェクトを選択します。
- ターゲットがすべてのユーザー ワークロードである場合は、[プロトコルとポート] セクションで次のいずれかのオプションを選択します。
- すべて許可: 任意のプロトコルまたはポートを使用した接続を許可します。
- 指定したプロトコルとポート: 上り(内向き)ファイアウォール ルールの対応するフィールドで指定したプロトコルとポートのみを使用する接続を許可します。
[ファイアウォール ルールの詳細] ページで、[作成] をクリックします。
これで、他のプロジェクトのワークロードからの接続が許可されました。ファイアウォール ルールを作成すると、[ファイアウォール] ページの表にルールが表示されます。
API
次のポリシーでは、PROJECT_1 プロジェクトのワークロードが PROJECT_2 プロジェクトのワークロードからの接続と、同じフローの戻りトラフィックを許可します。ポリシーを適用します。
kubectl --kubeconfig API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: allow-inbound-traffic-from-PROJECT_2
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_2
EOF
API_SERVER は、API サーバーの kubeconfig パスに置き換えます。API サーバーの kubeconfig ファイルをまだ生成していない場合は、ログインをご覧ください。
上記のコマンドでは、PROJECT_2 から PROJECT_1 へのアクセスは許可されますが、PROJECT_1 から PROJECT_2 への接続は許可されません。後者の場合は、PROJECT_2 プロジェクトに相互ポリシーが必要です。相互主義ポリシーを適用します。
kubectl --kubeconfig API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_2
name: allow-inbound-traffic-from-PROJECT_1
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- from:
- projectSelector:
projects:
matchNames:
- PROJECT_1
EOF
PROJECT_1 と PROJECT_2 との間の接続が許可されるようになりました。