Включение контроллеров входящего трафика: подробное руководство по Kubernetes

В кластере Kubernetes входные контроллеры играют решающую роль в обеспечении внешнего доступа к службам, работающим внутри кластера. Они действуют как шлюзы, направляя внешний трафик к соответствующим службам на основе определенных правил. В этом сообщении блога мы рассмотрим различные методы включения контроллеров Ingress в Kubernetes, а также приведем примеры кода для каждого подхода.

  1. Контроллер Nginx Ingress:
    Контроллер Nginx Ingress — один из самых популярных вариантов включения Ingress в Kubernetes. Он предоставляет расширенные функции, такие как завершение SSL/TLS, балансировка нагрузки и маршрутизация на основе URL-адресов. Чтобы включить Nginx Ingress Controller, вы можете использовать следующий пример кода:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
  1. Контроллер входящего трафика Traefik:
    Traefik — еще один популярный контроллер входящего трафика, известный своей простотой и динамической настройкой. Он поддерживает несколько провайдеров, таких как Kubernetes, Docker и другие. Чтобы включить контроллер входа Traefik, вы можете использовать следующий пример кода:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    traefik.ingress.kubernetes.io/router.entrypoints: web
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
  1. Контроллер входящего трафика HAProxy:
    HAProxy — это мощный контроллер входящего трафика с открытым исходным кодом, который обеспечивает высокопроизводительную балансировку нагрузки и проксирование. Чтобы включить HAProxy Ingress Controller, вы можете использовать следующий пример кода:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    haproxy.org/forwarded-for: "true"
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80
  1. Контроллер входящего трафика Contour.
    Contour — это облачный контроллер входящего трафика, который без проблем работает с прокси-сервером Envoy. Он предоставляет расширенные функции, такие как поддержка HTTP/2, gRPC и WebSocket. Чтобы включить Contour Ingress Controller, вы можете использовать следующий пример кода:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    projectcontour.io/ingress.class: contour
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80

Включение контроллеров входящего трафика в Kubernetes необходимо для управления внешним доступом к сервисам. В этой статье мы рассмотрели несколько популярных контроллеров Ingress, включая Nginx, Traefik, HAProxy и Contour, а также примеры кода для каждого. Используя эти входящие контроллеры, вы можете эффективно маршрутизировать и балансировать внешний трафик в свои службы Kubernetes.