如何向通过头盔安装的nginx-ingress添加静态IP

时间:2019-03-29 16:06:21

标签: kubernetes kubernetes-helm nginx-ingress

我想创建一个可以链接到保留IP地址的Nginx入口。主要原因是,我想减少手动步骤。当前,该基础结构是使用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

但是,然后可以使用带有nginx-ingress-controller.yaml标志的--publish-service文件来更新IP。但是,我是通过头盔安装的:

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

如何在头盔安装(或升级)中将发布服务链接到nginx-ingress-lb。

1 个答案:

答案 0 :(得分:2)

假设您的云提供商使用静态IP支持LB(例如,AWS将为您提供CNAME而不是IP):

您必须按照以下说明将其设置为标签。完成此操作后,您可以设置入口注释:kubernetes.io/ingress.class: nginx,并且入口将自动获得相同的IP地址。

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