首页 文章

如何使用裸机群集上的证书管理器自动化Kubernetes中的Let's加密证书续订?

提问于
浏览
0

我想访问我的Kubernetes裸机集群,其中有一个暴露的Nginx入口控制器用于TLS终止 . 为了能够自动更新证书,我想使用Kubenetes插件cert-manager,这是kube-lego的继任者 .

到目前为止我做了什么:

  • 在这个guide之后,在裸机(1个主人,1个小兵,都运行Ubuntu 16.04.4 LTS)上设置Kubernetes(v1.9.3)群集,其中kubeadm和法兰绒作为pod网络 .

  • 使用Kubernetes包管理器helm安装nginx-ingress(图表版本0.9.5)
    helm install --name nginx-ingress --namespace kube-system stable/nginx-ingress --set controller.hostNetwork=true,rbac.create=true,controller.service.type=ClusterIP

  • 使用helm安装cert-manager(图表版本0.2.2)
    helm install --name cert-manager --namespace kube-system stable/cert-manager --set rbac.create=true

当我使用Ingress资源进行测试时,Ingress Controller已成功公开并按预期工作 . 对于正确的Let's加密证书管理和使用cert-manager的自动续订,我首先需要一个Issuer资源 . 我是从这个acme-staging-issuer.yaml创建的:

apiVersion: certmanager.k8s.io/v1alpha1
kind: Issuer
metadata:
  name: letsencrypt-staging
  namespace: default
spec:
  acme:
    server: https://acme-staging.api.letsencrypt.org/directory
    email: email@example.com
    privateKeySecretRef:
      name: letsencrypt-staging
    http01: {}

kubectl create -f acme-staging-issuer.yaml成功运行但kubectl描述issuer / letsencrypt-staging给了我:

Status:
  Acme:
    Uri:  
  Conditions:
    Last Transition Time:  2018-03-05T21:29:41Z
    Message:               Failed to verify ACME account: Get https://acme-staging.api.letsencrypt.org/directory: tls: oversized record received with length 20291
    Reason:                ErrRegisterACMEAccount
    Status:                False
    Type:                  Ready
Events:
  Type     Reason                Age               From                     Message
  ----     ------                ----              ----                     -------
  Warning  ErrVerifyACMEAccount  1s (x11 over 7s)  cert-manager-controller  Failed to verify ACME account: Get https://acme-staging.api.letsencrypt.org/directory: tls: oversized record received with length 20291
  Warning  ErrInitIssuer         1s (x11 over 7s)  cert-manager-controller  Error initializing issuer: Get https://acme-staging.api.letsencrypt.org/directory: tls: oversized record received with length 20291

如果没有现成的Issuer,我就无法继续生成证书管理器证书或使用ingress-shim(用于自动续订) .

我的设置中缺少什么?使用hostNetwork = true暴露入口控制器是否足够,或者是否有更好的方法在裸机群集上公开其端口80和443?如何解决tls:创建cert-manager颁发者资源时超大记录收到错误?

1 回答

  • 0

    tls:超大记录收到的错误是由Kubernetes小兵的错误配置 /etc/resolv.conf 引起的 . 可以通过编辑它来解决它:

    $ sudo vi /etc/resolvconf/resolv.conf.d/base
    

    添加名称服务器列表:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    更新resolvconf:

    $ sudo resolvconf -u
    

相关问题