Kubernetes / Ingress Nginx / Cert Manager证书有命名空间吗?

时间:2018-02-25 12:03:15

标签: ssl nginx kubernetes cert-manager kube-lego

我正在尝试部署" 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

1 个答案:

答案 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"