参考官方文档: https://docs.cert-manager.io/en/latest/getting-started/install/kubernetes.html

创建命名空间

  1. kubectl create namespace cert-manager

cert-manager 部署时会生成 ValidatingWebhookConfiguration 注册ValidatingAdmissionWebhook 来实现 CRD 校验,而ValidatingWebhookConfiguration 里需要写入 cert-manager 自身校验服务端的证书信息,就需要在自己命名空间创建 ClusterIssuerCertificate 来自动创建证书,创建这些 CRD 资源又会被校验服务端校验,但校验服务端证书还没有创建所以校验请求无法发送到校验服务端,这就是一个鸡生蛋还是蛋生鸡的问题了,所以我们需要关闭 cert-manager 所在命名空间的 CRD 校验,通过打 label 来实现:

  1. kubectl label namespace cert-manager certmanager.k8s.io/disable-validation=true
  2. kubectl label namespace cert-manager cert-manager.io/disable-validation=true

使用kubectl安装

  1. 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

  1. kubectl apply --validate=false -f https://raw.githubusercontent.com/jetstack/cert-manager/release-0.13/deploy/manifests/00-crds.yaml

添加 repo:

  1. helm repo add jetstack https://charts.jetstack.io
  2. helm repo update

执行安装

  1. helm install cert-manager \
  2. -n cert-manager \
  3. --version v0.13.0 \
  4. jetstack/cert-manager

更多详细的配置参数可以参考:https://github.com/jetstack/cert-manager/blob/master/deploy/charts/cert-manager/values.yaml
用于设置certificate删除时自动删除secret:

  1. extraArgs:
  2. - --enable-certificate-owner-ref=true

查看状态

  1. $ kubectl -n cert-manager rollout status deploy/cert-manager
  2. deployment "cert-manager" successfully rolled out
  3. $ kubectl get pods -n cert-manager
  4. NAME READY STATUS RESTARTS AGE
  5. pod/cert-manager-5c47f46f57-k78l6 1/1 Running 0 91s
  6. pod/cert-manager-cainjector-6659d6844d-tr8rf 1/1 Running 0 91s
  7. pod/cert-manager-webhook-547567b88f-8lthd 1/1 Running 0 91s

使用helm3查看:

  1. $ 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

卸载

  1. #通过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