ингресс-контроллер и гугл кубернетес - PullRequest
0 голосов
/ 14 октября 2019

Я создал входной ресурс в своем кластере Kubernetes в облаке Google.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gordion
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.global-static-ip-name: gordion-ingress
    networking.gke.io/managed-certificates: gordion-certificate,gordion-certificate-backend
spec:
  rules:
  - host: backend.gordion.io
    http:
      paths:
      - path: /
        backend:
          serviceName: backend
          servicePort: 80

Все работает. Тем не менее, я не создал ни одного ingress-controller. официальный документ заявляет , что он должен иметь его.

У вас должен быть входной контроллер, чтобы удовлетворить Ingress. Только создание ресурса Ingress не имеет никакого эффекта.

Так, где мой входной контроллер, если моя маршрутизация действительно работает? как мне увидеть его конфигурацию?

Ответы [ 3 ]

1 голос
/ 14 октября 2019

В Google Kubernetes Engine (GKE) при создании объекта Ingress встроенный входной контроллер GKE позаботится о создании соответствующего балансировщика нагрузки HTTP (S), который соответствует вашему Ingress и его службам. Для получения дополнительной информации ознакомьтесь с этим Облачным документом Google в разделе «Балансировка нагрузки HTTP (S) с помощью Ingress».

1 голос
/ 14 октября 2019

В GKE, если вы не укажете аннотацию kubernetes.io/ingress.class: nginx, по умолчанию будет использоваться контроллер балансировки нагрузки (GLBC) GCE L7 (он фактически эквивалентен настройке kubernetes.io/ingress.class: gce). Этот контроллер будет автоматически настроен и будет полагаться на глобальный балансировщик нагрузки HTTP (s) GCP.

Более подробную информацию по этой теме вы можете найти на странице GLBC GitHub , а также в этой статье с инструкциями .

1 голос
/ 14 октября 2019

Да, ваш вход будет работать следующим образом, если вы предоставите ему службу NodePort и службу позади ... Но вы могли бы только создать службу LoadBalancer и получить такой же результат.

Если вы этого не сделаетеЕсли у вас есть какой-либо входной контроллер, некоторые из ваших настроек не годятся, так как вы ссылаетесь на какую-то конфигурацию входного контроллера nginx (переписать).

Цель входного контроллера - сбалансировать http-трафик баланса для нескольких приложений внутри вашегокластер, то есть вы создаете только один поставщик (здесь GCP) LB для нескольких доменов / пути. Это позволяет вам делать несколько запросов, не создавая несколько общедоступных ресурсов IP и LB для каждого из ваших приложений.

В документации, которую вы разместили в упомянутых вами предварительных условиях, есть список доступных решений, таких какnginx-ingress controller, traefik ....

Как их использовать:

  • Сначала создайте вход, как вы, удалите перезапись nginx и поместите * на хосты (этоconf по умолчанию, например)
  • После того, как контроллер активирован, для каждого приложения, которому необходим путь к Интернету, создайте вход с вашими специфичными для входа аннотациями.
...