Настройка сетевых политик стандартными средствами Kubernetes
Пример настроек сетевой политики
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-network-policy
namespace: default
spec:
podSelector:
matchLabels:
app: db
policyTypes:
- Ingress
- Egress
ingress:
- from:
- ipBlock:
cidr: 172.17.0.0/16
except:
- 172.17.1.0/24
- namespaceSelector:
matchLabels:
project: myproject
- podSelector:
matchLabels:
role: frontend
ports:
- protocol: TCP
port: 6379
egress:
- to:
- ipBlock:
cidr: 10.0.0.0/24
ports:
- protocol: TCP
port: 5978
Настройка сетевых политик на уровне всего кластера с помощью CiliumClusterwideNetworkPolicy
Для определения сетевых политик на уровне всего кластера в Deckhouse Virtualization Platform можно использовать объекты CiliumClusterwideNetworkPolicy модуля cni-cilium.
Использование объектов CiliumClusterwideNetworkPolicy без включения параметра policyAuditMode в настройках модуля cni-cilium может привести к некорректной работе control plane или потере доступа ко всем узлам кластера по SSH.
Для использования объектов CiliumClusterwideNetworkPolicy выполните следующие шаги:
-
Примените первичный набор объектов CiliumClusterwideNetworkPolicy. Для этого в настройки модуля
cni-ciliumдобавьте конфигурационную опциюpolicyAuditModeсо значениемtrue.Опция
policyAuditModeможет быть удалена после применения всех объектов CiliumClusterwideNetworkPolicy и проверки корректности их работы в Hubble UI. -
Примените правило политики сетевой безопасности:
apiVersion: "cilium.io/v2" kind: CiliumClusterwideNetworkPolicy metadata: name: "allow-control-plane-connectivity" spec: ingress: - fromEntities: - kube-apiserver nodeSelector: matchLabels: node-role.kubernetes.io/control-plane: ""
В случае, если объекты CiliumClusterwideNetworkPolicy не применяются, control plane может некорректно работать до одной минуты во время перезагрузки подов cilium-agent. Это происходит из-за сброса Conntrack-таблицы. Привязка к entity kube-apiserver позволяет избежать проблемы.