Развертывание платформы контейнеров 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

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