繁体   English   中英

如何在裸机集群上使用cert-manager自动在Kubernetes中加密证书更新?

[英]How to automate Let's Encrypt certificate renewal in Kubernetes with cert-manager on a bare-metal cluster?

我想使用暴露的Nginx入口控制器访问我的Kubernetes裸机集群以进行TLS终止。 为了能够自动执行证书更新,我想使用kube-lego的后继产品Kubernetes插件cert-manager

到目前为止,我所做的是:

  • 按照本指南 ,在kubeadm和法兰绒作为Pod网络的裸机(1个主节点,1个小兵,都运行Ubuntu 16.04.4 LTS)上设置Kubernetes(v1.9.3)集群。

  • 安装了带有Kubernetes软件包管理器头盔的 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

  • 已安装带头盔的cert-manager (图表版本0.2.2)
    helm install --name cert-manager --namespace kube-system stable/cert-manager --set rbac.create=true

当我使用Ingress资源进行测试时,Ingress控制器已成功公开并且可以按预期工作。 为了正确地让我们使用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

没有准备好的发行者,我将无法继续生成证书管理器证书或使用入口填充(用于自动续订)。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM