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:
- Pode implementar manualmente os componentes de infraestrutura do Azure necessários e, em seguida, seguir a documentação do OpenShift Container Platform.
- Também pode utilizar um modelo de Resource Manager existente que simplifica a implementação do cluster openShift Container Platform.
- Outra opção é utilizar a oferta de Azure Marketplace.
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