Поделиться через


Пользовательский центр сертификации (ЦС) в службе Azure Kubernetes (AKS)

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

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

Необходимые компоненты

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

Ограничения

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

Установка центров сертификации в хранилище доверия вашего узла

  1. Создайте файл, содержащий ЦС.

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

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

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

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

  2. Используйте az aks create или az aks update для передачи сертификатов в кластер. После завершения операции сертификаты устанавливаются в хранилищах доверия узла.

    • Установите Центры сертификации во время создания кластера, используя команду az aks create и указав текстовый файл для параметра --custom-ca-trust-certificates.

      az aks create \
          --resource-group <resource-group-name> \
          --name <cluster-name> \
          --node-count 2 \
          --custom-ca-trust-certificates FileWithCAs \
          --generate-ssh-keys
      
    • Установите ЦС во время обновления кластера, используя команду az aks update, и укажите текстовый файл для параметра --custom-ca-trust-certificates.

      az aks update \
          --resource-group <resource-group-name> \
          --name <cluster-name> \
          --custom-ca-trust-certificates <path-to-ca-file>
      

    Примечание.

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

  3. Проверьте, что установлены Центры сертификации.

Используйте команду az aks show, чтобы проверить, установлены ли ЦС.

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

Выходные данные securityProfile должны содержать ваши пользовательские сертификаты доверия Центра сертификации (CA).

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

Устранение неполадок

Ошибка форматирования

Добавление сертификатов в кластер может привести к ошибке, если файл с сертификатами не отформатирован должным образом.

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

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

Функция включена и секрет с помощью ЦС добавлена, но операции завершаются сбоем с ошибкой сертификата X.509, подписанного неизвестным центром.

Неправильно отформатированные сертификаты, переданные в секрете

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

Сертификаты, передаваемые в --custom-ca-trust-certificates нее, не должны быть закодированы в кодировке Base64.

Containerd не распознает новые сертификаты

Выполните команду systemctl restart containerdиз оболочки узла. После перезапуска контейнера среда выполнения контейнера выбирает новые сертификаты.

Следующие шаги

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