NetworkPolicy リソースが用意されています。対象は operator プロセス自体であり、ClickHouse server や Keeper のポッドは含まれません。これらはデフォルトでは無効なので、operator へのイングレスを分離したい場合にのみ有効化します。
これらのポリシーは、operator が他のクライアント向けに公開している 2 つのポート、つまりメトリクス
エンドポイントと admission webhook を対象とします。
NetworkPolicy は、クラスターの CNI プラグインがこれを実装している場合にのみ適用されます
(たとえば Calico や Cilium) 。NetworkPolicy を適用しない CNI では、これらの
リソースは作成されても実際には効果がなく、Kubernetes も
エラーを返しません。これらに依存する前に、使用中の CNI がポリシーを適用することを確認してください。Helm チャートで作成されるもの
どちらのポリシーも
policyTypes: [Ingress] のみを指定します。これらは operator からの外向きトラフィックを制限せず、
ClickHouse server や Keeper のポッドにも影響しません。
デフォルト拒否の動作
NetworkPolicy でポッドを選択すると、そのポッドはイングレスに対する
デフォルト拒否に切り替わります。いずれかのポリシーが適用されると、明示的に許可されていない
controller manager ポッドへの受信トラフィックはすべて破棄されます。有効化後、
operator に到達できるイングレスは次のみです。
metrics: enabledというラベルが付いたネームスペースからのメトリクスのスクレイプwebhook: enabledというラベルが付いたネームスペースからの admission webhook 呼び出し
ポリシーを有効にする
allow-webhook-traffic では、webhook.enabled: true (
既定値) も追加で必要になるため、webhook を無効にすると、そのポリシーも削除されます。
raw の kubectl manifest を使用する場合は、
kubectl install guide で説明されているとおり、[NETWORK POLICY] セクションのコメントを外してください。
raw の manifest にも、同じ 2 つのポリシーが含まれています。
クライアントのネームスペースへのラベル付け
namespaceSelector によって送信元のネームスペースを照合するため、operator に到達する必要があるすべてのネームスペースには、対応するラベルが付いている必要があります。ラベルの付いていないネームスペースからの スクレイプ や webhook 呼び出しは破棄されます。
確認
- Prometheus が引き続きメトリクス エンドポイントをスクレイプできること (そのネームスペースに
metrics: enabledラベルが付与され、metrics-reader クラスター ロールにバインドされていること) 。 ClickHouseClusterの作成または更新が引き続き admission を通過すること (webhook に到達できること) 。
- operator の監視 — メトリクス エンドポイント、その RBAC、スクレイプの保護について説明します。
- kubectl を使用したインストール — ネットワークポリシーのセクションをどこでアンコメントするかを説明します。
- Helm を使用したインストール — operator に関連する chart の values。