kubernetes 如何为helm安装的nginx-ingress添加静态IP

7cjasjjr  于 2023-05-28  发布在  Kubernetes
关注(0)|答案(3)|浏览(249)

我想创建一个nginx入口,我可以链接到一个保留的IP地址。主要原因是,我想尽量减少手动步骤。目前,基础设施是自动设置与Terraform,但我不能得到nginx-ingress使用保留的IP与它。我已经有nginx-ingress工作,但它创建自己的IP地址。
根据nginx入口站点(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。

a5g8bdjr

a5g8bdjr1#

假设您的云提供商支持具有静态IP的LB(例如,AWS将为您提供CNAME而不是IP):
您必须将其设置为标记,如下所示。完成此操作后,您可以设置您的ingress annotation:kubernetes.io/ingress.class: nginx和您的入口将自动获得相同的IP地址。

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

8cdiaqws2#

最初的答案有点过时,所以这里有一个2022年的工作示例。

**注意:**现有ingress-nginx负载均衡服务不能修改,但安装时 * 可以 * 传递需要使用的外网IP。请记住,您需要提前在云环境中设置外部IP。

下面是我在执行helm安装时使用的命令:

helm upgrade --install ingress-nginx ingress-nginx \
  --repo https://kubernetes.github.io/ingress-nginx \
  --namespace ingress-nginx --create-namespace \
  --debug \
  --set controller.service.loadBalancerIP=<YOUR_STATIC_IP>

更多信息:

63lcw9qa

63lcw9qa3#

如果平台是GCP和Kubernates,则秘密在于暴露入口控制器的服务。
可以使用以下行重新创建服务:

spec:
  loadBalancerIP: xxx.xxx.xxx.xxx

这将使用该IP(如果已保留)创建新的负载均衡器。
一旦完成,任何新的入口资源将采用新的IP。

相关问题