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
- Attività di post-distribuzione
- Risoluzione dei problemi relativi alla distribuzione di OpenShift in Azure
- Getting started with OpenShift Container Platform (Introduzione a OpenShift Container Platform)