Сетевые политики Kubernetes: Ingress и Egress с Calico (практика)
Shubham gour
0:00 / 0:00
Сетевые политики Kubernetes: Ingress и Egress с Calico (практика)
374 просмотра · 3 дн. назад
Shubham gour
5,49 тыс. подписчиков
374 просмотра · 3 дн. назад
По умолчанию любой Pod в кластере Kubernetes может взаимодействовать с любым другим Pod. Как же сделать так, чтобы ваш бэкенд принимал трафик только от доверенного клиента или чтобы Pod не мог связаться ни с чем, кроме своей базы данных? Для этого используются сетевые политики Kubernetes. В этом практическом руководстве вы узнаете, как правила входящего и исходящего трафика NetworkPolicy контролируют трафик между Podами с помощью меток и селекторов.
Начнем с того, что такое NetworkPolicy и в чем разница между входящим (трафик, поступающий в Pod) и исходящим (трафик, покидающий Pod). Затем мы создаём кластер Minikube с Calico в качестве CNI, развертываем бэкенд nginx с сервисом и клиентом busybox, блокируем весь входящий трафик к бэкенду, разрешаем доступ только доверенным клиентам, доказываем блокировку недоверенного Pod и, наконец, блокируем исходящий трафик клиента, чтобы он мог обращаться только к демонстрационному TCP-поду «базы данных» на порту 5432.
Что вы узнаете:
• Что такое NetworkPolicy в Kubernetes и почему её следует использовать
• Входящий и исходящий трафик — оценка с точки зрения Pod, который выбирает политика
• Запуск Minikube с Calico для обеспечения соблюдения NetworkPolicy (minikube start --driver=docker --cni=calico -p network-policy-demo)
• Создание пространства имён и установка его в качестве значения по умолчанию для вашего контекста
• Развертывание бэкенда nginx (развертывание + сервис ClusterIP в одном YAML-файле с помощью ---)
• Запуск Pod клиента busybox с помощью kubectl run и Тестирование с помощью wget
• Базовый уровень: разрешен весь трафик, если нет политик
• Политика запрета всего входящего трафика (podSelector + policyTypes: [Ingress] + ingress: [])
• Разрешение только Pod-ов с меткой app=client на TCP-порту 80 — и почему политики суммируются
• Демонстрация блокировки Pod-а с другой меткой (app=untrusted)
• Создание демонстрационного Pod-а TCP-сервера на порту 5432 (python:3.12-alpine) для работы в качестве базы данных
• Получение IP-адресов Pod-ов с помощью kubectl get pod -o jsonpath
• Политика исходящего трафика, позволяющая клиенту обращаться только к базе данных по TCP-порту 5432
• Почему вызов от клиента к бэкенду завершается неудачей: для установления соединения необходимы как исходящий трафик исходящего Pod-а, так и входящий трафик целевого Pod-а
• Исправление распространенных ошибок: отсутствие apiVersion, «ingress» против «Ingress» и отступы YAML для порты
⏱️ Разделы
0:00 Введение: управление трафиком между подами
0:42 Что такое NetworkPolicy?
2:01 Входящий и исходящий трафик
3:39 Кластер Calico Minikube
7:48 Пространство имен и контекст
10:01 Развертывание бэкенда
16:02 Сервис бэкенда
18:38 Клиентский Pod busybox
21:42 Базовый уровень: без политик
23:53 Запретить весь входящий трафик
30:32 Разрешить доверенному клиенту
35:14 Недоверенному клиенту
37:41 Исходящий трафик: Pod базы данных
42:17 Базовый уровень исходящего трафика
47:22 Политика исходящего трафика
52:10 Тестирование исходящего трафика
55:07 Итоги
📚 Ресурсы
• Документация Kubernetes – Сетевые политики: https://kubernetes.io/docs/concepts/s...
• Документация Kubernetes – Объявление сетевой политики: https://kubernetes.io/docs/tasks/admi...
• Документация Calico – Быстрый старт для Calico на minikube: https://docs.tigera.io/calico/latest/...
▶️ Полный плейлист Kubernetes: • Kubernetes Tutorial for Beginners | Comple...
Если вам стало понятно, что такое NetworkPolicy, подпишитесь на канал Shubham Gour Tech, чтобы получать больше практических руководств по Kubernetes и DevOps. Используете ли вы политику по умолчанию с запретом в своих кластерах? Расскажите мне об этом в комментариях.
#Kubernetes #NetworkPolicy #Calico #DevOps #KubernetesTutorial