Ответ
В продакшен-кластерах Kubernetes я настраиваю сетевой стек для обеспечения безопасной и производительной коммуникации между подами, сервисами и внешним миром.
1. Выбор и настройка CNI-плагина:
- Использую Cilium (на eBPF) для продвинутой сетевой политики, observability и производительности:
# Установка Cilium через Helm helm install cilium cilium/cilium --namespace kube-system --set hubble.relay.enabled=true --set hubble.ui.enabled=true - Или Calico для более традиционных setup с поддержкой Network Policies.
2. Конфигурация сервисов и ingress-контроллеров:
- Для внутреннего трафика использую ClusterIP сервисы.
- Для внешнего доступа разворачиваю Ingress-контроллер (чаще всего nginx-ingress или traefik) с TLS-терминацией:
# Ingress с TLS и path-based routing apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: cert-manager.io/cluster-issuer: "letsencrypt-prod" spec: tls: - hosts: - app.example.com secretName: app-tls-secret rules: - host: app.example.com http: paths: - path: /api pathType: Prefix backend: service: name: api-service port: number: 8080
3. Сетевая политика (NetworkPolicy):
- Реализую принцип наименьших привилегий, ограничивая трафик между неймспейсами и подами:
# Запрещаем весь входящий трафик, кроме разрешенного apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-ingress spec: podSelector: {} policyTypes: - Ingress --- # Разрешаем трафик только от фронтенда к бэкенду apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend-to-backend spec: podSelector: matchLabels: app: backend ingress: - from: - podSelector: matchLabels: app: frontend ports: - protocol: TCP port: 8080
4. Service Mesh для сложных сценариев:
- Внедряю Istio или Linkerd для:
- Canary-развертываний
- Трафик-шейпинга
- Сквозного mTLS-шифрования
- Детальной телеметрии
5. Мониторинг сетевого трафика:
- Использую Cilium Hubble или kube-proxy метрики для отслеживания сетевых проблем.
- Настраиваю алерты на необычные паттерны трафика или недоступность сервисов.