【问题标题】:How to add a static IP to nginx-ingress installed via helm如何向通过 helm 安装的 nginx-ingress 添加静态 IP
【发布时间】:2023-04-04 19:22:01
【问题描述】:

我想创建一个可以链接到保留 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

但是,可以通过带有--publish-service 标志的nginx-ingress-controller.yaml 文件更新IP。但是,我通过 helm 安装它:

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

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

【问题讨论】:

    标签: kubernetes kubernetes-helm nginx-ingress


    【解决方案1】:

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

    您必须将其设置为标签,如下所示。完成此操作后,您可以设置您的入口注解:kubernetes.io/ingress.class: nginx,您的入口将自动获得相同的 IP 地址。

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

    【讨论】:

    • 我正在使用 GKE。我有一个静态 IP 34.123.12.123 但我收到“创建负载均衡器时出错(将重试):无法确保服务默认/ng3-nginx-ingress-controller 的负载均衡器:请求的 ip “34.123.12.123”既不是静态的也不是分配的运行上述后到 LB。”
    • 如果我尝试为 nginx-ingress-lb 运行 static-ip-svc.yml(上图),我会收到相同的消息
    • 这是全球IP吗?还是区域性的?
    • 是全局ip
    • 这个答案是正确的,但是IP需要是区域的,并且和集群在同一个区域
    猜你喜欢
    • 2021-11-05
    • 2022-08-18
    • 1970-01-01
    • 2021-02-01
    • 2020-05-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2021-05-17
    相关资源
    最近更新 更多