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