【问题标题】:Bind nginx-ingress to static IP Address将 nginx-ingress 绑定到静态 IP 地址
【发布时间】:2019-04-13 02:52:14
【问题描述】:

我想在 AWS EKS 上为从外部系统访问的多个微服务设置一个入口控制器。

通过svc1.acme.comsvc2.acme.com、...等虚拟主机名访问微服务

我用 helm chart 设置了 nginx 入口控制器:https://github.com/helm/charts/tree/master/stable/nginx-ingress

我的想法是保留一个弹性 IP 地址并通过设置变量 externalIP 将 nginx-controller 绑定到该 IP。

这样我应该可以使用稳定的通配符 DNS 条目 *.acme.com --> 54.72.43.19 访问服务

可以看到入口控制器服务获取到了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

【问题讨论】:

  • 您还采取了哪些其他步骤来配置该入口控制器?
  • 我可能完全走错了路。我读过 aws elb 不能有静态 IP 地址。也许我必须忍受动态 IP 地址并用 dns 解决这个问题。

标签: amazon-web-services kubernetes amazon-eks nginx-ingress


【解决方案1】:

也许您可以通过使用支持固定 IP 的网络负载均衡器 (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 作为 Nginx 入口的支持来实现这一点,例如 (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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2020-04-26
    相关资源
    最近更新 更多