Cert-manager
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>