NetworkPolicy リソースを管理します。
- クラスターポリシー —
ClickHouseClusterおよびKeeperClusterリソースの内部トラフィックを対象とするクラスターごとのポリシーで、各カスタムリソースのspec.networkPolicyで有効化します。 - operator ポッドポリシー — メトリクスおよび webhook エンドポイントへのイングレスを controller manager ポッド自体に対して制限する、チャート に含まれるポリシーです。
NetworkPolicy は、クラスターの CNI プラグインがこれを実装している場合にのみ適用されます
(たとえば Calico や Cilium) 。NetworkPolicy を適用しない CNI では、これらの
リソースは作成されても実際には効果がなく、Kubernetes も
エラーを返しません。これらに依存する前に、使用中の CNI がポリシーを適用することを確認してください。クラスターのNetworkPolicy
Keeper は
keeperClusterRef に基づいて ClickHouse クラスターを許可します。参照を
追加または削除すると、他のネームスペースからの参照も含めて、Keeper のポリシーが
自動的に更新されます。
クライアントと監視の許可
9000/8123、または TLS
バリアント) やメトリクスポートに到達できなくなります。NetworkPolicy は加算的に適用されるため、
managed ポリシー と併せて独自の ポリシー でアクセスを許可します。
9363、
Keeper では 9090) にも当てはまります。監視用ネームスペースを明示的に許可してください。
networkPolicy.policy: Disabled (デフォルト) を設定すると、管理対象の
ポリシーは削除されます。ユーザー定義のポリシーは、クラスターの app ラベルが
付与されている場合を除き、operator が変更することはありません。
クラスター全体での無効化
ENABLE_NETWORK_POLICY 環境変数により、クラスター全体で無効にすることもできます。ENABLE_NETWORK_POLICY=false の場合、
operator は spec.networkPolicy.policy の設定にかかわらず、すべての ClickHouseCluster および KeeperCluster に対する
NetworkPolicy のリコンサイルをスキップし、NetworkPolicy リソースを一切監視しません。そのため、operator’s
ServiceAccount には networkpolicies.networking.k8s.io に対する RBAC 権限は不要です。これは、これらの権限を意図的に付与していない
制限付き ServiceAccount で operator を実行する場合に有用です。
Operator ポッドポリシー
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。