【问题标题】:Kubernetes/Ingress Nginx/Cert Manager certificates have namespaces?Kubernetes/Ingress Nginx/Cert Manager 证书有命名空间吗?
【发布时间】:2018-08-05 00:09:03
【问题描述】:

我正在尝试部署“kube-lego”的继承者“cert-manager”(https://github.com/jetstack/cert-manager)项目。我发现证书与正在创建的证书不匹配,我想知道之前是否有人尝试过。

我正在使用“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

【问题讨论】:

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


    【解决方案1】:

    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"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-02
      • 2019-07-27
      • 2019-06-28
      • 2021-07-14
      • 1970-01-01
      • 2021-12-03
      • 1970-01-01
      • 2022-01-16
      相关资源
      最近更新 更多