Демистифицируя Ingress: руководство для начинающих по работе в сети Kubernetes

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

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

Теперь давайте рассмотрим несколько практических примеров того, как можно настроить Ingress с помощью файла YAML.

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

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

    В этом примере любой трафик, поступающий на внешний IP-адрес кластера, будет направляться на порт my-service, работающий на порту 80.

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

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
    name: my-ingress
    spec:
    rules:
    - http:
        paths:
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: api-service
                port:
                  number: 8080
          - path: /web
            pathType: Prefix
            backend:
              service:
                name: web-service
                port:
                  number: 80

    В этом примере трафик к /apiбудет направляться на порт api-service, работающий на порту 8080, а трафик к /webбудет направляться на порт 8080. web-serviceработает на порту 80.

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

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

    В этом примере трафик с именем хоста api.example.comбудет направлен на api-service, а трафик с именем хоста web.example.comбудет направлен на web-service.

  4. Завершение TLS:

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

    В этом примере завершение TLS включено для имени хоста example.com, а сертификат TLS хранится в my-tls-secret. Трафик будет направляться на порт my-service, работающий на порту 80.

Это всего лишь несколько примеров того, как можно настроить Ingress с помощью файла YAML. Помните, что Ingress предлагает широкий спектр возможностей, включая перенаправление SSL, маршрутизацию на основе заголовков и многое другое.

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