Развертывание платформы контейнеров OpenShift 3.11 в Azure
Область применения: ✔️ Виртуальные машины Linux ✔️ Гибкие масштабируемые наборы
Для развертывания платформы контейнеров OpenShift 3.11 в Azure можно использовать один из нескольких способов:
- Вы можете вручную развернуть необходимые компоненты инфраструктуры Azure, а затем следовать инструкциям из документации по платформе OpenShift Container Platform.
- Также можно использовать существующий шаблон Resource Manager, упрощающий развертывание кластера платформы OpenShift Container Platform.
- Другой вариант — использовать предложение Azure Marketplace.
Для всех вариантов подписка Red Hat является обязательной. Во время развертывания экземпляр Red Hat Enterprise Linux регистрируется в подписке Red Hat и связывается с идентификатором пула, который содержит права доступа к платформе OpenShift Container Platform. Убедитесь, что у вас есть действительное имя пользователя, пароль и идентификатор пула диспетчера подписки Red Hat (RHSM). Можно также использовать ключ активации, идентификатор организации и идентификатор пула. Данные можно проверить, войдя на сайт https://access.redhat.com.
Развертывание платформы контейнеров OpenShift 3.11 с помощью шаблона Resource Manager
Частные кластеры
Для развертывания частных кластеров OpenShift требуется не только лишь отсутствие общедоступного IP-адреса, связанного с основной подсистемой балансировки нагрузки (веб-консоль) или с подсистемой балансировки нагрузки (маршрутизатор). Частный кластер обычно использует настраиваемый DNS-сервер (а не Azure DNS по умолчанию), имя личного домена (например, contoso.com) и предварительно заданные виртуальные сети. Для частных кластеров необходимо заранее настроить виртуальную сеть с использованием всех подходящих подсетей и параметров DNS-сервера. Затем используйте existingMasterSubnetReference, existingInfraSubnetReference, existingCnsSubnetReference и existingNodeSubnetReference, чтобы указать существующую подсеть для использования кластером.
Если выбран основной личный кластер (masterClusterType=private), для masterPrivateClusterIp следует указать статический частный IP-адрес. Этот IP-адрес будет назначен внешнему интерфейсу основной подсистемы балансировки нагрузки. IP-адрес должен быть в пределах CIDR основной подсети и не должен использоваться. Для параметра masterClusterDnsType необходимо задать значение custom, а для masterClusterDns следует указать имя основного DNS-сервера. DNS-имя должно быть сопоставлено со статическим частным IP-адресом. Оно будет использоваться для доступа к консоли на основных узлах.
Если выбран частный маршрутизатор (routerClusterType=private), для routerPrivateClusterIp необходимо указать статический частный IP-адрес. Этот IP-адрес будет назначен внешнему интерфейсу подсистемы балансировки нагрузки инфраструктуры. IP-адрес должен быть в пределах CIDR подсети инфраструктуры и не должен использоваться. Для параметра routingSubDomainType необходимо задать значение custom, а для routingSubDomain следует указать DNS-имя с подстановочными знаками для маршрутизации.
Если выбраны частные основные кластеры и частный маршрутизатор, для параметра domainName также необходимо указать имя личного домена.
После успешного развертывания узел Бастиона является единственным узлом с общедоступным IP-адресом, к которому можно подключаться по протоколу SSH. Даже если основные узлы настроены для общего доступа, доступ к ним не предоставляется по протоколу SSH.
Для развертывания с использованием шаблона Resource Manager используется файл параметров, в котором указываются входные параметры. Для дополнительной настройки развертывания создайте вилку репозитория GitHub и измените нужные элементы.
Например, достаточно часто возникает потребность изменить следующие параметры:
- размер виртуальной машины-бастиона (переменная в azuredeploy.json);
- соглашения об именовании (переменные в azuredeploy.json);
- особенности кластера OpenShift, изменяемые в файле hosts (deployOpenShift.sh).
Настройка файла параметров
Шаблон платформы контейнеров OpenShift содержит несколько ветвей для разных версий платформы контейнеров OpenShift. В соответствии с потребностями вы можете выполнять развертывание непосредственно из репозитория или создать вилку репозитория, чтобы вносить нужные изменения в шаблоны и скрипты перед развертыванием.
Используйте значение appId
созданной ранее субъект-службы для параметра aadClientId
.
В примере ниже представлен файл параметров с именем azuredeploy.parameters.json, который содержит все необходимые входные данные.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"_artifactsLocation": {
"value": "https://raw.githubusercontent.com/Microsoft/openshift-container-platform/master"
},
"location": {
"value": "eastus"
},
"masterVmSize": {
"value": "Standard_E2s_v3"
},
"infraVmSize": {
"value": "Standard_D4s_v3"
},
"nodeVmSize": {
"value": "Standard_D4s_v3"
},
"cnsVmSize": {
"value": "Standard_E4s_v3"
},
"osImageType": {
"value": "defaultgallery"
},
"marketplaceOsImage": {
"value": {
"publisher": "RedHat",
"offer": "RHEL",
"sku": "7-RAW",
"version": "latest"
}
},
"storageKind": {
"value": "changeme"
},
"openshiftClusterPrefix": {
"value": "changeme"
},
"minorVersion": {
"value": "69"
},
"masterInstanceCount": {
"value": 3
},
"infraInstanceCount": {
"value": 3
},
"nodeInstanceCount": {
"value": 3
},
"cnsInstanceCount": {
"value": 3
},
"osDiskSize": {
"value": 64
},
"dataDiskSize": {
"value": 64
},
"cnsGlusterDiskSize": {
"value": 128
},
"adminUsername": {
"value": "changeme"
},
"enableMetrics": {
"value": "false"
},
"enableLogging": {
"value": "false"
},
"enableCNS": {
"value": "false"
},
"rhsmUsernameOrOrgId": {
"value": "changeme"
},
"rhsmPoolId": {
"value": "changeme"
},
"rhsmBrokerPoolId": {
"value": "changeme"
},
"sshPublicKey": {
"value": "GEN-SSH-PUB-KEY"
},
"keyVaultSubscriptionId": {
"value": "255a325e-8276-4ada-af8f-33af5658eb34"
},
"keyVaultResourceGroup": {
"value": "changeme"
},
"keyVaultName": {
"value": "changeme"
},
"enableAzure": {
"value": "true"
},
"aadClientId": {
"value": "changeme"
},
"domainName": {
"value": "contoso.com"
},
"masterClusterDnsType": {
"value": "default"
},
"masterClusterDns": {
"value": "console.contoso.com"
},
"routingSubDomainType": {
"value": "nipio"
},
"routingSubDomain": {
"value": "apps.contoso.com"
},
"virtualNetworkNewOrExisting": {
"value": "new"
},
"virtualNetworkName": {
"value": "changeme"
},
"addressPrefixes": {
"value": "10.0.0.0/14"
},
"masterSubnetName": {
"value": "changeme"
},
"masterSubnetPrefix": {
"value": "10.1.0.0/16"
},
"infraSubnetName": {
"value": "changeme"
},
"infraSubnetPrefix": {
"value": "10.2.0.0/16"
},
"nodeSubnetName": {
"value": "changeme"
},
"nodeSubnetPrefix": {
"value": "10.3.0.0/16"
},
"existingMasterSubnetReference": {
"value": "/subscriptions/abc686f6-963b-4e64-bff4-99dc369ab1cd/resourceGroups/vnetresourcegroup/providers/Microsoft.Network/virtualNetworks/openshiftvnet/subnets/mastersubnet"
},
"existingInfraSubnetReference": {
"value": "/subscriptions/abc686f6-963b-4e64-bff4-99dc369ab1cd/resourceGroups/vnetresourcegroup/providers/Microsoft.Network/virtualNetworks/openshiftvnet/subnets/infrasubnet"
},
"existingCnsSubnetReference": {
"value": "/subscriptions/abc686f6-963b-4e64-bff4-99dc369ab1cd/resourceGroups/vnetresourcegroup/providers/Microsoft.Network/virtualNetworks/openshiftvnet/subnets/cnssubnet"
},
"existingNodeSubnetReference": {
"value": "/subscriptions/abc686f6-963b-4e64-bff4-99dc369ab1cd/resourceGroups/vnetresourcegroup/providers/Microsoft.Network/virtualNetworks/openshiftvnet/subnets/nodesubnet"
},
"masterClusterType": {
"value": "public"
},
"masterPrivateClusterIp": {
"value": "10.1.0.200"
},
"routerClusterType": {
"value": "public"
},
"routerPrivateClusterIp": {
"value": "10.2.0.200"
},
"routingCertType": {
"value": "selfsigned"
},
"masterCertType": {
"value": "selfsigned"
}
}
}
Замените указанные параметры соответствующими данными для своей системы.
Разные выпуски могут иметь разные параметры, поэтому проверьте необходимые параметры для используемой ветви.
Описание файла azuredeploy.Parameters.json
Свойство | Описание | Допустимые параметры | Значение по умолчанию |
---|---|---|---|
_artifactsLocation |
URL-адрес для артефактов (JSON, сценарии и т. д.) | https://raw.githubusercontent.com/Microsoft/openshift-container-platform/master | |
location |
Регион Azure для развертывания ресурсов | ||
masterVmSize |
Размер основной виртуальной машины. Выберите один из разрешенных размеров виртуальных машин, перечисленных в файле azuredeploy.json | Standard_E2s_v3 | |
infraVmSize |
Размер виртуальной машины инфраструктуры. Выберите один из разрешенных размеров виртуальных машин, перечисленных в файле azuredeploy.json | Standard_D4s_v3 | |
nodeVmSize |
Размер виртуальной машины узла приложения. Выберите один из разрешенных размеров виртуальных машин, перечисленных в файле azuredeploy.json | Standard_D4s_v3 | |
cnsVmSize |
Размер виртуальной машины узла собственного хранилища контейнеров (CNS). Выберите один из разрешенных размеров виртуальных машин, перечисленных в файле azuredeploy.json | Standard_E4s_v3 | |
osImageType |
Используемый образ RHEL. defaultgallery: по запросу; marketplace: сторонний образ | defaultgallery магазин |
defaultgallery |
marketplaceOsImage |
Если параметру osImageType присвоено значение marketplace, введите соответствующие значения для параметров publisher, offer, sku, version предложения Marketplace. Этот параметр является типом объекта |
||
storageKind |
Тип используемого хранилища | Управляемые unmanaged |
Управляемые |
openshiftClusterPrefix |
Префикс кластера, используемый для настройки имен узлов для всех узлов. От 1 до 20 символов | mycluster | |
minoVersion |
Дополнительный номер версии платформы контейнеров OpenShift 3.11 для развертывания | 69 | |
masterInstanceCount |
Количество основных узлов для развертывания | 1, 3, 5 | 3 |
infraInstanceCount |
Количество развертываемых узлов инфраструктуры | 1, 2, 3 | 3 |
nodeInstanceCount |
Количество развертываемых узлов | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 | 2 |
cnsInstanceCount |
Количество развертываемых узлов CNS | 3, 4 | 3 |
osDiskSize |
Размер диска операционной системы для виртуальной машины (в ГБ) | 64, 128, 256, 512, 1024, 2048 | 64 |
dataDiskSize |
Размер диска данных для присоединения к узлам для тома Docker (в ГБ) | 32, 64, 128, 256, 512, 1024, 2048 | 64 |
cnsGlusterDiskSize |
Размер диска данных для присоединения к узлам CNS для использования glusterfs (в ГБ) | 32, 64, 128, 256, 512, 1024, 2048 | 128 |
adminUsername |
Имя администратора для входа в ОС (ВМ) и начального пользователя OpenShift | ocpadmin | |
enableMetrics |
Включение метрик. Метрикам требуется больше ресурсов, поэтому выберите подходящий размер для виртуальной машины инфраструктуры | true false |
false |
enableLogging |
Включение ведения журналов. Для модуля elasticsearch требуется 8 ГБ ОЗУ, поэтому выберите подходящий размер для виртуальной машины инфраструктуры. | true false |
false |
enableCNS |
Включение собственного хранилища контейнеров | true false |
false |
rhsmUsernameOrOrgId |
Имя пользователя или идентификатор организации для диспетчера подписки Red Hat | ||
rhsmPoolId |
Идентификатор пула диспетчера подписки Red Hat, который содержит ваши права на OpenShift для вычислительных узлов. | ||
rhsmBrokerPoolId |
Идентификатор пула диспетчера подписок Red Hat, который содержит ваши права на OpenShift для основных узлов и узлов инфраструктуры. Если у вас нет других идентификаторов пулов, укажите идентификатор пула rhsmPoolId. | ||
sshPublicKey |
Скопируйте открытый ключ SSH | ||
keyVaultSubscriptionId |
Идентификатор подписки с Key Vault | ||
keyVaultResourceGroup |
Имя группы ресурсов, содержащей хранилище ключей | ||
keyVaultName |
Имя созданного Key Vault | ||
enableAzure |
Включение поставщика облачных служб Azure | true false |
true |
aadClientId |
Идентификатор клиента Azure Active Directory, также называется идентификатором приложения для субъекта-службы | ||
domainName |
Имя личного домена, которое будет использоваться (если применимо). Если вы не развертываете частный кластер полностью, задайте значение "нет". | нет | |
masterClusterDnsType |
Тип домена для веб-консоли OpenShift. Если задано default, будет использоваться DNS-метка общедоступного IP-адреса основной инфраструктуры. Выберите custom, чтобы задать собственное имя | default custom |
default |
masterClusterDns |
Настраиваемое DNS-имя, которое будет использоваться для доступа к веб-консоли OpenShift, если для параметра masterClusterDnsType задано значение "custom" |
console.contoso.com | |
routingSubDomainType |
Если задано значение nipio , routingSubDomain будет использовать nip.io . Используйте значение custom, если у вас есть собственный домен, который вы хотите использовать для маршрутизации |
nipio custom |
nipio |
routingSubDomain |
DNS-имя с подстановочными знаками, которое вы хотите использовать для маршрутизации, если для параметра routingSubDomainType задано значение custom |
apps.contoso.com | |
virtualNetworkNewOrExisting |
Укажите, следует ли использовать существующую виртуальную сеть или создать новую | existing new |
new |
virtualNetworkResourceGroupName |
Имя группы ресурсов для новой виртуальной сети, если для параметра virtualNetworkNewOrExisting выбрано значение new |
resourceGroup().name | |
virtualNetworkName |
Имя создаваемой виртуальной сети, если для параметра virtualNetworkNewOrExisting выбрано значение new |
openshiftvnet | |
addressPrefixes |
Префикс адреса новой виртуальной сети | 10.0.0.0/14 | |
masterSubnetName |
Имя основной подсети | mastersubnet | |
masterSubnetPrefix |
CIDR, используемый для основной подсети (должен быть подмножеством addressPrefix) | 10.1.0.0/16 | |
infraSubnetName |
Имя подсети инфраструктуры | infrasubnet | |
infraSubnetPrefix |
CIDR, используемый для подсети инфраструктуры (должен быть подмножеством addressPrefix) | 10.2.0.0/16 | |
nodeSubnetName |
Имя узла подсети | nodesubnet | |
nodeSubnetPrefix |
CIDR, используемый для подсети узла (должен быть подмножеством addressPrefix) | 10.3.0.0/16 | |
existingMasterSubnetReference |
Полная ссылка на существующую подсеть для основных узлов. Не требуется при создании новой виртуальной сети или подсети | ||
existingInfraSubnetReference |
Полная ссылка на существующую подсеть для узлов инфраструктуры. Не требуется при создании новой виртуальной сети или подсети | ||
existingCnsSubnetReference |
Полная ссылка на существующую подсеть для узлов CNS. Не требуется при создании новой виртуальной сети или подсети | ||
existingNodeSubnetReference |
Полная ссылка на существующую подсеть для вычислительных узлов. Не требуется при создании новой виртуальной сети или подсети | ||
masterClusterType |
Укажите, использует ли кластер частные или общедоступные основные узлы. Если выбран частный узел, основные узлы не будут доступны в Интернете через общедоступный IP-адрес. Вместо этого он будет использовать частный IP-адрес, указанный в masterPrivateClusterIp |
public private |
public |
masterPrivateClusterIp |
Если выбраны частные основные узлы, необходимо указать частный IP-адрес для использования внутренней подсистемой балансировки нагрузки для основных узлов. Этот статический IP-адрес должен находиться в пределах блока CIDR для основной подсети и он не должен использоваться. Если выбраны общедоступные основные узлы, это значение не будет использоваться, но по-прежнему должно быть указано | 10.1.0.200 | |
routerClusterType |
Укажите, использует ли кластер частные или общедоступные узлы. Если выбран частный узел, узлы инфраструктуры не будут доступны в Интернете через общедоступный IP-адрес. Вместо этого он будет использовать частный IP-адрес, указанный в routerPrivateClusterIp |
public private |
public |
routerPrivateClusterIp |
Если выбраны частные узлы инфраструктуры, необходимо указать частный IP-адрес для использования внутренней подсистемой балансировки нагрузки для узлов инфраструктуры. Этот статический IP-адрес должен находиться в пределах блока CIDR для подсети инфраструктуры и он не должен использоваться. Если выбраны общедоступные узлы инфраструктуры, это значение не будет использоваться, но по-прежнему должно быть указано | 10.2.0.200 | |
routingCertType |
Использовать настраиваемый сертификат для домена маршрутизации или самозаверяющий сертификат по умолчанию — следуйте инструкциям в разделе Настраиваемые сертификаты. | selfsigned custom |
selfsigned |
masterCertType |
Использовать настраиваемый сертификат для основного домена или самозаверяющий сертификат по умолчанию — следуйте инструкциям в разделе Настраиваемые сертификаты. | selfsigned custom |
selfsigned |
Развертывание с помощью Azure CLI
Примечание
Для выполнения следующей команды необходим интерфейс командной строки версии не ниже 2.0.8. Узнать свою версию CLI можно с помощью команды az --version
. Чтобы обновить версию CLI, ознакомьтесь со статьей Установка Azure CLI.
В примере ниже кластер OpenShift и все связанные ресурсы развертываются в группу ресурсов openshiftrg с именем развертывания myOpenShiftCluster. Репозиторий GitHub ссылается непосредственно на шаблон, при этом используется локальный файл параметров с именем azuredeploy.parameters.json.
az deployment group create -g openshiftrg --name myOpenShiftCluster \
--template-uri https://raw.githubusercontent.com/Microsoft/openshift-container-platform/master/azuredeploy.json \
--parameters @./azuredeploy.parameters.json
Для завершения развертывания требуется не менее 60 минут в зависимости от общего количества развертываемых узлов и настроенных параметров. После завершения развертывания в терминале отобразятся полное доменное имя DNS узла-бастиона и URL-адрес консоли OpenShift.
{
"Bastion DNS FQDN": "bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com",
"OpenShift Console URL": "http://openshiftlb.eastus.cloudapp.azure.com/console"
}
Если вы не хотите, чтобы окно командной строки оставалось ожидать завершения развертывания, добавьте --no-wait
в число параметров при развертывании группы. Выходные данные из развертывания можно получить на портале Azure в разделе развертывания для группы ресурсов.
Подключение к кластеру OpenShift
Когда завершится развертывание, получите данные для подключения из раздела выходных данных развертывания. Подключитесь к консоли OpenShift через браузер, используя URL-адрес консоли OpenShift. Кроме того, можно создать SSH-подключение к узлу-бастиону. В следующем примере в качестве имени администратора указано clusteradmin, а для полного доменного имени DNS с общедоступным IP-адресом узла-бастиона — bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com.
$ ssh clusteradmin@bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com
Очистка ресурсов
Если группа ресурсов, кластер OpenShift и все связанные ресурсы больше не нужны, их можно удалить с помощью команды az group delete.
az group delete --name openshiftrg