Создание входящих ресурсов на основе путей: подробное руководство

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

Метод 1. Использование аннотаций с контроллером входа Nginx

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - 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

Метод 2. Использование правил пути с контроллером входа 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: /app1
            pathType: Prefix
            backend:
              service:
                name: app1-service
                port:
                  number: 80
          - path: /app2
            pathType: Prefix
            backend:
              service:
                name: app2-service
                port:
                  number: 80

Метод 3. Использование пользовательских аннотаций с Istio Gateway

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-gateway
spec:
  selector:
    istio: ingressgateway
  servers:
    - hosts:
        - example.com
      port:
        number: 80
      tls:
        httpsRedirect: true
      rules:
        - http:
            route:
              - destination:
                  host: app1-service
                  port:
                    number: 80
                match:
                  uri:
                    prefix: /app1
              - destination:
                  host: app2-service
                  port:
                    number: 80
                match:
                  uri:
                    prefix: /app2

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