Implementar o OpenShift Container Platform 3.11 no Azure

Aplica-se a: ✔️ Conjuntos de dimensionamento flexíveis de VMs ✔️ do Linux

Pode utilizar um dos vários métodos para implementar o OpenShift Container Platform 3.11 no Azure:

Para todas as opções, é necessária uma subscrição do Red Hat. Durante a implementação, a instância do Red Hat Enterprise Linux é registada na subscrição do Red Hat e anexada ao ID do Conjunto que contém as elegibilidades para a Plataforma de Contentores do OpenShift. Certifique-se de que tem um nome de utilizador, palavra-passe e ID de Conjunto válidos do Red Hat Subscription Manager (RHSM). Pode utilizar uma Chave de Ativação, ID da Organização e ID do Conjunto. Pode verificar estas informações ao iniciar sessão em https://access.redhat.com.

Implementar com o modelo openShift Container Platform Resource Manager 3.11

Clusters Privados

A implementação de clusters do OpenShift privados requer mais do que apenas não ter um IP público associado ao balanceador de carga principal (consola Web) ou ao balanceador de carga de infraestrutura (router). Geralmente, um cluster privado utiliza um servidor DNS personalizado (não o DNS do Azure predefinido), um nome de domínio personalizado (como contoso.com) e redes virtuais predefinidas. Para clusters privados, tem de configurar a rede virtual com todas as sub-redes e definições de servidor DNS adequadas com antecedência. Em seguida, utilize existingMasterSubnetReference, existingInfraSubnetReference, existingCnsSubnetReference e existingNodeSubnetReference para especificar a sub-rede existente para utilização pelo cluster.

Se o modelo global privado estiver selecionado (masterClusterType=private), é necessário especificar um IP privado estático para masterPrivateClusterIp. Este IP será atribuído ao front-end do balanceador de carga principal. O IP tem de estar dentro do CIDR para a sub-rede principal e não está a ser utilizado. masterClusterDnsType tem de ser definido como "personalizado" e o nome DNS principal tem de ser fornecido para masterClusterDns. O nome DNS tem de mapear para o IP Privado estático e será utilizado para aceder à consola nos nós principais.

Se o router privado estiver selecionado (routerClusterType=private), é necessário especificar um IP privado estático para routerPrivateClusterIp. Este IP será atribuído ao front-end do balanceador de carga de infraestrutura. O IP tem de estar dentro do CIDR para a sub-rede de infraestrutura e não está a ser utilizado. routingSubDomainType tem de ser definido como "personalizado" e o nome DNS de caráter universal para encaminhamento tem de ser fornecido para routingSubDomain.

Se estiverem selecionados modelos globais privados e router privado, o nome de domínio personalizado também tem de ser introduzido para domainName

Após a implementação bem-sucedida, o Nó do Bastion é o único nó com um IP público no qual pode aceder. Mesmo que os nós principais estejam configurados para acesso público, não são expostos para acesso ssh.

Para implementar com o modelo Resource Manager, utilize um ficheiro de parâmetros para fornecer os parâmetros de entrada. Para personalizar ainda mais a implementação, crie um fork do repositório do GitHub e altere os itens adequados.

Algumas opções de personalização comuns incluem, mas não estão limitadas a:

  • Tamanho da VM do Bastion (variável em azuredeploy.json)
  • Convenções de nomenclatura (variáveis em azuredeploy.json)
  • Especificações do cluster OpenShift, modificadas através do ficheiro de anfitriões (deployOpenShift.sh)

Configurar o ficheiro de parâmetros

O modelo OpenShift Container Platform tem vários ramos disponíveis para diferentes versões do OpenShift Container Platform. Com base nas suas necessidades, pode implementar diretamente a partir do repositório ou pode criar um fork do repositório e fazer alterações personalizadas aos modelos ou scripts antes de implementar.

Utilize o appId valor do principal de serviço que criou anteriormente para o aadClientId parâmetro .

O exemplo seguinte mostra um ficheiro de parâmetros com o nome azuredeploy.parameters.json com todas as entradas necessárias.

{
	"$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"
		}
	}
}

Substitua os parâmetros pelas suas informações específicas.

Diferentes versões podem ter parâmetros diferentes, pelo que deve verificar os parâmetros necessários para o ramo que utiliza.

azuredeploy. Ficheiro Parameters.json explicado

