参考官方文档: https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html
创建命名空间
kubectl create namespace cert-manager
cert-manager 部署时会生成 ValidatingWebhookConfiguration 注册ValidatingAdmissionWebhook 来实现 CRD 校验,而ValidatingWebhookConfiguration 里需要写入 cert-manager 自身校验服务端的证书信息,就需要在自己命名空间创建 ClusterIssuer 和 Certificate 来自动创建证书,创建这些 CRD 资源又会被校验服务端校验,但校验服务端证书还没有创建所以校验请求无法发送到校验服务端,这就是一个鸡生蛋还是蛋生鸡的问题了,所以我们需要关闭 cert-manager 所在命名空间的 CRD 校验,通过打 label 来实现:
kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=truekubectl label namespace cert-manager cert-manager.io/disable-validation=true
使用kubectl安装
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.13.0/cert-manager.yaml
使用
kubectl v1.15及其以下的版本需要加上--validate=false
使用helm安装
安装 CRD
kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.13/deploy/manifests/00-crds.yaml
添加 repo:
helm repo add jetstack https://charts.jetstack.iohelm repo update
执行安装
helm install cert-manager \-n cert-manager \--version v0.13.0 \jetstack/cert-manager
更多详细的配置参数可以参考:https://github.com/jetstack/cert-manager/blob/master/deploy/charts/cert-manager/values.yaml
用于设置certificate删除时自动删除secret:
extraArgs:- --enable-certificate-owner-ref=true
查看状态
$ kubectl -n cert-manager rollout status deploy/cert-managerdeployment "cert-manager" successfully rolled out$ kubectl get pods -n cert-managerNAME READY STATUS RESTARTS AGEpod/cert-manager-5c47f46f57-k78l6 1/1 Running 0 91spod/cert-manager-cainjector-6659d6844d-tr8rf 1/1 Running 0 91spod/cert-manager-webhook-547567b88f-8lthd 1/1 Running 0 91s
使用helm3查看:
$ helm list -n cert-managerNAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSIONcert-manager cert-manager 1 2019-12-09 15:55:03.245917473 +0800 CST deployed cert-manager-v0.13.0 v0.13.0
卸载
#通过kubectl删除kubectl delete -f https://github.com/jetstack/cert-manager/releases/download/v0.13.0/cert-manager.yaml#通过helm3删除helm del cert-manager -n cert-manager
