我想创建一个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。
3条答案
按热度按时间a5g8bdjr1#
假设您的云提供商支持具有静态IP的LB(例如,AWS将为您提供CNAME而不是IP):
您必须将其设置为标记,如下所示。完成此操作后,您可以设置您的ingress annotation:
kubernetes.io/ingress.class: nginx
和您的入口将自动获得相同的IP地址。8cdiaqws2#
最初的答案有点过时,所以这里有一个2022年的工作示例。
**注意:**现有
ingress-nginx
负载均衡服务不能修改,但安装时 * 可以 * 传递需要使用的外网IP。请记住,您需要提前在云环境中设置外部IP。下面是我在执行helm安装时使用的命令:
更多信息:
--set
63lcw9qa3#
如果平台是GCP和Kubernates,则秘密在于暴露入口控制器的服务。
可以使用以下行重新创建服务:
这将使用该IP(如果已保留)创建新的负载均衡器。
一旦完成,任何新的入口资源将采用新的IP。