【问题标题】:Getting External-DNS to work with Ingress Objects in Kops AWS 1.7 K8s Cluster让外部 DNS 与 Kops AWS 1.7 K8s 集群中的入口对象一起工作
【发布时间】:2018-04-02 20:47:17
【问题描述】:

我正试图弄清楚如何让这个设置工作:

  • 我正在使用从 AWS 中的 kops 推出的 Kube 1.7(无 RBAC)
  • 我的整个集群有一个单一的 nginx 入口控制器,它在通过 Helm 安装的 kube-system 命名空间中使用 LoadBalancer 服务
  • 我在kube-system 中设置了cert-manager,通过 Helm 和 使用ClusterIssuers
  • 我通过 Helm 在kube-system 中设置了external-dns
  • 我有多个应用程序,每个命名空间一个,每个命名空间中都有关联的 Ingress 对象。
  • 我正在使用 cert-manager (certmanager.k8s.io/cluster-issuer: letsencrypt-prod) 和 external-dns (dns.alpha.kubernetes.io/external: app.contoso.com) 的适当注释对 Ingress 进行注释

在这种情况下,cert-manager 正在对 Ingress 对象做出适当的反应(修改它以完成 ACME 挑战),但 external-dns 没有做任何事情(日志显示所有主机名都是最新的)。如果我为与 LB 服务关联的 ELB 手动添加 Route53 记录,则一切正常。检查 Ingress 对象,我看到状态块如下所示:

status:
  loadBalancer:
    ingress:
    - {}

我想这就是为什么external-dns 没有反应?我怎样才能让它工作?根据文档

更多故障排除信息(pod 定义、入口定义、控制器日志等)可以在这里找到:https://gist.github.com/DWSR/f6d596850346223393bec23b289c9731

【问题讨论】:

    标签: amazon-web-services dns kubernetes kubernetes-ingress


    【解决方案1】:

    我自己解决了这个问题。 nginx 入口控制器有一个--publish-service 命令行参数,这将导致它更新入口对象上的状态字段,进而导致external-dns 创建适当的DNS 记录。通过 Helm 安装时,只需将 .Values.controller.publishService.enabled 设置为 true 即可生效。

    来源:

    【讨论】:

      猜你喜欢
      • 2019-10-23
      • 2020-08-29
      • 1970-01-01
      • 2019-06-24
      • 2019-06-03
      • 2021-03-04
      • 2013-07-14
      • 2022-08-18
      • 2020-10-15
      相关资源
      最近更新 更多