Distribuire OpenShift Container Platform 3.11 in Azure

Si applica a: ✔️ set di scalabilità flessibili di macchine virtuali ✔️ Linux

È possibile usare uno dei diversi metodi per distribuire OpenShift Container Platform 3.11 in Azure:

  • È possibile distribuire manualmente i componenti dell'infrastruttura di Azure necessari e quindi seguire la documentazione di OpenShift Container Platform.
  • È anche possibile usare un modello di Resource Manager esistente che semplifica la distribuzione del cluster OpenShift Container Platform.
  • Un'altra opzione consiste nell'usare l'offerta di Azure Marketplace.

Per tutte le opzioni è necessaria una sottoscrizione di Red Hat. Durante la distribuzione, l'istanza Red Hat Enterprise Linux viene registrata nella sottoscrizione di Red Hat e allegata all'ID del pool che contiene i diritti per OpenShift Container Platform. Verificare di avere un nome utente, una password e un ID pool validi per Red Hat Subscription Manager (RHSM). È possibile usare una chiave di attivazione, l'ID organizzazione e l'ID pool. Per verificare le informazioni, eseguire l'accesso a https://access.redhat.com.

Distribuire usando il modello OpenShift Container Platform Resource Manager modello 3.11

Cluster privati

La distribuzione di cluster OpenShift privati richiede più di non avere un INDIRIZZO IP pubblico associato al servizio di bilanciamento del carico master (console Web) o al servizio di bilanciamento del carico infra (router). Un cluster privato usa in genere un server DNS personalizzato (non il DNS di Azure predefinito), un nome di dominio personalizzato (ad esempio contoso.com) e reti virtuali predefinite. Per i cluster privati, è necessario configurare la rete virtuale con tutte le subnet appropriate e le impostazioni del server DNS in anticipo. Usare quindi esistenteMasterSubnetReference, esistenteInfraSubnetReference, esistenteCnsSubnetReference e esistenteNodeSubnetReference per specificare la subnet esistente da usare dal cluster.

Se il master privato è selezionato (masterClusterType=private), è necessario specificare un INDIRIZZO IP privato statico per masterPrivateClusterIp. Questo INDIRIZZO IP verrà assegnato al front-end del servizio di bilanciamento del carico master. L'INDIRIZZO IP deve trovarsi all'interno del CIDR per la subnet master e non in uso. masterClusterDnsType deve essere impostato su "personalizzato" e il nome DNS master deve essere fornito per masterClusterDns. Il nome DNS deve eseguire il mapping all'IP privato statico e verrà usato per accedere alla console nei nodi master.

Se il router privato è selezionato (routerClusterType=privato), è necessario specificare un indirizzo IP privato statico per routerPrivateClusterIp. Questo INDIRIZZO IP verrà assegnato al front-end del servizio di bilanciamento del carico infra. L'INDIRIZZO IP deve trovarsi all'interno del CIDR per la subnet infra e non in uso. routingSubDomainType deve essere impostato su "personalizzato" e il nome DNS con caratteri jolly per il routing deve essere fornito per routingSubDomain.

Se vengono selezionati master privati e router privati, è necessario immettere anche il nome di dominio personalizzato per domainName

Dopo aver completato la distribuzione, il nodo Bastion è l'unico nodo con un indirizzo IP pubblico in cui è possibile accedere. Anche se i nodi master sono configurati per l'accesso pubblico, non sono esposti per l'accesso ssh.

Per distribuire usando il modello di Resource Manager, viene usato un file di parametri per specificare tutti i parametri di input. Per personalizzare ulteriormente la distribuzione, creare una copia tramite fork dell'archivio GitHub e modificare gli elementi appropriati.

Tra le opzioni di personalizzazione comuni sono incluse, ad esempio:

  • Dimensioni macchina virtuale bastion (variabile in azuredeploy.json)
  • Convenzioni di denominazione (variabile in azuredeploy.json)
  • Specifiche del cluster OpenShift - modificate usando il file hosts (deployOpenShift.sh)

Configurare il file dei parametri

Il modello OpenShift Container Platform dispone di più rami disponibili per diverse versioni di OpenShift Container Platform. In base alle esigenze, è possibile distribuire direttamente dal repository oppure è possibile dividere il repository e apportare modifiche personalizzate ai modelli o agli script prima della distribuzione.

Usare il valore appId dall'entità servizio creata in precedenza per il parametro aadClientId.

L'esempio seguente mostra un file di parametri denominato azuredeploy.parameters.json con tutti gli input necessari.

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

Sostituire i parametri con le informazioni specifiche.

Versioni diverse possono avere parametri diversi, pertanto occorre verificare i parametri necessari per il ramo utilizzato.

azuredeploy. File Parameters.json illustrato

