NetworkPolicy à deux niveaux, tous deux
désactivés par défaut :
- Politiques de cluster — politiques propres à chaque cluster couvrant le trafic interne des
ressources
ClickHouseClusteretKeeperCluster, activées viaspec.networkPolicysur chaque ressource personnalisée. - Politiques de pod de l’opérateur — politiques fournies avec le chart qui restreignent le trafic entrant vers le pod du controller manager lui-même pour les points de terminaison des métriques et webhook.
Une
NetworkPolicy n’est appliquée que lorsque le plugin CNI du cluster l’implémente
(par exemple Calico ou Cilium). Sur un CNI sans prise en charge de NetworkPolicy, les
ressources sont créées mais n’ont silencieusement aucun effet — Kubernetes ne renvoie aucune
erreur. Vérifiez que votre CNI applique bien ces politiques avant de vous y fier.NetworkPolicies du cluster
Activez la politique gérée pour chaque cluster :
Un keeper admet les clusters ClickHouse en fonction de leur
keeperClusterRef : l’ajout
ou la suppression d’une référence met automatiquement à jour la politique du keeper, y compris
pour les références provenant d’autres espaces de noms. Les clusters qui utilisent externalKeeper ne sont jamais
admis, même si leurs nœuds pointent vers les pods du keeper.
Autoriser les clients et la supervision
Les connexions clientes et la collecte des métriques ne sont pas couvertes : lorsque la politique gérée est activée, aucun trafic ne peut atteindre les ports clients (9000/8123 ou leurs variantes
TLS) ni le port des métriques tant que vous ne l’autorisez pas. Les NetworkPolicies étant additives,
accordez donc l’accès à l’aide de votre propre politique, en complément de la politique gérée :
9363 sur ClickHouse,
9090 sur Keeper) : autorisez explicitement votre espace de noms de monitoring.
Définir networkPolicy.policy: Disabled (valeur par défaut) supprime la politique
gérée ; les politiques définies par l’utilisateur ne sont jamais modifiées par l’opérateur, à moins qu’elles
ne portent le label app du cluster.
Désactivation à l’échelle du cluster
La gestion des NetworkPolicy peut également être désactivée à l’échelle du cluster à l’aide de la variable d’environnementENABLE_NETWORK_POLICY de l’opérateur. Lorsque ENABLE_NETWORK_POLICY=false, l’opérateur ignore l’étape de réconciliation des NetworkPolicy pour tous les ClickHouseCluster et KeeperCluster, quelle que soit leur spec.networkPolicy.policy,
et ne surveille pas du tout les ressources NetworkPolicy. Le
ServiceAccount de l’opérateur n’a donc pas besoin d’autorisations RBAC sur
networkpolicies.networking.k8s.io, ce qui est utile lorsque l’opérateur s’exécute
sous un ServiceAccount restreint qui ne dispose intentionnellement pas de ces autorisations.
Politiques du pod de l’opérateur
Le chart fournit également des politiques facultatives qui restreignent le trafic pouvant atteindre le pod du controller manager — le processus de l’opérateur lui-même. Les politiques couvrent les deux ports que l’opérateur expose à d’autres clients : le point de terminaison des métriques et le webhook d’admission.Ce que crée le chart Helm
Lorsqu’il est activé, le chart crée jusqu’à deux politiques n’autorisant que le trafic entrant, qui ciblent toutes deux le pod du controller manager :
Les deux politiques déclarent uniquement
policyTypes: [Ingress]. Elles ne restreignent pas le trafic sortant
de l’opérateur et ne concernent ni les pods du serveur ClickHouse ni ceux de Keeper.
Refus par défaut
Lorsqu’un pod est sélectionné par uneNetworkPolicy d’entrée, il passe en refus
par défaut du trafic entrant : dès qu’une politique s’applique, tout trafic entrant vers le
pod du controller manager qui n’est pas explicitement autorisé est bloqué. Après activation,
les seuls flux entrants qui atteignent l’opérateur sont :
- une collecte de métriques depuis un espace de noms portant l’étiquette
metrics: enabled, et - un appel au webhook d’admission depuis un espace de noms portant l’étiquette
webhook: enabled.
Activation des politiques
Avec Helm, activez l’option dans vos values :allow-webhook-traffic nécessite également webhook.enabled: true (la
valeur par défaut) ; désactiver le webhook supprime donc aussi sa politique.
Avec les manifestes kubectl bruts, décommentez la section [NETWORK POLICY] comme
indiqué dans le guide d’installation kubectl.
Les manifestes bruts incluent ces deux mêmes politiques.
Attribution de labels aux espaces de noms clients
Comme les deux politiques font correspondre l’origine vianamespaceSelector, chaque espace de noms
qui doit pouvoir joindre l’operator doit porter le label correspondant. Une collecte ou
un appel de webhook provenant d’un espace de noms sans label est rejeté.
Vérification
- Prometheus continue de scraper le point de terminaison des métriques (son espace de noms porte le libellé
metrics: enabledet est lié au ClusterRole metrics-reader). - La création ou la mise à jour d’un
ClickHouseClusterpasse toujours l’admission (le webhook est joignable).
Guides associés
- Supervision de l’operator — le point de terminaison des métriques, son RBAC et la sécurisation de la collecte.
- Installer avec kubectl — où décommenter la section de politique réseau.
- Installer avec Helm — les valeurs du chart relatives à l’operator.