Общие предварительные требования для развертывания платформы контейнеров OpenShift 3.11 в Azure

Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы

В этой статье описаны общие предварительные требования для развертывания OKD или платформы контейнеров OpenShift в Azure.

При установке OpenShift используются модули playbook Ansible. Чтобы выполнить действия по установке, Ansible использует Secure Shell (SSH) для подключения ко всем узлам кластера.

Когда Ansible проводит SSH-подключение к удаленным узлам, ввести пароль невозможно. Поэтому развертывание завершится сбоем, если с закрытым ключом связана парольная фраза.

Так как все виртуальные машины развертываются с помощью шаблонов Azure Resource Manager, для доступа к ним используется один открытый ключ. Следует включить соответствующий закрытый ключ в виртуальную машину, на которой также выполняются все модули Playbook. С помощью хранилища ключей Azure можно безопасно передать закрытый ключ в виртуальную машину.

Если контейнерам требуется постоянное хранилище, вам понадобятся постоянные тома. OpenShift поддерживает виртуальные жесткие диски Azure (VHD) для постоянных томов, но сначала настройте Azure в качестве поставщика облачных услуг.

В этой модели OpenShift выполняет следующие действия:

  • Создает объект виртуального жесткого диска в учетной записи хранения Azure или на управляемом диске.
  • Подключает виртуальный жесткий диск к виртуальной машине и форматирует том.
  • Подключает том к модулю.

Чтобы эта конфигурация работала, OpenShift нужны разрешения на выполнение указанных выше задач в Azure. Для этого используется субъект-служба. Субъект-служба — это учетная запись безопасности в Azure Active Directory, которой предоставляются разрешения на доступ к ресурсам.

Субъект-служба должна иметь доступ к учетным записям хранения и виртуальным машинам, входящим в состав кластера. При развертывании всех ресурсов кластера OpenShift в одной группе ресурсов субъект-служба может получить разрешения на доступ к этой группе ресурсов.

В этом руководстве описывается создание артефактов, связанных с необходимыми компонентами.

  • Создайте хранилище ключей, чтобы управлять ключами SSH для кластера OpenShift.
  • Создайте субъект-службу, которую будет использовать поставщик облачных служб Azure.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Вход в Azure

Войдите в подписку Azure с помощью команды az login и следуйте инструкциям на экране или щелкните Попробовать, чтобы использовать Cloud Shell.

az login

Создание группы ресурсов

Создайте группу ресурсов с помощью команды az group create. Группа ресурсов Azure является логическим контейнером, в котором происходит развертывание ресурсов Azure и управление ими. Для размещения хранилища ключей должна использоваться выделенная группа ресурсов. Эта группа отделена от группы ресурсов, в которой развертываются ресурсы кластера OpenShift.

В следующем примере создается группа ресурсов с именем keyvaultrg в расположении eastus:

az group create --name keyvaultrg --location eastus

Создание хранилища ключей

Создайте хранилище ключей, где будут храниться ключи SSH для кластера, с помощью команды az keyvault create. Имя хранилища ключей должно быть уникальным и включено в развертывание шаблона, чтобы развертывание не прервалось из-за ошибки KeyVaultParameterReferenceSecretRetrieveFailed.

В следующем примере создается хранилище ключей с именем keyvault в группе ресурсов keyvaultrg:

az keyvault create --resource-group keyvaultrg --name keyvault \
       --enabled-for-template-deployment true \
       --location eastus

Создание ключа SSH

Ключ SSH необходим для защиты доступа к кластеру OpenShift. Создайте пару ключей SSH с помощью команды ssh-keygen (в Linux или macOS):

ssh-keygen -f ~/.ssh/openshift_rsa -t rsa -N ''

Примечание

Паре ключей SSH нельзя присвоить пароль или парольную фразу.

Дополнительные сведения о ключах SSH в Windows см. в статье Использование ключей SSH с Windows в Azure. Закрытый ключ нужно экспортировать в формате OpenSSH.

Сохранение закрытого ключа SSH в Azure Key Vault

