Ответ
Перевыпуск сертификата подключения зависит от того, о каком именно сертификате идет речь: клиентском (для пользователя) или серверном (для API-сервера). Я опишу оба сценария.
Сценарий 1: Перевыпуск клиентского сертификата (например, для разработчика или CI/CD)
Обычно кластер использует встроенный CA (Certificate Authority), ключи которого находятся на control-plane нодах в /etc/kubernetes/pki/.
-
Генерация нового ключа и CSR (Certificate Signing Request):
openssl genrsa -out dev-user.key 2048 openssl req -new -key dev-user.key -out dev-user.csr -subj "/CN=dev-user/O=developers"O=developers— это группа (RBAC Group) для привязки ролей. -
Создание CSR-объекта в Kubernetes:
# csr.yaml apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: dev-user-csr spec: request: $(cat dev-user.csr | base64 | tr -d 'n') signerName: kubernetes.io/kube-apiserver-client usages: - client authkubectl apply -f csr.yaml -
Одобрение CSR и получение сертификата:
kubectl certificate approve dev-user-csr kubectl get csr dev-user-csr -o jsonpath='{.status.certificate}' | base64 --decode > dev-user.crt -
Обновление конфигурации
kubeconfig:kubectl config set-credentials dev-user --client-key=dev-user.key --client-certificate=dev-user.crt --embed-certs=true # Опционально: встраивает серты прямо в конфиг
Сценарий 2: Перевыпуск сертификатов самого API-сервера
Это критическая операция, обычно выполняется автоматически инструментами вроде kubeadm при продлении.
- Проверка срока действия сертификатов:
sudo kubeadm certs check-expiration - Продление всех сертификатов на control-plane ноде:
sudo kubeadm certs renew allЭта команда обновит сертификаты в
/etc/kubernetes/pki/и в конфигах (/etc/kubernetes/*.conf). - Перезагрузка компонентов control plane:
# Для статичных подов sudo systemctl restart kubelet # Для подов в kube-system kubectl rollout restart deployment -n kube-system coredns
Важно: Для продакшн-кластеров я автоматизирую этот процесс с помощью cert-manager или скриптов, интегрированных в пайплайны обновления кластера, чтобы избежать простоев.