Общие предварительные требования для развертывания платформы контейнеров 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: