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