Propriedade Descrição Opções Válidas Valor Predefinido
_artifactsLocation URL para artefactos (json, scripts, etc.) https://raw.githubusercontent.com/Microsoft/openshift-container-platform/master
location Região do Azure para implementar recursos no
masterVmSize Tamanho da VM Principal. Selecione um dos tamanhos de VM permitidos listados no ficheiro azuredeploy.json Standard_E2s_v3
infraVmSize Tamanho da VM de Infraestrutura. Selecione um dos tamanhos de VM permitidos listados no ficheiro azuredeploy.json Standard_D4s_v3
nodeVmSize Tamanho da VM do Nó da Aplicação. Selecione um dos tamanhos de VM permitidos listados no ficheiro azuredeploy.json Standard_D4s_v3
cnsVmSize Tamanho da VM do Nó de Armazenamento Nativo do Contentor (CNS). Selecione um dos tamanhos de VM permitidos listados no ficheiro azuredeploy.json Standard_E4s_v3
osImageType A imagem RHEL a utilizar. defaultgallery: a pedido; marketplace: imagem de terceiros defaultgallery
marketplace
defaultgallery
marketplaceOsImage Se osImageType for o marketplace, introduza os valores adequados para "publisher", "offer", "sku", "version" da oferta do marketplace. Este parâmetro é um tipo de objeto
storageKind O tipo de armazenamento a utilizar gerido
não gerido
gerido
openshiftClusterPrefix Prefixo de Cluster utilizado para configurar nomes de anfitrião para todos os nós. Entre 1 e 20 carateres mycluster
minoVersion A versão secundária do OpenShift Container Platform 3.11 a implementar 69
masterInstanceCount Número de nós de Modelos Globais a implementar 1, 3, 5 3
infraInstanceCount Número de nós de infraestrutura a implementar 1, 2, 3 3
nodeInstanceCount Número de Nós a implementar 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 Número de nós CNS a implementar 3, 4 3
osDiskSize Tamanho do disco do SO para a VM (em GB) 64, 128, 256, 512, 1024, 2048 64
dataDiskSize Tamanho do disco de dados a anexar aos nós para o volume do Docker (em GB) 32, 64, 128, 256, 512, 1024, 2048 64
cnsGlusterDiskSize Tamanho do disco de dados a anexar aos nós CNS para utilização por glusterfs (em GB) 32, 64, 128, 256, 512, 1024, 2048 128
adminUsername Administração nome de utilizador para o início de sessão do SO (VM) e o utilizador inicial do OpenShift ocpadmin
enableMetrics Ativar Métricas. As métricas requerem mais recursos, por isso, selecione o tamanho adequado para a VM infra true
false
false
enableLogging Ativar Registo. o pod de pesquisa elástica requer 8 GB de RAM, por isso, selecione o tamanho adequado para a VM infra true
false
false
enableCNS Ativar o Armazenamento Nativo do Contentor true
false
false
rhsmUsernameOrOrgId Nome de Utilizador ou ID da Organização do Gestor de Subscrições do Red Hat
rhsmPoolId O ID do Conjunto do Gestor de Subscrições do Red Hat que contém as suas elegibilidades do OpenShift para nós de computação
rhsmBrokerPoolId O ID do Conjunto do Gestor de Subscrições do Red Hat que contém as suas elegibilidades do OpenShift para nós globais e infravermelhos. Se não tiver IDs de conjunto diferentes, introduza o mesmo ID do conjunto que "rhsmPoolId"
sshPublicKey Copie a chave pública do SSH aqui
keyVaultSubscriptionId O ID da Subscrição da subscrição que contém o Key Vault
keyVaultResourceGroup O nome do Grupo de Recursos que contém o Key Vault
keyVaultName O nome da Key Vault que criou
enableAzure Ativar o Fornecedor de Cloud do Azure true
false
true
aadClientId ID de Cliente do Azure Active Directory também conhecido como ID da Aplicação para Principal de Serviço
domainName Nome do nome de domínio personalizado a utilizar (se aplicável). Definir como "nenhum" se não implementar um cluster totalmente privado nenhum
masterClusterDnsType Tipo de domínio para a consola Web OpenShift. A "predefinição" utilizará a etiqueta DNS do IP público de infra mestre. "personalizado" permite-lhe definir o seu próprio nome predefinição
personalizadas
predefinição
masterClusterDns O nome DNS personalizado a utilizar para aceder à consola Web OpenShift se tiver selecionado "personalizado" para masterClusterDnsType console.contoso.com
routingSubDomainType Se definido como nipio, routingSubDomain irá utilizar nip.io. Utilize "personalizado" se tiver o seu próprio domínio que pretende utilizar para o encaminhamento nipio
personalizadas
nipio
routingSubDomain O nome DNS de caráter universal que pretende utilizar para encaminhamento se tiver selecionado "personalizado" para routingSubDomainType apps.contoso.com
virtualNetworkNewOrExisting Selecione se pretende utilizar uma Rede Virtual existente ou criar um novo Rede Virtual existente
novo
novo
virtualNetworkResourceGroupName Nome do Grupo de Recursos do novo Rede Virtual se tiver selecionado "novo" paravirtualNetworkNewOrExisting resourceGroup().name
virtualNetworkName O nome do novo Rede Virtual a criar se tiver selecionado "novo" paravirtualNetworkNewOrExisting openshiftvnet
addressPrefixes Prefixo de endereço da nova rede virtual 10.0.0.0/14
masterSubnetName O nome da sub-rede principal mastersubnet
masterSubnetPrefix CIDR utilizado para a sub-rede principal – tem de ser um subconjunto do addressPrefix 10.1.0.0/16
infraSubnetName O nome da sub-rede de infra-rede infrasubnet
infraSubnetPrefix CIDR utilizado para a sub-rede infra - tem de ser um subconjunto do addressPrefix 10.2.0.0/16
nodeSubnetName O nome da sub-rede do nó nodesubnet
nodeSubnetPrefix CIDR utilizado para a sub-rede do nó – tem de ser um subconjunto do addressPrefix 10.3.0.0/16
existingMasterSubnetReference Referência completa à sub-rede existente para nós principais. Não é necessário se criar uma nova vNet/Sub-rede
existingInfraSubnetReference Referência completa à sub-rede existente para nós de infra. Não é necessário se criar uma nova vNet/Sub-rede
existingCnsSubnetReference Referência completa à sub-rede existente para nós CNS. Não é necessário se criar uma nova vNet/Sub-rede
existingNodeSubnetReference Referência completa à sub-rede existente para nós de computação. Não é necessário se criar uma nova vNet/Sub-rede
masterClusterType Especifique se o cluster utiliza nós principais privados ou públicos. Se for escolhido privado, os nós principais não serão expostos à Internet através de um IP público. Em vez disso, utilizará o IP privado especificado no masterPrivateClusterIp public
private
public
masterPrivateClusterIp Se estiverem selecionados nós principais privados, tem de especificar um endereço IP privado para utilização pelo balanceador de carga interno para nós principais. Este IP estático tem de estar no bloco CIDR da sub-rede principal e ainda não está a ser utilizado. Se os nós principais públicos estiverem selecionados, este valor não será utilizado, mas ainda tem de ser especificado 10.1.0.200
routerClusterType Especifique se o cluster utiliza nós de infra privados ou públicos. Se for escolhido privado, os nós de infra não serão expostos à Internet através de um IP público. Em vez disso, utilizará o IP privado especificado no routerPrivateClusterIp public
private
public
routerPrivateClusterIp Se estiverem selecionados nós de infra privados, tem de especificar um endereço IP privado para utilização pelo balanceador de carga interno para nós de infra. Este IP estático tem de estar no bloco CIDR da sub-rede de infra-rede e ainda não está a ser utilizado. Se os nós de infra públicos estiverem selecionados, este valor não será utilizado, mas ainda tem de ser especificado 10.2.0.200
routingCertType Utilizar um certificado personalizado para o domínio de encaminhamento ou o certificado autoassinado predefinido - siga as instruções na secção Certificados Personalizados autoassinado
personalizadas
autoassinado
masterCertType Utilize o certificado personalizado para o domínio principal ou o certificado autoassinado predefinido - siga as instruções na secção Certificados Personalizados autoassinado
personalizadas
autoassinado

