Ingress в действии: комплексное руководство по эффективным примерам кода и методам

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

  1. Базовая конфигурация входящего трафика:

Первый метод включает в себя настройку базовой конфигурации Ingress для предоставления доступа к вашему приложению. Вот пример простого файла YAML Ingress:

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

В этом примере правило Ingress указывает, что запросы к example.comдолжны направляться в службу my-serviceчерез порт 80.

  1. Маршрутизация на основе пути:

Ingress позволяет маршрутизировать запросы к разным службам по разным путям. Вот пример, демонстрирующий маршрутизацию на основе пути:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  rules:
    - host: example.com
      http:
        paths:
        - path: /app1
          pathType: Prefix
          backend:
            service:
              name: app1-service
              port:
                number: 80
        - path: /app2
          pathType: Prefix
          backend:
            service:
              name: app2-service
              port:
                number: 80

В этом случае запросы к example.com/app1будут перенаправляться на службу app1-service, а запросы к example.com/app2— на службу app2-serviceсервис.

  1. Прекращение TLS:

Ingress также может обрабатывать завершение SSL, что позволяет защитить ваши приложения с помощью HTTPS. Вот пример настройки завершения TLS:

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
  tls:
    - hosts:
        - example.com
      secretName: tls-secret

В этом примере раздел tlsопределяет хост (example.com) и указывает секрет, содержащий сертификат SSL и закрытый ключ.

  1. Входящие контроллеры:

Доступно несколько контроллеров Ingress, например NGINX Ingress Controller и Traefik, которые предоставляют дополнительные функции и возможности настройки. Вот пример использования NGINX Ingress Controller:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
    - host: example.com
      http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: my-service
              port:
                number: 80

В этом примере в разделе annotationsуказывается контроллер Ingress, который будет использоваться (NGINX) для обработки ресурса Ingress.

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