前提条件
k8s集群<1.19
cert-manager
ingress-nginx
安装cert-manager
1 | kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.yaml |
官方安装文档
安装ingress-nginx
注意安装镜像地址,改为国内地址,建议使用lank8s.cn,使用文档在官网,修改一下地址即可。
1 | kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.11.1/deploy/static/provider/cloud/deploy.yaml |
查看ingressclass
1 | kubectl get ingressclass |
##
启动一个http服务
1 | kind: Service |
颁发机构(CA)
1 | apiVersion: cert-manager.io/v1 |
ACME:自动证书管理环境 协议来确定您是否拥有某个域名,进而确定能否被颁发 Let’s Encrypt 证书。对于这个 challenge,需要传递以下参数:
metadata.name:ClusterIssuer 名称,在 Kubernetes 安装中需要是唯一的。这个名称将在后面的证书颁发示例中用到。
spec.acme.email:这是您为生成证书而使用 Let’s Encrypt 注册的电子邮件地址。这应该是您的电子邮件。
spec.acme.privateKeySecretRef:这是您将用来存储私钥的 Kubernetes secret 的名称。
spec.acme.solvers:这应保持不变——它指出了您所使用的 challenge 类型(或者 ACME 所说的解析程序)(HTTP-01 或 DNS-01),以及它应该应用于哪种 Ingress 类型(在这种情况下,将是 nginx)。
签发证书
1 | apiVersion: networking.k8s.io/v1 |
验证HTTPS
故障排查
Certificate => CertificateRequest => Order => Challenge
以此使用kubectl get、describe查看状态和日志
参考链接:HTTP Validation - cert-manager Documentation、验证方式 - Let’s Encrypt - 免费的SSL/TLS证书 (letsencrypt.org)