我正在尝试部署" cert-manager" (https://github.com/jetstack/cert-manager)项目是" kube-lego"的继承者。我发现证书与正在创建的证书不匹配,我想知道其他人是否曾尝试过这些证书。
我正在使用" monitoring-xxx-com"创建一个tls secretName,并且在ingress-nginx日志中我发现它正在尝试搜索namespace / monitoring-xxx-com和找不到预期的东西。
我想知道这是否是因为ingress-nginx正在尝试自动使用pods命名空间而cert-manager正在创建没有命名空间的证书,因此这就是为什么永远无法找到证书的。
error obtaining PEM from secret kube-system/monitoring-xxx-com: error
retrieving secret kube-system/monitoring-xxx-com: secret kube-
system/monitoring-xxx-com was not found
并在" cert-manager":
创建的证书中Issuer Ref:
Kind: ClusterIssuer
Name: letsencrypt-staging
Secret Name: monitoring-xxx-com
答案 0 :(得分:0)
secret和nginx入口控制器位于不同的命名空间中,有一个选项可以从另一个命名空间设置证书。
https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/cli-arguments.md
--default-ssl-certificate string Name of the secret
that contains a SSL certificate to be used as default for a HTTPS catch-all server.
Takes the form <namespace>/<secret name>.
找到你秘密的命名空间:
kubectl describe secrets/monitoring-xxx-com
在部署模板中使用default-ssl-certificate
spec:
template:
spec:
containers:
- args:
- /nginx-ingress-controller
- "--default-backend-service=$(POD_NAMESPACE)/default-http-backend"
- "--default-ssl-certificate=$(POD_NAMESPACE)/tls-certificate"