Развертывание OpenShift использует созданный ключ SSH, чтобы защитить доступ к основному кластеру OpenShift. Чтобы обеспечить для развертывания безопасное извлечение ключа SSH, сохраните ключ в Key Vault с помощью следующей команды:

az keyvault secret set --vault-name keyvault --name keysecret --file ~/.ssh/openshift_rsa

Создание субъекта-службы

OpenShift взаимодействует с Azure, используя имя пользователя и пароль или субъект-службу. Субъект-служба Azure является удостоверением безопасности, которое можно использовать с приложениями, службами и инструментами автоматизации, такими как OpenShift. Вы можете определять разрешения на то, какие операции может выполнять субъект-служба в Azure, и управлять ими. Рекомендуется ограничить область разрешений субъекта-службы определенными группами ресурсов, а не всей подпиской.

Создайте субъект-службу с помощью команды az ad sp create-for-rbac и выведите учетные данные, необходимые для OpenShift:

В следующем примере создается субъект-служба, а группе ресурсов с именем openshiftrg назначаются разрешения участника.

Сначала создайте группу ресурсов с именем openshiftrg:

az group create -l eastus -n openshiftrg

Создайте субъект-службу:

az group show --name openshiftrg --query id

Сохраните выходные данные команды и используйте их вместо $scope в следующей команде

az ad sp create-for-rbac --name openshiftsp \
      --role Contributor --scopes $scope \

Запишите свойство appId и пароль, возвращенные из команды:

{
  "appId": "11111111-abcd-1234-efgh-111111111111",
  "displayName": "openshiftsp",
  "name": "http://openshiftsp",
  "password": {Strong Password},
  "tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

Предупреждение

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

Дополнительные сведения о субъектах-службах см. в статье Создание субъекта-службы Azure с помощью Azure CLI.

Предварительные требования применимы только к шаблону Resource Manager

Секреты нужно создать для закрытого ключа SSH (sshPrivateKey), секрета клиента Azure Active Directory (aadClientSecret), пароля администратора OpenShift (openshiftPassword) и пароля диспетчера подписки Red Hat или ключа активации (rhsmPasswordOrActivationKey). Кроме того, если используются пользовательские SSL/TLS-сертификаты, необходимо создать шесть дополнительных секретов — routingcafile, routingcertfile, routingkeyfile, mastercafile, mastercertfile и masterkeyfile. Скоро мы подробно разберем эти параметры.

Шаблон ссылается на конкретные имена секретов, поэтому необходимо использовать указанные выше имена (с учетом регистра).

Пользовательские сертификаты

По умолчанию шаблон будет развертывать кластер OpenShift с помощью самозаверяющих сертификатов для веб-консоли OpenShift и домена маршрутизации. Если вы хотите использовать пользовательские TLS/SSL-сертификаты, задайте для routingCertType значение Custom, и для masterCertType — Custom. Для сертификатов потребуется центр сертификации, сертификаты и файлы ключей в формате .pem. Можно использовать пользовательские сертификаты для одного, но не для другого.

Эти файлы потребуется хранить в секретах Key Vault. Используйте тот же Key Vault, что и для закрытого ключа. Вместо того чтобы требовать 6 дополнительных входных данных для имен секретов, шаблон жестко запрограммирован на использование конкретных имен секретов для каждого из файлов TLS/SSL-сертификатов. Сохраните данные сертификата, используя сведения из следующей таблицы.

Имя секрета Файл сертификата
mastercafile Главный файл центра сертификации
mastercertfile Главный файл сертификата
masterkeyfile Главный файл ключа
routingcafile Файл маршрутов ЦС
routingcertfile Файл сертификата маршрутов
routingkeyfile Файл ключа маршрутов

Создайте секреты с помощью Azure CLI. Ниже приведен пример.

az keyvault secret set --vault-name KeyVaultName -n mastercafile --file ~/certificates/masterca.pem

Дальнейшие действия

В этой статье рассматриваются следующие темы:

  • Создайте хранилище ключей, чтобы управлять ключами SSH для кластера OpenShift.
  • Создайте субъект-службу для поставщика облачных решений Azure.

Теперь разверните кластер OpenShift: