如何为通过 helm 安装的 nginx-ingress 添加静态 IP
How to add a static IP to nginx-ingress installed via helm
我想创建一个 nginx-ingress,我可以 link 到保留的 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
但是,可以通过带有 --publish-service
标志的 nginx-ingress-controller.yaml
文件更新 IP。但是,我通过 helm 安装它:
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
如何在我的 helm 安装(或升级)中 link 发布服务到 nginx-ingress-lb。
假设您的云提供商支持具有静态 IP 的 LB(例如,AWS 将为您提供 CNAME 而不是 IP):
您必须将其设置为标签,如下所示。执行此操作后,您可以设置入口注释:kubernetes.io/ingress.class: nginx
并且您的入口将自动获得相同的 IP 地址。
helm install stable/nginx-ingress --set controller.service.loadBalancerIP=XXXX,rbac.create=true
我想创建一个 nginx-ingress,我可以 link 到保留的 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
但是,可以通过带有 --publish-service
标志的 nginx-ingress-controller.yaml
文件更新 IP。但是,我通过 helm 安装它:
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
如何在我的 helm 安装(或升级)中 link 发布服务到 nginx-ingress-lb。
假设您的云提供商支持具有静态 IP 的 LB(例如,AWS 将为您提供 CNAME 而不是 IP):
您必须将其设置为标签,如下所示。执行此操作后,您可以设置入口注释:kubernetes.io/ingress.class: nginx
并且您的入口将自动获得相同的 IP 地址。
helm install stable/nginx-ingress --set controller.service.loadBalancerIP=XXXX,rbac.create=true