Перейти к содержимому

Сетевые политики 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