С какими приложениями (add-ons/operators) в Kubernetes вы работали?

«С какими приложениями (add-ons/operators) в Kubernetes вы работали?» — вопрос из категории Kubernetes, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Я разворачивал и поддерживал различные приложения в Kubernetes для расширения его функциональности, в основном в рамках GitOps-подхода.

Ключевые инструменты в моем стеке:

Категория Инструменты Назначение
Мониторинг & Логи Prometheus + Grafana, Loki + Promtail Сбор метрик, алертинг, визуализация дашбордов, агрегация и поиск логов.
CI/CD & GitOps ArgoCD, Flux Декларативное развертывание приложений из Git-репозиториев, автоматическая синхронизация.
Сеть & Вход Ingress-NGINX, Cert-manager, ExternalDNS Маршрутизация внешнего трафика, автоматическая выдача и обновление TLS-сертификатов (Let's Encrypt), управление DNS.
Безопасность Vault (через vault-agent), Trivy Управление секретами, сканирование образов на уязвимости.
Автомасштабирование KEDA (Kubernetes Event-Driven Autoscaling) Масштабирование подов на основе событий из очередей (RabbitMQ, Kafka) или метрик БД.

Пример: манифест для автоматического создания TLS-сертификата с помощью Cert-manager и Ingress-NGINX:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-app-ingress
  annotations:
    cert-manager.io/cluster-issuer: "letsencrypt-prod" # Указываем issuer
spec:
  tls:
  - hosts:
    - app.example.com
    secretName: app-tls-secret  # Cert-manager создаст этот секрет
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-app-service
            port:
              number: 80
---
# ClusterIssuer для Let's Encrypt (prod)
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: devops@company.com
    privateKeySecretRef:
      name: letsencrypt-prod-account-key
    solvers:
    - http01:
        ingress:
          class: nginx