Flannel
Flannel — это популярный плагин для интерфейса контейнерной сети (CNI), предоставляющий простой и эффективный способ создания оверлейной сети для кластеров Kubernetes. Flannel — это CNI по умолчанию, устанавливаемый ALT Orchestra, и при желании его можно переопределить другими реализациями CNI. В сгенерированном конфиге вы не увидите явного указания настройки CNI, что означает использование значения по умолчанию. В явном виде, если, например, надо добавить дополнительные опции для Flannel, настройка будет выглядеть так:
cluster:
network:
cni:
name: flannel
flannel:
# extraArgs — список строк ([]string), дополнительные аргументы для «flanneld»
extraArgs:
- --iface-can-reach=192.168.1.1Адрес
192.168.1.1в--iface-can-reachприведён для примера — замените его на доступный из вашей сети адрес: flanneld выберет сетевой интерфейс, через который этот адрес достижим.
ALT Orchestra поставляется со всеми необходимыми базовыми плагинами CNI для Flannel, поэтому стандартную установку Flannel, выполненную ALT Orchestra, можно заменить пользовательской установкой на основе документации Flannel.
Flannel инкапсулирует сетевой трафик между подами с помощью VXLAN (по умолчанию в ALT Orchestra). Это обеспечивает бесперебойную связь между подами на разных узлах кластера без необходимости дополнительной настройки базовой сетевой инфраструктуры. В этом случае kube-proxy отвечает за маршрутизацию трафика между подами и сервисами, а Flannel управляет оверлейной сетью и обеспечивает возможность взаимодействия подов друг с другом независимо от их физического местоположения в кластере.
Пример сетевой политики
Следующий пример демонстрирует сетевую политику, которая ограничивает входящий трафик только для подов с меткой app: web в default пространстве имен и разрешает трафик только от подов с меткой app: api:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-api-to-web
namespace: default
spec:
podSelector:
matchLabels:
app: web
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
app: api
ports:
- protocol: TCP
port: 80Примените данную политику:
kubectl apply -f network-policy.yamlТеперь только поды с меткой app: api могут получить доступ к порту 80 на модулях с соответствующей меткой app: web. Остальной входящий трафик к этим подам запрещен.
Примечание: штатный Flannel в ALT Orchestra не обеспечивает применение (enforcement) ресурсов NetworkPolicy — они будут приняты API-сервером, но не будут ограничивать трафик. Для работы сетевых политик используйте CNI с их поддержкой, например Cilium.