Proprietà Descrizione Opzioni valide Valore predefinito
_artifactsLocation URL per gli artefatti (json, script e così via) https://raw.githubusercontent.com/Microsoft/openshift-container-platform/master
location Area di Azure per distribuire le risorse in
masterVmSize Dimensioni della macchina virtuale master. Selezionare da una delle dimensioni della macchina virtuale consentite elencate nel file azuredeploy.json Standard_E2s_v3
infraVmSize Dimensioni della macchina virtuale Infra. Selezionare da una delle dimensioni della macchina virtuale consentite elencate nel file azuredeploy.json Standard_D4s_v3
nodeVmSize Dimensioni della macchina virtuale nodo app. Selezionare da una delle dimensioni della macchina virtuale consentite elencate nel file azuredeploy.json Standard_D4s_v3
cnsVmSize Dimensioni della macchina virtuale del nodo Container Native Storage (CNS). Selezionare da una delle dimensioni della macchina virtuale consentite elencate nel file azuredeploy.json Standard_E4s_v3
osImageType Immagine RHEL da usare. defaultgallery: On Demand; marketplace: immagine di terze parti defaultgallery
marketplace
defaultgallery
marketplaceOsImage Se osImageType è marketplace, immettere i valori appropriati per 'publisher', 'offer', 'sku', 'version' dell'offerta marketplace. Questo parametro è un tipo di oggetto
storageKind Tipo di archiviazione da usare gestito
unmanaged
gestito
openshiftClusterPrefix Prefisso del cluster usato per configurare i nomi host per tutti i nodi. Tra 1 e 20 caratteri mycluster
minoVersion Versione secondaria di OpenShift Container Platform 3.11 da distribuire 69
masterInstanceCount Numero di nodi Master da distribuire 1, 3, 5 3
infraInstanceCount Numero di nodi infra da distribuire 1, 2, 3 3
nodeInstanceCount Numero di nodi da distribuire 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 Numero di nodi CNS da distribuire 3, 4 3
osDiskSize Dimensioni del disco del sistema operativo per la macchina virtuale (in GB) 64, 128, 256, 512, 1024, 2048 64
dataDiskSize Dimensioni del disco dati da collegare ai nodi per il volume Docker (in GB) 32, 64, 128, 256, 512, 1024, 2048 64
cnsGlusterDiskSize Dimensioni del disco dati da collegare ai nodi CNS per l'uso da parte di glusterfs (in GB) 32, 64, 128, 256, 512, 1024, 2048 128
adminUsername Amministrazione nome utente sia per l'account di accesso del sistema operativo (VM) sia per l'utente OpenShift iniziale ocpadmin
enableMetrics Abilitare le metriche. Le metriche richiedono più risorse, quindi selezionare le dimensioni appropriate per Infra VM true
false
false
enableLogging Abilitare la registrazione. il pod elasticsearch richiede 8 GB di RAM, quindi selezionare le dimensioni appropriate per Infra VM true
false
false
enableCNS Abilitare l'archiviazione nativa del contenitore true
false
false
rhsmUsernameOrOrgId Nome utente o ID organizzazione di Red Hat Subscription Manager
rhsmPoolId ID del pool di Red Hat Subscription Manager che contiene i diritti OpenShift per i nodi di calcolo
rhsmBrokerPoolId ID pool di Red Hat Subscription Manager che contiene i diritti OpenShift per i master e i nodi infra. Se non si hanno ID pool diversi, immettere lo stesso ID pool di 'rhsmPoolId'
sshPublicKey Copiare la chiave pubblica SSH qui
keyVaultSubscriptionId ID sottoscrizione della sottoscrizione che contiene il Key Vault
keyVaultResourceGroup Nome del gruppo di risorse che contiene il Key Vault
keyVaultName Nome del Key Vault creato
enableAzure Abilitare Azure Cloud Provider true
false
true
aadClientId ID client di Azure Active Directory noto anche come ID applicazione per l'entità servizio
domainName Nome del nome di dominio personalizzato da usare (se applicabile). Impostare su "none" se non si distribuisce un cluster completamente privato Nessuno
masterClusterDnsType Tipo di dominio per la console Web OpenShift. 'default' userà l'etichetta DNS dell'indirizzo IP pubblico dell'infrastruttura master. 'custom' consente di definire il proprio nome default
custom
default
masterClusterDns Nome DNS personalizzato da usare per accedere alla console Web OpenShift se è stato selezionato "personalizzato" per masterClusterDnsType console.contoso.com
routingSubDomainType Se impostato su nipio, routingSubDomain userà nip.io. Usare 'custom' se si ha il proprio dominio che si vuole usare per il routing nipio
custom
nipio
routingSubDomain Nome DNS con caratteri jolly da usare per il routing se è stato selezionato "personalizzato" per routingSubDomainType apps.contoso.com
virtualNetworkNewOrExisting Scegliere se usare un Rete virtuale esistente o creare un nuovo Rete virtuale esistenti
Nuovo
Nuovo
virtualNetworkResourceGroupName Nome del gruppo di risorse per il nuovo Rete virtuale se è stato selezionato "nuovo" pervirtualNetworkNewOrExisting resourceGroup().name
virtualNetworkName Nome del nuovo Rete virtuale da creare se è stato selezionato 'new' pervirtualNetworkNewOrExisting openshiftvnet
addressPrefixes Prefisso dell'indirizzo della nuova rete virtuale 10.0.0.0/14
masterSubnetName Nome della subnet master mastersubnet
masterSubnetPrefix CIDR usato per la subnet master: deve essere un subset del prefisso addressPrefix 10.1.0.0/16
infraSubnetName Nome della subnet infra infrasubnet
infraSubnetPrefix CIDR usato per la subnet infra: deve essere un subset dell'addressPrefix 10.2.0.0/16
nodeSubnetName Nome della subnet del nodo nodesubnet
nodeSubnetPrefix CIDR usato per la subnet del nodo: deve essere un subset dell'addressPrefix 10.3.0.0/16
existingMasterSubnetReference Riferimento completo alla subnet esistente per i nodi master. Non necessario se si crea una nuova rete virtuale/subnet
existingInfraSubnetReference Riferimento completo alla subnet esistente per i nodi infra. Non necessario se si crea una nuova rete virtuale/subnet
existingCnsSubnetReference Riferimento completo alla subnet esistente per i nodi CNS. Non necessario se si crea una nuova rete virtuale/subnet
existingNodeSubnetReference Riferimento completo alla subnet esistente per i nodi di calcolo. Non necessario se si crea una nuova rete virtuale/subnet
masterClusterType Specificare se il cluster usa nodi master privati o pubblici. Se si seleziona private, i nodi master non verranno esposti a Internet tramite un indirizzo IP pubblico. Userà invece l'indirizzo IP privato specificato in masterPrivateClusterIp public
private
public
masterPrivateClusterIp Se sono selezionati nodi master privati, è necessario specificare un indirizzo IP privato per l'uso da parte del servizio di bilanciamento del carico interno per i nodi master. Questo indirizzo IP statico deve trovarsi all'interno del blocco CIDR per la subnet master e non già in uso. Se sono selezionati nodi master pubblici, questo valore non verrà usato ma deve comunque essere specificato 10.1.0.200
routerClusterType Specificare se il cluster usa nodi infra privati o pubblici. Se si seleziona private, i nodi infra non verranno esposti a Internet tramite un indirizzo IP pubblico. Userà invece l'indirizzo IP privato specificato in routerPrivateClusterIp public
private
public
routerPrivateClusterIp Se sono selezionati nodi infra privati, è necessario specificare un indirizzo IP privato per l'uso da parte del servizio di bilanciamento del carico interno per i nodi infra. Questo indirizzo IP statico deve trovarsi all'interno del blocco CIDR per la subnet infra e non già in uso. Se sono selezionati nodi infra pubblici, questo valore non verrà usato ma deve comunque essere specificato 10.2.0.200
routingCertType Usare un certificato personalizzato per il dominio di routing o il certificato autofirmato predefinito. Seguire le istruzioni nella sezione Certificati personalizzati autofirmato
custom
autofirmato
masterCertType Usare un certificato personalizzato per il dominio master o il certificato autofirmato predefinito: seguire le istruzioni nella sezione Certificati personalizzati autosigned
custom
autosigned

