NetworkPolicy на двух уровнях; по умолчанию оба отключены:
- Политики кластеров — политики для каждого кластера, охватывающие внутренний трафик ресурсов
ClickHouseClusterиKeeperCluster; включаются черезspec.networkPolicyв каждом пользовательском ресурсе. - Политики подов оператора — политики, поставляемые с чарт и ограничивающие входящий трафик к самому поду controller manager для конечных точек метрик и вебхука.
NetworkPolicy применяется только если CNI-плагин кластера поддерживает эту функцию
(например, Calico или Cilium). В CNI без поддержки NetworkPolicy эти
ресурсы создаются, но фактически не действуют — Kubernetes не возвращает
ошибку. Прежде чем полагаться на эти политики, убедитесь, что ваш CNI применяет их.NetworkPolicies кластера
Keeper разрешает доступ кластерам ClickHouse на основе их
keeperClusterRef — добавление
или удаление ссылки автоматически обновляет политику Keeper, в том числе для
ссылок из других пространств имен.
Разрешение доступа для клиентов и мониторинга
9000/8123 или вариантам с TLS) и порту
метрик будет закрыт, пока вы не разрешите его. NetworkPolicies дополняют
друг друга, поэтому предоставьте доступ с помощью собственной политики рядом с управляемой:
9363 в ClickHouse,
9090 в Keeper) — явно разрешите доступ из пространства имен мониторинга.
Установка networkPolicy.policy: Disabled (значение по умолчанию) удаляет управляемую
политику; оператор никогда не изменяет пользовательские политики, если они не
содержат метку app кластера.
Отключение для всего кластера
ENABLE_NETWORK_POLICY. Если задано ENABLE_NETWORK_POLICY=false,
оператор пропускает согласование NetworkPolicy для всех
ClickHouseCluster и KeeperCluster независимо от значения spec.networkPolicy.policy
и вообще не отслеживает ресурсы NetworkPolicy. Поэтому ServiceAccount
оператора не требуются разрешения RBAC для
networkpolicies.networking.k8s.io, что полезно при запуске оператора
от имени ограниченного ServiceAccount, в котором эти разрешения намеренно отсутствуют.
Политики пода оператора
Что создает Helm-чарт
В обеих политиках указано только
policyTypes: [Ingress]. Они не ограничивают исходящий трафик оператора и не затрагивают поды ClickHouse server или Keeper.
Поведение с запретом по умолчанию
NetworkPolicy, этот под переходит в режим запрета
входящего трафика по умолчанию: как только начинает действовать хотя бы одна
политика, любой входящий трафик к поду controller-manager, который не разрешён
явно, отбрасывается. После включения до оператора доходят только:
- сбор метрик из пространства имен с меткой
metrics: enabled, и - вызов вебхука допуска из пространства имен с меткой
webhook: enabled.
Включение политик
allow-webhook-traffic также требует webhook.enabled: true (это
значение по умолчанию), поэтому при отключении вебхука его политика тоже удаляется.
При использовании исходных манифестов kubectl раскомментируйте раздел [NETWORK POLICY],
как описано в руководстве по установке kubectl.
В исходные манифесты входят те же две политики.
Назначение меток клиентским пространствам имен
namespaceSelector, каждое пространство имен,
которому нужен доступ к оператору, должно иметь соответствующую метку. Запрос
на сбор метрик или вызов вебхука из пространства имен без такой метки отбрасывается.
NetworkPolicy управляет сетевой доступностью, а привязка РольКластера —
авторизацией. Для успешного защищенного сбора метрик необходимо настроить оба механизма.
Проверка
- Prometheus по-прежнему выполняет сбор метрик с конечной точки метрик (его пространство имен помечено
как
metrics: enabledи привязано к РольКластера metrics-reader). - Создание или обновление
ClickHouseClusterпо-прежнему проходит проверку допуска (вебхук доступен).
- Мониторинг оператора — конечная точка метрик, её RBAC и защита сбора метрик.
- Установка с помощью kubectl — где нужно раскомментировать раздел сетевой политики.
- Установка с помощью Helm — значения values chart’а, относящиеся к оператору.