使用cert-manager为DNSPod签发免费证书
安装cert-manager
可以参考官网安装方式:https://cert-manager.io/docs/installation/
因为官网的镜像在quay.io
拉取,国内可能拉取不到,我已经同步到了阿里云一份,可直接使用,对应关系如下:
quay.io/jetstack/cert-manager-cainjector:v1.13.0: registry.cn-hangzhou.aliyuncs.com/toodo/cert-manager:cainjector-v1.13.0
quay.io/jetstack/cert-manager-controller:v1.13.0: registry.cn-hangzhou.aliyuncs.com/toodo/cert-manager:controller-v1.13.0
quay.io/jetstack/cert-manager-acmesolver:v1.13.0: registry.cn-hangzhou.aliyuncs.com/toodo/cert-manager:acmesolver-v1.13.0
quay.io/jetstack/cert-manager-webhook:v1.13.0: registry.cn-hangzhou.aliyuncs.com/toodo/cert-manager:webhook-v1.13.0
也可以直接使用以下命令部署:
wget https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml
sed -i 's/quay.io\/jetstack\/cert-manager-cainjector:v1.13.0/registry.cn-hangzhou.aliyuncs.com\/toodo\/cert-manager:cainjector-v1.13.0/g' cert-manager.yaml
sed -i 's/quay.io\/jetstack\/cert-manager-controller:v1.13.0/registry.cn-hangzhou.aliyuncs.com\/toodo\/cert-manager:controller-v1.13.0/g' cert-manager.yaml
sed -i 's/quay.io\/jetstack\/cert-manager-acmesolver:v1.13.0/registry.cn-hangzhou.aliyuncs.com\/toodo\/cert-manager:acmesolver-v1.13.0/g' cert-manager.yaml
sed -i 's/quay.io\/jetstack\/cert-manager-webhook:v1.13.0/registry.cn-hangzhou.aliyuncs.com\/toodo\/cert-manager:webhook-v1.13.0/g' cert-manager.yaml
kubectl apply -f cert-manager.yaml
创建DNSPod Token
在DNSPod官网 https://console.dnspod.cn/account/token/token 登陆后点击 账号中心 -> API秘钥 -> DNSPod Token -> 创建秘钥,将ID和Token记录下来
该Token是一次性可见的,需要自己保存
安装 cert-manager-webhook-dnspod
创建values文件:dnspod-webhook-values.yaml
groupName: toodo.fun # 写一个标识 group 的名称,可以任意写
secrets: # 将前面生成的 id 和 token 粘贴到下面
apiID: "<ID>"
apiToken: "<Token>"
clusterIssuer:
enabled: true # 自动创建出一个 ClusterIssuer
email: your@email.com # 填写您的邮箱地址
使用以下命令进行安装
git clone --depth 1 https://github.com/MR5356/cert-manager-webhook-dnspod.git
helm upgrade --install -n cert-manager -f dnspod-webhook-values.yaml cert-manager-webhook-dnspod ./cert-manager-webhook-dnspod/deploy/cert-manager-webhook-dnspod
创建证书
创建资源文件:toodo.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: toodo-fun-crt
namespace: toodo
spec:
secretName: toodo-fun-crt-secret # 证书保存在这个 secret 中
issuerRef:
name: cert-manager-webhook-dnspod-cluster-issuer # 这里使用自动生成出来的 ClusterIssuer
kind: ClusterIssuer
group: cert-manager.io
dnsNames: # 填入需要签发证书的域名列表,确保域名是使用 dnspod 管理的
- toodo.fun
- www.toodo.fun
使用以下命令部署:
kubectl apply -f toodo.yaml
可以使用命令kubectl get certificaterequests.cert-manager.io -ntoodo
查看状态,等待ready变为True就代表成功了
RuideMacBook-Pro :: » kubectl get certificaterequests.cert-manager.io -ntoodo
NAME APPROVED DENIED READY ISSUER REQUESTOR AGE
toodo-fun-crt-1 True True cert-manager-webhook-dnspod-cluster-issuer system:serviceaccount:cert-manager:cert-manager 5m56s
在ingress中使用证书
ingress:
enabled: true
className: "traefik"
annotations: {}
hosts:
- host: toodo.fun
paths:
- path: /
pathType: ImplementationSpecific
tls:
- secretName: toodo-fun-crt-secret
hosts:
- toodo.fun
- www.toodo.fun