Implementar com a CLI do Azure

Nota

O seguinte comando requer a CLI 2.0.8 do Azure ou posterior. Pode verificar a versão da CLI com o az --version comando . Para atualizar a versão da CLI, veja Instalar a CLI do Azure.

O exemplo seguinte implementa o cluster do OpenShift e todos os recursos relacionados num grupo de recursos com o nome openshiftrg, com um nome de implementação de myOpenShiftCluster. O modelo é referenciado diretamente a partir do repositório do GitHub e é utilizado um ficheiro de parâmetros local com o nome 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

A implementação demora, pelo menos, 60 minutos a ser concluída, com base no número total de nós implementados e nas opções configuradas. O FQDN do DNS do Bastion e o URL da consola do OpenShift são impressos no terminal quando a implementação terminar.

{
  "Bastion DNS FQDN": "bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com",
  "OpenShift Console URL": "http://openshiftlb.eastus.cloudapp.azure.com/console"
}

Se não quiser ligar a linha de comandos à espera que a implementação seja concluída, adicione --no-wait como uma das opções para a implementação do grupo. O resultado da implementação pode ser obtido a partir do portal do Azure na secção de implementação do grupo de recursos.

Ligar ao cluster do OpenShift

Quando a implementação terminar, obtenha a ligação a partir da secção de saída da implementação. Ligue-se à consola do OpenShift com o seu browser através do URL da Consola do OpenShift. Também pode utilizar o SSH para o anfitrião do Bastion. Segue-se um exemplo em que o nome de utilizador administrador é clusteradmin e o FQDN do DNS do IP público bastion é bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com:

$ ssh clusteradmin@bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com

Limpar os recursos

Utilize o comando az group delete para remover o grupo de recursos, o cluster OpenShift e todos os recursos relacionados quando já não forem necessários.

az group delete --name openshiftrg

Passos seguintes