Поддерживает ли GKE nginx-ingress со статическим IP-адресом?

Я использую входящий трафик Google Cloud. Также развернул nginx-ingress и пытался настроить, используя статический IP-адрес в GKE.

  • Можем ли мы использовать входящий трафик Google Cloud и nginx-ingress в одном кластере?
  • Как мы можем использовать nginx-ingress со статическим IP-адресом?

Спасибо




Ответы (4)


Если вы используете helm для развертывания nginx-ingress.

Сначала создайте статический IP-адрес. В Google балансировщики сетевой нагрузки (NLB) поддерживают только региональные статические IP-адреса:

gcloud compute addresses create my-static-ip-address --region us-east4

Затем установите nginx-helm с IP-адресом в качестве параметра loadBalancerIP.

helm install --name nginx-ingress stable/nginx-ingress --namespace my-namespace --set controller.service.loadBalancerIP=35.186.172.1
person Bernie Lenz    schedule 24.07.2019
comment
Отлично! Этот подход работает, если вам также нужно защитить свой nginx: добавьте address_type = "INTERNAL", и вы золотой - person orkenstein; 26.09.2019
comment
Как это соотносится с официальным примером git kubernetes, в котором вы передаете --publish-service=$(POD_NAMESPACE)/my-static-ip в качестве аргумента в свой ingress-controller.yml? github.com/kubernetes/ingress-nginx/tree/ master / docs / examples / - person AlxVallejo; 05.02.2020
comment
Хороший вопрос @AlxVallejo. В вашей ссылке упоминается, что использование loadBalancerIP продвигает эфемерный IP-адрес в статический IP-адрес (теперь, даже если Сервис будет удален, IP-адрес сохранится, поэтому вы можете воссоздать Сервис с spec.loadBalancerIP, установленным на 104.154.109.191). - person Bernie Lenz; 10.02.2020
comment
С помощью Helm 3 выполните следующие команды: helm repo add stable https://kubernetes-charts.storage.googleapis.com/ helm install --name nginx-ingress stable/nginx-ingress --namespace leep --set controller.service.loadBalancerIP={static-id} - person duyetpt; 30.07.2020

Первый вопрос

Как уже указывал Радек 'Goblin' Печонка, это возможно. Я просто хотел связать вас с официальной документацией по этому поводу. иметь значение:

Если у вас несколько контроллеров Ingress в одном кластере, вы можете выбрать один, указав аннотацию ingress.class, например, создав Ingress с такой аннотацией, как

metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: "gce"

будет нацеливаться на контроллер GCE, заставляя контроллер nginx игнорировать его, в то время как аннотация вроде

metadata:
  name: foo
  annotations:
    kubernetes.io/ingress.class: "nginx"

Второй вопрос

Поскольку вы используете Google Cloud Platform, я могу предоставить вам дополнительную информацию об этой реализации Kubernetes в Google.

Считают, что:

По умолчанию Kubernetes Engine выделяет эфемерные внешние IP-адреса для приложений HTTP, доступных через Ingress.

Однако, конечно, вы можете использовать статический IP-адрес для своего входящего ресурса, есть официальное пошаговое руководство, показывающее, как создать балансировку нагрузки HTTP с Ingress, используя входящий ресурс и связать с ним статический IP-адрес, или как продвинуть "эфемерный" уже используемый IP-адрес для быть статичным.

Попробуйте пройти через это, и если вы столкнетесь с какой-либо проблемой, обновите вопрос и спросите!

person GalloCedrone    schedule 13.02.2018
comment
Замечательно, спасибо за подробные указатели. Я думаю, что получил первый вопрос, и сейчас меня больше всего беспокоит второй вопрос. Я пробовал использовать cloud.google.com/kubernetes- / tutorials /, и он работает с входом GKE, но когда я попробовал с nginx, он получил эфемерный IP-адрес. Было бы здорово, если бы вы могли указать какие-либо ссылки static-ip для nginx-ingress Спасибо. - person John; 14.02.2018
comment
Вы также пробовали следовать варианту 1 шага 5? Я не тестировал его, но он должен работать, поскольку он также присутствует в этом руководстве github.com/kubernetes/ingress-nginx/tree/master/docs/examples/ - person GalloCedrone; 14.02.2018
comment
@GalloCedrone Вариант 1 шага 5 не очень полезен, потому что он не декларативен. должен быть какой-нибудь способ "установить и забыть". - person Randy L; 10.04.2018
comment
вторая часть - это не то, о чем просят, вопрос касается статического IP для nginx-ingress, а не gce ingress. - person Vincent Gerris; 16.12.2020

Для контроллера nginx-ingress вам необходимо установить внешний IP-адрес службы:

spec:
  loadBalancerIP: "42.42.42.42"
  externalTrafficPolicy: "Local"
person unguiculus    schedule 13.02.2018
comment
Я не проверял nginx-ingress, и это то, что я искал. Позвольте мне проверить, работает ли это. Большое спасибо за быстрый ответ. Было бы здорово, если бы вы могли указать на это несколько ссылок. - person John; 14.02.2018
comment
Вот несколько указателей: github.com/kubernetes/ingress-nginx/blob/master/docs/examples/ kubernetes.io/docs/reference/generated/kubernetes-api/v1.9/ - person unguiculus; 14.02.2018
comment
В чем причина локальной настройки? - person Gajus; 04.11.2020

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

kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"

который сообщает, что этот вход, как ожидается, будет обеспечиваться только контроллером входа nginx.

Что касается IP, Some cloud providers allow the loadBalancerIP to be specified. с его помощью вы можете контролировать общедоступный IP-адрес службы.

person Radek 'Goblin' Pieczonka    schedule 13.02.2018
comment
Спасибо за указатели. Думаю, я уже использовал это с аннотациями. Было бы здорово, если бы вы могли указать какие-либо ресурсы о nginx-ingress определении static-ip. - person John; 14.02.2018
comment
это не nginx-ingress, который определяет IP, эта поддержка полностью выходит за рамки его возможностей, это делается через службу kubernetes и поддержку облачного провайдера, управляющего предоставлением LB - person Radek 'Goblin' Pieczonka; 14.02.2018
comment
@ Radek'Goblin'Pieczonka: не могли бы вы предоставить несколько ссылок для прохождения, я пытаюсь найти способ назначить статический IP-адрес для балансировщика нагрузки, когда я создаю вход через файл yaml .. - person Santhosha; 21.07.2020
comment
@John: вы придумали решение этой проблемы? если да, дайте мне знать, я пытаюсь добиться того же и в моем случае использования - person Santhosha; 21.07.2020