Eseguire la distribuzione usando l'interfaccia della riga di comando di Azure

Nota

Il comando seguente richiede l'interfaccia della riga di comando di Azure 2.0.8 o versione successiva. È possibile verificare la versione dell'interfaccia della riga di comando di Azure con il comando az --version. Per aggiornare la versione della CLI, vedere Installare l'interfaccia della riga di comando di Azure.

L'esempio seguente consente di distribuire il cluster OpenShift e tutte le risorse correlate in un gruppo di risorse denominato openshiftrg, con nome di distribuzione myOpenShiftCluster. Viene fatto riferimento al modello direttamente dal repository GitHub e viene usato un file di parametri locale denominato 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

La distribuzione richiede almeno 60 minuti per completare, in base al numero totale di nodi distribuiti e opzioni configurate. Al termine della distribuzione, il nome di dominio completo del DNS Bastion e l'URL della console di OpenShift vengono visualizzati sul terminale.

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

Se non si vuole bloccare la riga di comando in attesa del completamento della distribuzione, aggiungere --no-wait come una delle opzioni per la distribuzione del gruppo. L'output dalla distribuzione può essere recuperato dal portale di Azure nella sezione distribuzione del gruppo di risorse.

Eseguire la connessione al cluster OpenShift

Al termine della distribuzione, recuperare la connessione dalla sezione di output della distribuzione. Connettersi alla console OpenShift con il browser usando l'URL della console OpenShift. È anche possibile accedere SSH all'host Bastion. Di seguito è riportato un esempio in cui il nome utente amministratore è clusteradmin e il nome di dominio completo DNS dell'indirizzo IP pubblico bastion è bastiondns4hawllzaavu6g.eastus.cloudapp.azure.com:

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

Pulire le risorse

Quando non servono più, è possibile rimuovere il gruppo di risorse, il cluster OpenShift e tutte le risorse correlate tramite il comando az group delete.

az group delete --name openshiftrg

Passaggi successivi