Kf は Kubernetes や Istio と緊密に統合されており、堅牢なネットワーク ポリシーの適用を可能にします。
デフォルトでは、Kf ワークロードは Kubernetes クラスタで実行され、Kubernetes DNS を使用してアドレスを解決します。この DNS リゾルバでは、まず、クラスタ内でアドレスを解決しようとします。そして、アドレスが解決できなかった場合に限り、外部解決を試みます。
各 Kf アプリは、Istio や Anthos Service Mesh(ASM)により挿入された Envoy サイドカーで実行されます。このサイドカーにより、Kubernetes Pod に出入りするすべてのネットワーク トラフィックがプロキシ処理されます。
各 Kubernetes Pod は、Pod を構成するコンテナ イメージを管理する物理マシンまたは仮想マシンのノードで実行されます。ノードは、物理ネットワークまたは仮想ネットワークに存在します。
これらを組み合わせることで、ネットワーク ポリシーを適用できるシステムの階層が形成されます。以降に、粒度の粗い階層から順に示します。
ネットワーク レベルのポリシー
ワークロードの保護は、GKE クラスタがインストールされているネットワークから開始されます。
GCP 上の GKE クラスタで Kf を実行している場合は、次のようにすることをおすすめします。
- GKE クラスタは Virtual Private Cloud(VPC)ネットワークに配置します。
- 限定公開の Google アクセスは、有効にします。
- Cloud NAT を使用して下り(外向き)を制御します。
ノードレベルのポリシー
Kubernetes NetworkPolicy を使用すると、ノードで動作しているコンテナのポリシーを設定できます。これは、Kubernetes に存在する Cloud Foundry ネットワーク ポリシーに最も近いマッピングです。
NetworkPolicy は Kubernetes アドオンによってサポートされています。独自の GKE クラスタを設定する場合は、NetworkPolicy の強制適用を有効にする必要があります。
Kf は kf.dev/networkpolicy=app
でアプリにラベルを付け、kf.dev/networkpolicy=build
でビルドを行います。これにより、アプリやビルドを実行している Pod で NetworkPolicy を直接ターゲットにできます。
Kf Space ごとに、開始用の 2 つの NetworkPolicy が作成されます。一方はアプリが対象で、もう一方はビルドが対象です。この構成は、Space の spec.networkConfig.(app|build)NetworkPolicy.(in|e)gress
フィールドで変更できます。これらのフィールドは、次の値のいずれかに設定できます。
列挙値 | 説明 |
---|---|
PermitAll |
すべてのトラフィックを許可します。 |
DenyAll |
すべてのトラフィックを拒否します。 |
デフォルトでは、Kf は制限の緩いネットワーク ポリシーを使用します。これにより、Kf が使用する次の機能が許可されます。
- クラスタの上り(内向き)ゲートウェイへの North-South ルーティング
- Buildpack の取得など、インターネットへの下り(外向き)
- アプリ間の East-West ルーティング
- Kubernetes DNS サーバーへのアクセス
- コンテナ レジストリへのアクセス
- VPC ネットワークへの直接アクセス
- Cloud Logging などの Google サービスへのアクセス
- 認証情報の自動ローテーションを目的とする Workload Identity サーバーへのアクセス
サービス メッシュ ポリシー
ネットワークのきめ細かい制御、認証、認可、オブザーバビリティが必要な場合は、Anthos Service Mesh を使用してポリシーを適用します。
サービス メッシュは、サービス間通信を管理された状態に保ち、そのオブザーバビリティと安全性を確保するインフラストラクチャ レイヤです。これにより、選択したインフラストラクチャ上に多くのマイクロサービスで構成される堅牢なエンタープライズ アプリケーションを作成できます。
サポートされている機能の一覧については、こちらをご覧ください。