Использование пользовательских сертификационных центров (CA) в сервисе Azure Kubernetes (AKS)

Пользовательский центр сертификации (ЦС) позволяет добавлять до 10 сертификатов в кодировке Base64 в хранилище доверия узла. Эта функция часто требуется, когда центры сертификации (ЦС) должны присутствовать на узле, например при подключении к частному реестру.

В этой статье показано, как создать пользовательские ЦС и применить их к кластерам AKS.

Note

Функция пользовательского центра сертификации добавляет ваши пользовательские сертификаты в хранилище доверенных узла AKS. Сертификаты, добавленные с помощью этой функции, недоступны для контейнеров, работающих в модулях pod. Если вам нужны сертификаты внутри контейнеров, их необходимо добавить отдельно, добавив их в образ, используемый модулями pod или во время выполнения с помощью скриптов и секрета.

Prerequisites

  • Подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись.
  • Azure CLI версии 2.72.0 или более поздней версии, установленной и настроенной. Чтобы найти версию CLI, выполните az --version команду. Если вам нужно установить или обновить, см. статью "Установка Azure CLI".
  • Строка сертификата в кодировке Base64 или текстовый файл с сертификатом.

Limitations

  • Пулы узлов Windows не поддерживаются.
  • Установка разных ЦС в одном кластере не поддерживается.

Создание файла сертификата

  • Создайте текстовый файл, содержащий до 10 пустых строк, разделенных сертификатами. При передаче этого файла в кластер сертификаты устанавливаются в хранилищах доверия узла AKS.

    Пример текстового файла:

        -----BEGIN CERTIFICATE-----
        cert1
        -----END CERTIFICATE-----
    
        -----BEGIN CERTIFICATE-----
        cert2
        -----END CERTIFICATE-----
    

Прежде чем перейти к следующему шагу, убедитесь, что пробелы в текстовом файле отсутствуют, чтобы избежать ошибок.

Передача пользовательских корневых сертификатов в кластер AKS

  • Передайте сертификаты в кластер с помощью команды az aks create или az aks update, установив --custom-ca-trust-certificates в имя вашего файла сертификата.

    # Create a new cluster
    az aks create \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --node-count 2 \
        --custom-ca-trust-certificates <path-to-certificate-file> \
        --generate-ssh-keys
    
    # Update an existing cluster
    az aks update \
        --resource-group <resource-group-name> \
        --name <cluster-name> \
        --custom-ca-trust-certificates <path-to-certificate-file>
    

    Note

    Эта операция активирует обновление модели системы, чтобы убедиться, что все существующие узлы имеют установленные одинаковые центры сертификации (ЦС) для корректного развертывания. AKS создает новые узлы, освобождает существующие узлы, удаляет их и заменяет узлами, на которых установлен новый набор сертификатов.

Убедитесь, что Центры Сертификации установлены

  • Убедитесь, что ЦС установлены с помощью команды az aks show.

    az aks show --resource-group <resource-group-name> --name <cluster-name> | grep securityProfile -A 4
    

    В выходных данных раздел securityProfile должен содержать настраиваемые сертификаты ЦС. Рассмотрим пример.

      "securityProfile": {
        "azureKeyVaultKms": null,
        "customCaTrustCertificates": [
            "values"
    

Устранение ошибок форматирования пользовательских ЦС

Добавление сертификатов в кластер может привести к ошибке, если файл с сертификатами не отформатирован должным образом. Может появиться ошибка, аналогичная следующему примеру:

failed to decode one of SecurityProfile.CustomCATrustCertificates to PEM after base64 decoding

Если возникла эта ошибка, убедитесь, что входной файл не имеет дополнительных новых строк, пробелов или данных, отличных от правильно отформатированных сертификатов, как показано в примере файла.

Устранение ошибок пользовательского сертификата ЦС X.509, подписанного неизвестным центром

AKS требует, чтобы сертификаты были правильно отформатированы и закодированы в кодировке Base64. Убедитесь, что переданные сертификаты CA правильно закодированы в Base64 и что файлы с сертификатами CA не содержат переносов строк в формате CRLF.

Перезапустите контейнер для получения новых сертификатов

Если containerd не загружает новые сертификаты, выполните команду systemctl restart containerd из оболочки узла. После перезапуска containerd контейнерный рантайм должен получить новые сертификаты.

enableCustomCATrust Миграция на пенсию (предварительная версия)

Important

Начиная с 14 сентября 2026 г. свойство enableCustomCATrust предварительной версии будет прекращено. После этой даты поле уровня пула узлов enableCustomCATrust=true больше не будет включать функцию пользовательского центра сертификации (ЦС) в AKS. Последний API предварительной версии, поддерживающий это свойство, — 2025-08-02-preview. Существующие пулы узлов, которые по-прежнему зависят от enableCustomCATrust=true, могут сталкиваться со сбоями при операциях масштабирования или при обновлении сертификатов. Чтобы избежать нарушения работы службы, обновите затронутые кластеры и пулы узлов и удалите свойство предварительной версии до 14 сентября 2026 г. Инструкции по миграции см. в разделе enableCustomCATrust (предварительная версия) миграции на пенсию. Для получения дополнительной информации об этом снятии с поддержки, см. соответствующую проблему на GitHub. Чтобы быть в курсе объявлений и обновлений, следите за примечаниями к выпуску AKS.

Обновите пулы узлов, чтобы удалить свойство Custom CA Trust

az aks nodepool update \
  --resource-group <resource-group> \
  --cluster-name <cluster-name> \
  --name <node-pool-name> \
  --disable-custom-ca-trust

Обновите кластеры, чтобы удалить свойство Custom CA Trust

az aks update \
  --resource-group <resource-group> \
  --name <cluster-name> \
  --disable-custom-ca-trust

Если вы хотите, чтобы после прекращения поддержки этой функции для ваших кластеров было включено доверие к пользовательскому ЦС, используйте --custom-ca-trust-certificates и укажите путь к файлу сертификата.

Более подробную информацию о рекомендациях по безопасности AKS см. в статье Рекомендации по обеспечению безопасности кластера и обновления в службе Azure Kubernetes (AKS).