Входящие аннотации Google Kubernetes Engine - PullRequest
1 голос
/ 29 мая 2020

Я настраиваю Ingress на движке Google Kubernetes. Я новичок в ingress, но, как я понял, ingress может обслуживать разные балансировщики нагрузки, и разные LB должны быть настроены по-разному.

Я начал с простой конфигурации входа на GKE:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: basic-ingress

spec:
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: web-np
          servicePort: 8080
      - path: /v2/keys
        backend:
          serviceName: etcd-np
          servicePort: 2379

И он отлично работает, поэтому у меня есть 2 разных сервиса NodePort: web-np и etcd-np. Но теперь мне нужно расширить этот logi c некоторыми правилами перезаписи, чтобы запрос, указывающий на /service1, был перенаправлен на другую службу service1-np, но до того, как /service1/hello.html должен быть заменен на /hello.html. Вот почему у меня есть следующие вопросы:

  • Как мне настроить перезапись при входе и возможно ли это с помощью балансировщика нагрузки по умолчанию.
  • Что такое балансировщик нагрузки по умолчанию на GKE.
  • Где найти список всех аннотаций к нему. Я думал, что полный список находится на https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/, но есть совершенно другой список и нет аннотации kubernetes.io/ingress.global-static-ip-name, которая широко используется в примерах Google.

1 Ответ

1 голос
/ 29 мая 2020

Ingress - объект API, который управляет внешним доступом к службам в кластере, обычно HTTP.

Ingress может обеспечивать балансировку нагрузки, завершение SSL и виртуальный хостинг на основе имен.

Kubernetes.io: Ingress

Kubernetes может иметь несколько контроллеров Ingress. При этом контроллеры отличаются друг от друга. Контроллеры Ingress, упомянутые вами в этом конкретном вопросе:

Ingress конфигурация, которую вы вставили, будет использовать контроллер Ingress-GCE. Если вы хотите переключиться на Ingress-nginx, вам нужно будет развернуть его и установить аннотацию, например:

  • kubernetes.io/ingress.class: "nginx"

Как я могу настроить перезапись при входе и если это возможно с помощью балансировщика нагрузки по умолчанию.

Существует постоянный запрос функции для поддержки перезаписи с помощью Ingress-GCE здесь: Github.com: Ingress- GCE: Rewrite .

Вы можете использовать Ingress-nginx для поддержки перезаписи. Существует официальная документация по его развертыванию: Kubernetes.github.io: Ingress - nginx: развертывание

Дополнительные ресурсы о перезаписи вы можете использовать:


Что такое балансировщик нагрузки по умолчанию на GKE.

Если вы создаете ресурс Ingress с параметром по умолчанию Ingress-GCE, вы создадите LoadBalancer L7 HTTP и HTTPS .

Если вы создаете службу типа LoadBalancer в GKE, вы создадите L4 Network Load Balancer

Если вы развернете контроллер Ingress-nginx в GKE, вы создадите сетевой балансировщик нагрузки L4, указывающий на контроллер Ingress-nginx, который после этого будет маршрутизировать трафик c в соответствии с вашим определением Ingress. Если вы хотите использовать Ingress-nginx, вам нужно будет указать:

  • kubernetes.io/ingress.class: "nginx"

в определении Ingress.

Пожалуйста, взгляните на эту статью: Medium.com: Google Cloud: Kubernetes Nodeport vs Loadbalancer vs Ingress


Где я могу найти список всех аннотаций к нему. Я думал, что полный список находится на https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/, но есть совершенно другой список и нет широко используемой аннотации kubernetes.io/ingress.global-static-ip-name в примерах Google.

Ссылка, которую вы предоставили с аннотациями, предназначена специально для Ingress-nginx. Эти аннотации не будут работать с Ingress-GCE.

Аннотации, используемые в примерах GCP, относятся к c - Ingress-GCE.

Вы можете создать запрос функции для списка доступных аннотаций для Ingress-GCE на Issuetracker.google.com .

...