Как добавить статический IP-адрес в nginx-ingress, установленный через helm - PullRequest
0 голосов
/ 29 марта 2019

Я хотел бы создать вход nginx, который я могу связать с зарезервированным IP-адресом. Основная причина в том, что я хочу свести к минимуму ручные шаги. В настоящее время инфраструктура автоматически настраивается с помощью Terraform, но я не могу заставить nginx-ingress использовать зарезервированный IP-адрес. У меня уже работает nginx-ingress, но он создает собственный IP-адрес.

Согласно сайту nginx-ingress (https://kubernetes.github.io/ingress-nginx/examples/static-ip/), это должно быть возможно. Сначала нужно создать службу балансировки нагрузки:

apiVersion: v1
kind: Service
metadata:
  name: nginx-ingress-lb
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  loadBalancerIP: 34.123.12.123
  ports:
  - port: 80
    name: http
    targetPort: 80
  - port: 443
    name: https
    targetPort: 443
  selector:
    # Selects nginx-ingress-controller pods
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

Однако затем можно обновить IP-адрес с помощью файла nginx-ingress-controller.yaml с флагом --publish-service. Тем не менее, я устанавливаю это через helm:

helm install stable/nginx-ingress --name my-nginx --set rbac.create=true

Как связать службу публикации с nginx-ingress-lb в моей установке (или обновлении) helm.

1 Ответ

2 голосов
/ 29 марта 2019

Предполагая, что ваш облачный провайдер поддерживает LB со статическими IP-адресами (например, AWS даст вам CNAME вместо IP-адреса):

Вы должны будете установить его в качестве тега, как показано ниже.После этого вы можете установить входную аннотацию: kubernetes.io/ingress.class: nginx и ваш вход автоматически получит тот же IP-адрес.

helm install stable/nginx-ingress  --set controller.service.loadBalancerIP=XXXX,rbac.create=true
...