将 nginx-ingress 绑定到静态 IP 地址
Bind nginx-ingress to static IP Address
我想在 AWS EKS 上为从外部系统访问的多个微服务设置入口控制器。
通过 svc1.acme.com
、svc2.acme.com
、...
等虚拟主机名访问微服务
我用 helm 图表设置了 nginx 入口控制器:https://github.com/helm/charts/tree/master/stable/nginx-ingress
我的想法是保留一个弹性 IP 地址并通过设置变量 externalIP 将 nginx-controller 绑定到该 IP。
这样我应该可以使用稳定的通配符 DNS 条目访问服务 *.acme.com --> 54.72.43.19
我可以看到ingress controller服务获取了externalIP,但是这个IP是访问不到的
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-ingress-controller LoadBalancer 10.100.45.119 54.72.43.19 80:32104/TCP,443:31771/TCP 1m
知道为什么吗?
更新:
我用这个命令安装了入口控制器:
helm install --name ingress -f values.yaml stable/nginx-ingress
这是值的要点,唯一与默认值不同的是
externalIPs: ["54.72.43.19"]
https://gist.github.com/christianwoehrle/3b136023b1e0085b028a67ca6a0959b7
也许您可以通过使用网络负载均衡器 (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html), that supports fixed IPs, as the backing for your Nginx ingress, eg (https://aws.amazon.com/blogs/opensource/network-load-balancer-support-in-kubernetes-1-9/) 来实现:
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
labels:
app: nginx
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
我想在 AWS EKS 上为从外部系统访问的多个微服务设置入口控制器。
通过 svc1.acme.com
、svc2.acme.com
、...
我用 helm 图表设置了 nginx 入口控制器:https://github.com/helm/charts/tree/master/stable/nginx-ingress
我的想法是保留一个弹性 IP 地址并通过设置变量 externalIP 将 nginx-controller 绑定到该 IP。
这样我应该可以使用稳定的通配符 DNS 条目访问服务 *.acme.com --> 54.72.43.19
我可以看到ingress controller服务获取了externalIP,但是这个IP是访问不到的
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-ingress-controller LoadBalancer 10.100.45.119 54.72.43.19 80:32104/TCP,443:31771/TCP 1m
知道为什么吗?
更新:
我用这个命令安装了入口控制器:
helm install --name ingress -f values.yaml stable/nginx-ingress
这是值的要点,唯一与默认值不同的是
externalIPs: ["54.72.43.19"]
https://gist.github.com/christianwoehrle/3b136023b1e0085b028a67ca6a0959b7
也许您可以通过使用网络负载均衡器 (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html), that supports fixed IPs, as the backing for your Nginx ingress, eg (https://aws.amazon.com/blogs/opensource/network-load-balancer-support-in-kubernetes-1-9/) 来实现:
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
labels:
app: nginx
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer