2

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

  • 我正在使用从 AWS 中的 kops 推出的 Kube 1.7(无 RBAC)
  • 我的整个集群有一个 nginx 入口控制器,它使用通过 Helm 安装的命名空间LoadBalancer中的服务kube-system
  • 我已经cert-manager设置kube-system,通过 Helm 安装并使用ClusterIssuers
  • 我已经通过 Helm 安装external-dnskube-system
  • 我有多个应用程序,每个命名空间一个,每个命名空间中都有关联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

4

1 回答 1

3

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

资料来源:

于 2018-04-03T03:59:33.940 回答