我正在试图弄清楚如何让这个设置工作:
-
我正在使用Kube 1.7(无RBAC)从AWS中的kops中分离出来
-
我的整个集群都有一个nginx入口控制器,它使用
kube-system
中的LoadBalancer
服务,通过Helm安装命名空间 -
我在
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
没有反应?我如何让它工作?根据文档
更多故障排除信息(容器定义,入口定义,控制器日志等)可在此处找到:https://gist.github.com/DWSR/f6d596850346223393bec23b289c9731
1 回答
我自己解决了这个问题nginx入口控制器具有
--publish-service
命令行参数,该参数将使其更新入口对象上的状态字段,进而导致external-dns
创建适当的DNS记录 . 通过Helm安装时,只需将.Values.controller.publishService.enabled
设置为true
即可生效 .资料来源:
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/cli-arguments.md
https://github.com/kubernetes/charts/tree/master/stable/nginx-ingress#configuration