• 安装 cert-manager
    • 使用原生 yaml 资源安装
    • 使用 Helm 安装
    • 校验是否安装成功

    安装 cert-manager

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

    介绍几种安装方式,不管是用哪种我们都先规划一下使用哪个命名空间,推荐使用 cert-manger 命名空间,如果使用其它的命名空间需要做些更改,会稍微有点麻烦,先创建好命名空间:

    1. kubectl create namespace cert-manager

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

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

    使用原生 yaml 资源安装

    直接执行 kubectl apply 来安装:

    1. kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.11.0/cert-manager.yaml

    使用 kubectl v1.15 及其以下的版本需要加上 --validate=false,否则会报错。

    使用 Helm 安装

    安装 CRD:

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

    添加 repo:

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

    执行安装:

    1. helm install \
    2. --name cert-manager \
    3. --namespace cert-manager \
    4. --version v0.11.0 \
    5. jetstack/cert-manager

    校验是否安装成功

    检查 cert-manager 相关的 pod 是否启动成功:

    1. $ kubectl get pods --namespace cert-manager
    2. NAME READY STATUS RESTARTS AGE
    3. cert-manager-cainjector-74bb68d67c-4vplr 1/1 Running 0 101s
    4. cert-manager-f7f8bf74d-j4hcz 1/1 Running 0 101s
    5. cert-manager-webhook-665df569b5-5p6x8 1/1 Running 0 101s