Kubernetes: проверить SSL-сертификат
export NAME=name_certificate
export NAMESPACE =name_namespace
echo $(kubectl get secret $NAME -n $NAMESPACE -o jsonpath='{.data.tls\.crt}') | base64 -d | openssl x509 -text -noout
заметки об администрировании и python. Траблшутинг в «примерах» и HOWTO.
export NAME=name_certificate
export NAMESPACE =name_namespace
echo $(kubectl get secret $NAME -n $NAMESPACE -o jsonpath='{.data.tls\.crt}') | base64 -d | openssl x509 -text -noout
При создании сертификата или issuer’a появлялась ошибка
Error from server (InternalError): error when creating "certificate.yaml": Internal error occurred: failed calling webhook "webhook.cert-manager.io": Post https://cert-manager-webhook.cert-manager.svc:443/validate?timeout=30s: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Вариантом решения было указанием DNS-серверов в конфигурационном файле Docker’a
В файле /etc/docker/daemon.json добавляем
"dns": ["8.8.8.8", "8.8.8.4"],
kubectl api-resources -o wide
При проверке выпуска сертификата
kubectl describe challenge letsencrypt-4admin-space-3431336376-165597582-1790087113
в логе указана ошибка
Error: 6003: Invalid request headers<- 6103: Invalid format for X-Auth-Key header
Решение в ClusterIssuer и Issuer в разделе spec.solvers.dns01 использовать apiTokenSecretRef вместо apiKeySecretRef
Сниппеты настройки cert-manager с Cloudflare
1. Создаем secret c api-токеном Cloudflare (User Profile > API Tokens > API Tokens) в namespace cert-manager:
apiVersion: v1
data:
api-key: KEY_ON_BASE64
kind: Secret
metadata:
name: cloudflare-api-key-secret
namespace: cert-manager
type: Opaque
apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-4admin-space
spec:
acme:
email: EMAIL_FOR_LETSENCRYPT
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-4admin-space
solvers:
- selector: {}
dns01:
cloudflare:
email: CLOUDFLARE_EMAIL
apiTokenSecretRef:
name: cloudflare-api-key-secret
key: api-key
apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
name: 4admin-space
namespace: default
spec:
secretName: 4admin-space-tls
issuerRef:
name: letsencrypt-4admin-space
kind: ClusterIssuer
commonName: "*.4admin.space"
dnsNames:
- 4admin.space
- "*.4admin.space"
Дебаг проблем с выпусом сертификата в оф документации
Для получения пароля используем следующую команду, которая предоставит информацию из Secret и расшифрует содержимое
kubectl get secret prometheus-grafana -o jsonpath='{.data.admin-password}' | base64 --decode
ps: Если кто не помнит, то дефолтный-логин admin