amazon-web-services - 让外部 DNS 与 Kops AWS 1.7 K8s 集群中的入口对象一起使用

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

我正在尝试弄清楚如何让此设置发挥作用:

  • 我正在使用由 AWS 中的 kops 衍生的 Kube 1.7(无 RBAC)
  • 我的整个集群有一个 nginx 入口 Controller ,该 Controller 在通过 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) 和 的适当注释对 Ingress 进行注释外部 DNS (dns.alpha.kubernetes.io/external: app.contoso.com)

在这种情况下,cert-managerIngress 对象做出适当的 react (修改它以完成 ACME 挑战),但是 external-dns code> 没有执行任何操作(日志显示所有主机名都是最新的)。如果我手动为与 LB 服务关联的 ELB 添加 Route53 记录,一切都会按预期进行。检查 Ingress 对象,我看到状态 block 如下所示:

status:
  loadBalancer:
    ingress:
    - {}

我想这就是为什么 external-dns 没有反应的原因?我该如何让它发挥作用?根据文档

更多故障排除信息(Pod 定义、入口定义、 Controller 日志等)可以在此处找到:https://gist.github.com/DWSR/f6d596850346223393bec23b289c9731

最佳答案

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

来源:

关于amazon-web-services - 让外部 DNS 与 Kops AWS 1.7 K8s 集群中的入口对象一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49618559/

相关文章:

amazon-web-services - cdk/cloudformation 如何了解哪个子网是私有(private)子网还是公共(public)子网?

c# - 将来自不同域的用户添加到 AD 通用组 C#

python - 使用正则表达式在地址中查找电子邮件域

kubernetes - 普罗米修斯+赫普斯特

azure - k8s部署minio,但无法访问web控制台页面

amazon-web-services - 如何在 AWS Cost Explorer 中发送每月保存的报告

java - 杰迪斯数据异常 : ERR WATCH inside MULTI is not allowed

c - 在 C 程序中获取 MX 记录

kubernetes - 为什么 active 和就绪性都需要

amazon-web-services - 使用 Java SDK 查询 AWS SQS 队列 URL