Смена сертификатов в Службе Azure Kubernetes (AKS)
Служба Azure Kubernetes (AKS) использует сертификаты для проверки подлинности множества своих компонентов. Кластеры с управлением доступом на основе ролей Azure (Azure RBAC), созданные после марта 2022 года, включены с автоматической сменой сертификата. Возможно, вам потребуется периодически повернуть эти сертификаты по соображениям безопасности или политики. Например, может использоваться политика ротации всех сертификатов каждые 90 дней.
Примечание.
Автоматическое поворот сертификата по умолчанию включается только для кластеров AKS с поддержкой RBAC.
В этой статье показано, как работает смена сертификатов в кластере AKS.
Подготовка к работе
Для этой статьи требуется Azure CLI версии 2.0.77 или более поздней. Чтобы узнать версию, выполните команду az --version
. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.
Сертификаты AKS, центры сертификации и учетные записи служб
AKS создает и использует следующие сертификаты, центры сертификации (ЦС) и учетные записи служб (SA):
- Сервер API AKS создает ЦС с именем ЦС кластера.
- Сервер API использует ЦС кластера, который подписывает сертификаты для односторонней связи от сервера API к модулям kubelet.
- Каждый kubelet создает запрос на подпись сертификата (CSR), который подписывает ЦС кластера для связи с kubelet на сервер API.
- Агрегатор API использует ЦС кластера для выдачи сертификатов для взаимодействия с другими API. Агрегатор API также может использовать собственный ЦС для выдачи этих сертификатов, однако в настоящее время используется ЦС кластера.
- Каждый узел использует маркер SA, который подписывает ЦС кластера.
- Клиент
kubectl
использует сертификат для взаимодействия с кластером AKS.
Корпорация Майкрософт поддерживает все сертификаты, упомянутые в этом разделе, за исключением сертификата кластера.
Примечание.
- Кластеры AKS, созданные до мая 2019 года, имеют сертификаты, срок действия которых истекает через два года.
- Кластеры AKS, созданные после мая 2019 года, имеют сертификаты ЦС кластера, срок действия которых истекает через 30 лет.
Вы можете проверить, когда кластер был создан с помощью kubectl get nodes
команды, которая показывает возраст пулов узлов.
Проверка дат окончания срока действия сертификата
Проверка срока действия сертификата кластера
Проверьте дату окончания срока действия сертификата кластера с помощью
kubectl config view
команды.kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Проверка срока действия сертификата сервера API
Проверьте дату окончания срока действия сертификата сервера API с помощью следующей
curl
команды.curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Проверка срока действия сертификата узла агента VMAS
Проверьте дату окончания срока действия сертификата узла агента VMAS с помощью
az vm run-command invoke
команды.az vm run-command invoke --resource-group MC_rg_myAKSCluster_region --name vm-name --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
Проверка срока действия сертификата для узла агента масштабируемого набора виртуальных машин
Проверьте дату окончания срока действия сертификата узла агента масштабируемого набора виртуальных машин с помощью
az vmss run-command invoke
команды.az vmss run-command invoke --resource-group "MC_rg_myAKSCluster_region" --name "vmss-name" --command-id RunShellScript --instance-id 1 --scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" --query "value[0].message"
Автоматическая смена сертификата
Для автоматической смены сертификатов, отличных от ЦС, кластер должен иметь начальную загрузку TLS, которая включена по умолчанию во всех регионах Azure.
Примечание.
- Если у вас есть существующий кластер, необходимо обновить этот кластер, чтобы включить автоматическую смену сертификатов.
- Не отключайте начальную загрузку, чтобы включить автоматическую смену.
- Если кластер находится в остановленном состоянии во время смены автоматических сертификатов, то вращаются только сертификаты плоскости управления. В этом случае необходимо повторно создать пул узлов после смены сертификатов, чтобы инициировать смену сертификата пула узлов.
Для всех кластеров AKS, созданных или обновленных после марта 2022 года, Служба Azure Kubernetes автоматически поворачивает сертификаты, отличные от ЦС, как на уровне управления, так и на узлах агента в пределах 80 % допустимого времени сертификата клиента до истечения срока их действия без простоя кластера.
Как проверить, включена ли начальная загрузка TLS для текущего пула узлов агента?
Убедитесь, что в кластере включена загрузка TLS, перейдя по одному из следующих путей:
- На узле Linux: /var/lib/kubelet/bootstrap-kubeconfig или /host/var/lib/kubelet/bootstrap-kubeconfig
- На узле Windows: C:\k\bootstrap-config
Дополнительные сведения см. в разделе "Подключение к узлам кластера Служба Azure Kubernetes" для обслуживания или устранения неполадок.
Примечание.
Путь к файлу может измениться по мере развития версий Kubernetes.
После настройки региона создайте новый кластер или обновите существующий кластер, чтобы настроить автоматическую смену сертификата кластера. Чтобы включить эту функцию, необходимо обновить плоскость управления и пул узлов.
Смена сертификатов кластера вручную
Предупреждение
Смена сертификатов с помощью az aks rotate-certs
повторного создания всех узлов, масштабируемых наборов виртуальных машин и дисков может привести к простою кластера AKS до 30 минут.
Подключитесь к кластеру
az aks get-credentials
с помощью команды.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Смена всех сертификатов, центров сертификации и SAs в кластере
az aks rotate-certs
с помощью команды.az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
Внимание
Выполнение команды
az aks rotate-certs
может занимать до 30 минут. Если команду не удалось выполнить, используйтеaz aks show
, чтобы проверить, что кластер имеет статус Ротация сертификата. Если для кластера отображается статус сбоя, повторно выполнитеaz aks rotate-certs
, чтобы снова выполнить ротацию сертификатов.Убедитесь, что старые сертификаты больше не являются допустимыми с помощью любой
kubectl
команды, напримерkubectl get nodes
.kubectl get nodes
Если вы не обновили сертификаты, используемые
kubectl
, вы увидите ошибку, аналогичную следующему примеру выходных данных:Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "ca")
Обновите сертификат, используемый
kubectl
az aks get-credentials
с помощью команды с флагом--overwrite-existing
.az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
Убедитесь, что сертификаты обновлены с помощью
kubectl get
команды.kubectl get nodes
Примечание.
Если у вас есть службы, запущенные поверх AKS, вам может потребоваться также обновить их сертификаты.
Следующие шаги
В этой статье показано, как вручную и автоматически повернуть сертификаты кластера, центры сертификации и единые узлы. Дополнительные сведения см. в рекомендациях по обеспечению безопасности кластера и обновлений в Служба Azure Kubernetes (AKS).
Azure Kubernetes Service