在k8s集群给域名颁发https的免费证书,首先需要有一个域名,并且解析到k8s集群内,而我是使用了一个边缘节点来部署ingress,把域名解析到这个ingress节点。
k8s集群还需要安装好Helm,通过Helm来进行组件管理和部署。
在部署过程中如果出现问题,请参考官方的cert-manager架构图,结合日志来判断哪里出现了问题。
1 | kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/v0.13.0/deploy/manifests/00-crds.yaml |
顺序执行以上命令,通过Helm安装cert-manager
1 | # 查看cert-manager的pods是否正常被拉起 |
需要配置一个Issuer, Issuer分为Issuer或者ClusterIssuer
1 | # filename clusterissuer.yml |
创建这么一个文件,并且加载到k8s集群内
1 | kubectl apply -f clusterissuer.yml |
官方的文档ACME给的url值不对,所以如果参考官方文档,会颁发证书失败。
cert-manager使用ACME颁发证书