Cert-manager

Материал из ALT Linux Wiki

cert-manager добавляет сертификаты и издателей сертификатов как типы ресурсов в кластерах Kubernetes и упрощает процесс получения, продления и использования этих сертификатов.

Он поддерживает выпуск сертификатов из различных источников, включая Let's Encrypt (ACME), HashiCorp Vault и CyberArk Certificate Manager, а также локальный выпуск внутри кластера.

cert-manager также следит за тем, чтобы сертификаты оставались действительными и актуальными, стараясь продлевать сертификаты в подходящее время до истечения срока их действия, чтобы снизить риск сбоев и устранить лишнюю работу.

Документация тут.

Быстрый старт

Статьи по развертыванию тут и тут.

1. Примените манифест нужной версии и ветки.

$ kubectl apply  -f  https://altlinux.space/cloud/manifests/raw/branch/master/cert-manager/sisyphus/latest/cert-manager.yaml

2. Проверьте поды.

$ kubectl get pods --namespace cert-manager

NAME                                       READY   STATUS    RESTARTS   AGE
cert-manager-55ffb59594-clx56              1/1     Running   0          22s
cert-manager-cainjector-74865bcfcb-59mhp   1/1     Running   0          22s
cert-manager-webhook-7b9cc764c7-49xxw      1/1     Running   0          22s

3. Установите cmctl (опционально) для удобного правления cert-manager через командную строку.

# apt-get update && apt-get install cmctl

$ cmctl check api
The cert-manager API is ready

4. Запустите тест. Создайте тестовый сертификат.

$ cat <<EOF > test-resources.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: cert-manager-test
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: test-selfsigned
  namespace: cert-manager-test
spec:
  selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: selfsigned-cert
  namespace: cert-manager-test
spec:
  dnsNames:
    - example.com
  secretName: selfsigned-cert-tls
  issuerRef:
    name: test-selfsigned
EOF

$ kubectl apply  -f  test-resources.yaml
namespace/cert-manager-test created
issuer.cert-manager.io/test-selfsigned created
certificate.cert-manager.io/selfsigned-cert created

5. Проверьте сертификат.

$ kubectl describe certificate -n cert-manager-test
...
Events:
  Type    Reason     Age   From                                       Message
  ----    ------     ----  ----                                       -------
  Normal  Issuing    102s  cert-manager-certificates-trigger          Issuing certificate as Secret does not exist
  Normal  Generated  102s  cert-manager-certificates-key-manager      Stored new private key in temporary Secret resource "selfsigned-cert-frhll"
  Normal  Requested  102s  cert-manager-certificates-request-manager  Created new CertificateRequest resource "selfsigned-cert-1"
  Normal  Issuing    102s  cert-manager-certificates-issuing          The certificate has been successfully issued

6. Удаление ресурсов.

#удалить тестовый сертификат
$ kubectl delete -f test-resources.yaml
#деинсталяция cert-manager
$ kubectl delete -f https://altlinux.space/cloud/manifests/raw/branch/master/cert-manager/sisyphus/latest/cert-manager.yaml
#при не удачной деинсталяции можно почистить зависшие ресурсы
$ kubectl delete lease -n <namespace> cert-manager-cainjector-leader-election cert-manager-controller
$ kubectl delete apiservice v1beta1.webhook.cert-manager.io
#удаление отложенных задач
$ kubectl delete mutatingwebhookconfigurations cert-manager-webhook
$ kubectl delete validatingwebhookconfigurations cert-manager-webhook
#измените .metadata.finalizers в пустой список
$ kubectl edit challenge <the-challenge>