Schnellstart: Bereitstellen eines Azure Red Hat OpenShift-Clusters mithilfe einer Azure Resource Manager-Vorlage oder einer Bicep-Datei
In diesem Artikel wird beschrieben, wie Sie entweder eine Azure Resource Manager-Vorlage (ARM-Vorlage) oder eine Bicep-Datei verwenden, um einen Azure Red Hat OpenShift-Cluster zu erstellen. Sie können den Azure Red Hat OpenShift-Cluster entweder mit PowerShell oder der Azure-Befehlszeilenschnittstelle (Command-Line Interface, AZURE CLI) bereitstellen.
Eine Azure Resource Manager-Vorlage ist eine JSON (JavaScript Object Notation)-Datei, welche die Infrastruktur und die Konfiguration für Ihr Projekt definiert. Die Vorlage verwendet eine deklarative Syntax. Sie beschreiben Ihre geplante Bereitstellung, ohne die Abfolge der Programmierbefehle zu schreiben, mit denen die Bereitstellung erstellt wird.
Bicep ist eine domänenspezifische Sprache (DSL), die deklarative Syntax zum Bereitstellen von Azure-Ressourcen verwendet. In einer Bicep-Datei definieren Sie die Infrastruktur, die Sie in Azure bereitstellen möchten, und verwenden diese Datei dann während des gesamten Entwicklungslebenszyklus, um Ihre Infrastruktur wiederholt zu implementieren. Ihre Ressourcen werden auf einheitliche Weise bereitgestellt.
Hinweis
Informationen zum Bereitstellen von Azure Red Hat OpenShift-Clustern mit Terraform finden Sie unter Microsoft.RedHatOpenShift openShiftClusters Terraform.
Voraussetzungen
Ein Azure-Konto mit einem aktiven Abonnement ist erforderlich. Falls Sie noch über keins verfügen, können Sie ein kostenloses Konto erstellen.
Möglichkeit zum Zuweisen der Rollen „Benutzerzugriffsadministrator“ und „Mitwirkender“. Wenn Sie diese Möglichkeit nicht besitzen, wenden Sie sich an Ihren Microsoft Entra-Administrator, um Rollen zu verwalten.
Ein Red Hat-Konto. Wenn Sie noch kein Konto haben, müssen Sie sich für ein Konto registrieren.
Ein Pull-Geheimnis für Ihren Azure Red Hat OpenShift-Cluster. Laden Sie die Pull-Geheimnisdatei von der Red Hat OpenShift Cluster Manager-Website herunter.
Wenn Sie den Azure PowerShell-Code lokal ausführen möchten, verwenden Sie Azure PowerShell.
Wenn Sie den Azure CLI-Code lokal ausführen möchten:
- Eine Bash-Shell (z.B. Git Bash, in Git für Windows enthalten).
- Azure-Befehlszeilenschnittstelle.
Erstellen einer ARM-Vorlage oder Bicep-Datei
Wählen Sie entweder eine Azure Resource Manager-Vorlage (ARM-Vorlage) oder eine Azure Bicep-Datei aus. Nun können Sie die Vorlage entweder über die Azure-Befehlszeile (azure-cli) oder über PowerShell bereitstellen.
Erstellen einer ARM-Vorlage
Das folgende Beispiel zeigt, wie Ihre ARM-Vorlage aussehen sollte, wenn sie für Ihren Azure RedHat OpenShift-Cluster konfiguriert ist.
Die Vorlage definiert drei Azure-Ressourcen:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Weitere Beispiele für Azure Red Hat OpenShift-Vorlagen finden Sie auf der Red Hat OpenShift-Website.
Speichern Sie das folgende Beispiel als azuredeploy.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location" : {
"type": "string",
"defaultValue": "eastus",
"metadata": {
"description": "Location"
}
},
"domain": {
"type": "string",
"defaultValue": "",
"metadata": {
"description": "Domain Prefix"
}
},
"pullSecret": {
"type": "string",
"metadata": {
"description": "Pull secret from cloud.redhat.com. The json should be input as a string"
}
},
"clusterVnetName": {
"type": "string",
"defaultValue": "aro-vnet",
"metadata": {
"description": "Name of ARO vNet"
}
},
"clusterVnetCidr": {
"type": "string",
"defaultValue": "10.100.0.0/15",
"metadata": {
"description": "ARO vNet Address Space"
}
},
"workerSubnetCidr": {
"type": "string",
"defaultValue": "10.100.70.0/23",
"metadata": {
"description": "Worker node subnet address space"
}
},
"masterSubnetCidr": {
"type": "string",
"defaultValue": "10.100.76.0/24",
"metadata": {
"description": "Master node subnet address space"
}
},
"masterVmSize" : {
"type": "string",
"defaultValue": "Standard_D8s_v3",
"metadata": {
"description": "Master Node VM Type"
}
},
"workerVmSize": {
"type": "string",
"defaultValue": "Standard_D4s_v3",
"metadata": {
"description": "Worker Node VM Type"
}
},
"workerVmDiskSize": {
"type" : "int",
"defaultValue": 128,
"minValue": 128,
"metadata": {
"description": "Worker Node Disk Size in GB"
}
},
"workerCount": {
"type": "int",
"defaultValue": 3,
"minValue": 3,
"metadata": {
"description": "Number of Worker Nodes"
}
},
"podCidr": {
"type": "string",
"defaultValue": "10.128.0.0/14",
"metadata": {
"description": "Cidr for Pods"
}
},
"serviceCidr": {
"type": "string",
"defaultValue": "172.30.0.0/16",
"metadata": {
"description": "Cidr of service"
}
},
"clusterName" : {
"type": "string",
"metadata": {
"description": "Unique name for the cluster"
}
},
"tags": {
"type": "object",
"defaultValue" : {
"env": "Dev",
"dept": "Ops"
},
"metadata": {
"description": "Tags for resources"
}
},
"apiServerVisibility": {
"type": "string",
"allowedValues": [
"Private",
"Public"
],
"defaultValue": "Public",
"metadata": {
"description": "Api Server Visibility"
}
},
"ingressVisibility": {
"type": "string",
"allowedValues": [
"Private",
"Public"
],
"defaultValue": "Public",
"metadata": {
"description": "Ingress Visibility"
}
},
"aadClientId" : {
"type": "string",
"metadata": {
"description": "The Application ID of an Azure Active Directory client application"
}
},
"aadObjectId": {
"type": "string",
"metadata": {
"description": "The Object ID of an Azure Active Directory client application"
}
},
"aadClientSecret" : {
"type":"securestring",
"metadata": {
"description": "The secret of an Azure Active Directory client application"
}
},
"rpObjectId": {
"type": "String",
"metadata": {
"description": "The ObjectID of the Resource Provider Service Principal"
}
}
},
"variables": {
"contribRole": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]"
},
"resources": [
{
"type": "Microsoft.Network/virtualNetworks",
"apiVersion": "2020-05-01",
"name": "[parameters('clusterVnetName')]",
"location": "[parameters('location')]",
"tags": "[parameters('tags')]",
"properties": {
"addressSpace": {
"addressPrefixes": [
"[parameters('clusterVnetCidr')]"
]
},
"subnets": [
{
"name": "master",
"properties": {
"addressPrefix": "[parameters('masterSubnetCidr')]",
"serviceEndpoints": [
{
"service": "Microsoft.ContainerRegistry"
}
],
"privateLinkServiceNetworkPolicies": "Disabled"
}
},
{
"name": "worker",
"properties": {
"addressPrefix": "[parameters('workerSubnetCidr')]",
"serviceEndpoints": [
{
"service": "Microsoft.ContainerRegistry"
}
]
}
}]
}
},
{
"type": "Microsoft.Network/virtualNetworks/providers/roleAssignments",
"apiVersion": "2018-09-01-preview",
"name": "[concat(parameters('clusterVnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name, parameters('aadObjectId')))]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('clusterVnetName'))]"
],
"properties": {
"roleDefinitionId": "[variables('contribRole')]",
"principalId":"[parameters('aadObjectId')]"
}
},
{
"type": "Microsoft.Network/virtualNetworks/providers/roleAssignments",
"apiVersion": "2018-09-01-preview",
"name": "[concat(parameters('clusterVnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name, parameters('rpObjectId')))]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('clusterVnetName'))]"
],
"properties": {
"roleDefinitionId": "[variables('contribRole')]",
"principalId":"[parameters('rpObjectId')]"
}
},
{
"type": "Microsoft.RedHatOpenShift/OpenShiftClusters",
"apiVersion": "2020-04-30",
"name": "[parameters('clusterName')]",
"location": "[parameters('location')]",
"tags": "[parameters('tags')]",
"dependsOn": [
"[resourceId('Microsoft.Network/virtualNetworks', parameters('clusterVnetName'))]"
],
"properties": {
"clusterProfile": {
"domain": "[parameters('domain')]",
"resourceGroupId": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/aro-', parameters('domain'))]",
"pullSecret": "[parameters('pullSecret')]"
},
"networkProfile": {
"podCidr": "[parameters('podCidr')]",
"serviceCidr": "[parameters('serviceCidr')]"
},
"servicePrincipalProfile": {
"clientId": "[parameters('aadClientId')]",
"clientSecret": "[parameters('aadClientSecret')]"
},
"masterProfile": {
"vmSize": "[parameters('masterVmSize')]",
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('clusterVnetName'), 'master')]"
},
"workerProfiles": [
{
"name": "worker",
"vmSize": "[parameters('workerVmSize')]",
"diskSizeGB": "[parameters('workerVmDiskSize')]",
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('clusterVnetName'), 'worker')]",
"count": "[parameters('workerCount')]"
}
],
"apiserverProfile": {
"visibility": "[parameters('apiServerVisibility')]"
},
"ingressProfiles": [
{
"name": "default",
"visibility": "[parameters('ingressVisibility')]"
}
]
}
}
],
"outputs": {
"clusterCredentials": {
"type": "object",
"value": "[listCredentials(resourceId('Microsoft.RedHatOpenShift/OpenShiftClusters', parameters('clusterName')), '2020-04-30')]"
},
"oauthCallbackURL": {
"type": "string",
"value": "[concat('https://oauth-openshift.apps.', parameters('domain'), '.', parameters('location'), '.aroapp.io/oauth2callback/AAD')]"
}
}
}
Erstellen einer Bicep-Datei
Das folgende Beispiel zeigt, wie Ihre Azure Bicep-Datei aussehen sollte, wenn sie für Ihren Azure RedHat OpenShift-Cluster konfiguriert ist.
Die Bicep-Datei definiert drei Azure-Ressourcen:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Weitere Azure Red Hat OpenShift-Vorlagen finden Sie auf der Red Hat OpenShift-Website.
Erstellen Sie die folgende Bicep-Datei, die die Definition für den Azure Red Hat OpenShift-Cluster enthält. Das folgende Beispiel zeigt, wie Ihre konfigurierte Bicep-Datei aussehen sollte.
Speichern Sie die folgende Datei als azuredeploy.bicep:
@description('Location')
param location string = 'eastus'
@description('Domain Prefix')
param domain string = ''
@description('Pull secret from cloud.redhat.com. The json should be input as a string')
param pullSecret string
@description('Name of ARO vNet')
param clusterVnetName string = 'aro-vnet'
@description('ARO vNet Address Space')
param clusterVnetCidr string = '10.100.0.0/15'
@description('Worker node subnet address space')
param workerSubnetCidr string = '10.100.70.0/23'
@description('Master node subnet address space')
param masterSubnetCidr string = '10.100.76.0/24'
@description('Master Node VM Type')
param masterVmSize string = 'Standard_D8s_v3'
@description('Worker Node VM Type')
param workerVmSize string = 'Standard_D4s_v3'
@description('Worker Node Disk Size in GB')
@minValue(128)
param workerVmDiskSize int = 128
@description('Number of Worker Nodes')
@minValue(3)
param workerCount int = 3
@description('Cidr for Pods')
param podCidr string = '10.128.0.0/14'
@metadata({
description: 'Cidr of service'
})
param serviceCidr string = '172.30.0.0/16'
@description('Unique name for the cluster')
param clusterName string
@description('Tags for resources')
param tags object = {
env: 'Dev'
dept: 'Ops'
}
@description('Api Server Visibility')
@allowed([
'Private'
'Public'
])
param apiServerVisibility string = 'Public'
@description('Ingress Visibility')
@allowed([
'Private'
'Public'
])
param ingressVisibility string = 'Public'
@description('The Application ID of an Azure Active Directory client application')
param aadClientId string
@description('The Object ID of an Azure Active Directory client application')
param aadObjectId string
@description('The secret of an Azure Active Directory client application')
@secure()
param aadClientSecret string
@description('The ObjectID of the Resource Provider Service Principal')
param rpObjectId string
@description('Specify if FIPS validated crypto modules are used')
@allowed([
'Enabled'
'Disabled'
])
param fips string = 'Disabled'
@description('Specify if master VMs are encrypted at host')
@allowed([
'Enabled'
'Disabled'
])
param masterEncryptionAtHost string = 'Disabled'
@description('Specify if worker VMs are encrypted at host')
@allowed([
'Enabled'
'Disabled'
])
param workerEncryptionAtHost string = 'Disabled'
var contributorRoleDefinitionId = resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
var resourceGroupId = '/subscriptions/${subscription().subscriptionId}/resourceGroups/aro-${domain}-${location}'
var masterSubnetId=resourceId('Microsoft.Network/virtualNetworks/subnets', clusterVnetName, 'master')
var workerSubnetId=resourceId('Microsoft.Network/virtualNetworks/subnets', clusterVnetName, 'worker')
resource clusterVnetName_resource 'Microsoft.Network/virtualNetworks@2020-05-01' = {
name: clusterVnetName
location: location
tags: tags
properties: {
addressSpace: {
addressPrefixes: [
clusterVnetCidr
]
}
subnets: [
{
name: 'master'
properties: {
addressPrefix: masterSubnetCidr
serviceEndpoints: [
{
service: 'Microsoft.ContainerRegistry'
}
]
privateLinkServiceNetworkPolicies: 'Disabled'
}
}
{
name: 'worker'
properties: {
addressPrefix: workerSubnetCidr
serviceEndpoints: [
{
service: 'Microsoft.ContainerRegistry'
}
]
}
}
]
}
}
resource clusterVnetName_Microsoft_Authorization_id_name_aadObjectId 'Microsoft.Authorization/roleAssignments@2020-10-01-preview' = {
name: guid(aadObjectId, clusterVnetName_resource.id, contributorRoleDefinitionId)
scope: clusterVnetName_resource
properties: {
roleDefinitionId: contributorRoleDefinitionId
principalId: aadObjectId
principalType: 'ServicePrincipal'
}
}
resource clusterVnetName_Microsoft_Authorization_id_name_rpObjectId 'Microsoft.Authorization/roleAssignments@2020-10-01-preview' = {
name: guid(rpObjectId, clusterVnetName_resource.id, contributorRoleDefinitionId)
scope: clusterVnetName_resource
properties: {
roleDefinitionId: contributorRoleDefinitionId
principalId: rpObjectId
principalType: 'ServicePrincipal'
}
}
resource clusterName_resource 'Microsoft.RedHatOpenShift/OpenShiftClusters@2023-04-01' = {
name: clusterName
location: location
tags: tags
properties: {
clusterProfile: {
domain: domain
resourceGroupId: resourceGroupId
pullSecret: pullSecret
fipsValidatedModules: fips
}
networkProfile: {
podCidr: podCidr
serviceCidr: serviceCidr
}
servicePrincipalProfile: {
clientId: aadClientId
clientSecret: aadClientSecret
}
masterProfile: {
vmSize: masterVmSize
subnetId: masterSubnetId
encryptionAtHost: masterEncryptionAtHost
}
workerProfiles: [
{
name: 'worker'
vmSize: workerVmSize
diskSizeGB: workerVmDiskSize
subnetId: workerSubnetId
count: workerCount
encryptionAtHost: workerEncryptionAtHost
}
]
apiserverProfile: {
visibility: apiServerVisibility
}
ingressProfiles: [
{
name: 'default'
visibility: ingressVisibility
}
]
}
dependsOn: [
clusterVnetName_resource
]
}
Bereitstellen der Vorlage „azuredeploy.json“
Die Vorlage „azuredeploy.json“ wird zum Bereitstellen eines Azure Red Hat OpenShift-Clusters verwendet. Folgende Parameter sind erforderlich:
Hinweis
Geben Sie für den Parameter domain
das Domänenpräfix an, das für OpenShift-Konsolen- und API-Server als Teil des automatisch generierten DNS-Namens verwendet wird. Dieses Präfix wird auch als Teil des Namens der Ressourcengruppe verwendet, die zum Hosten der Cluster-VMs erstellt wird.
Eigenschaft | BESCHREIBUNG | Gültige Optionen | Standardwert |
---|---|---|---|
domain |
Das Domänenpräfix für den Cluster. | Keine | |
pullSecret |
Das Pull-Geheimnis, das Sie von der Red Hat OpenShift Cluster Manager-Website erhalten haben. | ||
clusterName |
Der Name des Clusters. | ||
aadClientId |
Die Anwendungs-ID (eine GUID) einer Microsoft Entra-Clientanwendung. | ||
aadObjectId |
Die Objekt-ID (eine GUID) des Dienstprinzipals für die Microsoft Entra-Clientanwendung. | ||
aadClientSecret |
Das Clientgeheimnis des Dienstprinzipals für die Microsoft Entra-Clientanwendung als sichere Zeichenfolge. | ||
rpObjectId |
Die Objekt-ID (eine GUID) des Ressourcenanbieter-Dienstprinzipals. |
Die folgenden Vorlagenparameter besitzen Standardwerte. Sie können angegeben werden, sind aber nicht explizit erforderlich.
Eigenschaft | BESCHREIBUNG | Gültige Optionen | Standardwert |
---|---|---|---|
location |
Der Speicherort des neuen ARO-Clusters. Der Standort kann mit dem Standort der Ressourcengruppe identisch sein oder sich davon unterscheiden. | eastus | |
clusterVnetName |
Der Name des virtuellen Netzwerks für den ARO-Cluster. | aro-vnet | |
clusterVnetCidr |
Der Adressraum des virtuellen ARO-Netzwerks in CIDR-Notation (Classless Inter-Domain Routing, klassenloses domänenübergreifendes Routing). | 10.100.0.0/15 | |
workerSubnetCidr |
Der Adressraum des Workerknotensubnetzes in CIDR-Notation. | 10.100.70.0/23 | |
masterSubnetCidr |
Der Adressraum des Knotensubnetzes der Steuerungsebene in CIDR-Notation. | 10.100.76.0/24 | |
masterVmSize |
Der VM-Typ/-Größe des Steuerungsebenenknotens. | Standard_D8s_v3 | |
workerVmSize |
Der VM-Typ/-Größe des Workerknotens. | Standard_D4s_v3 | |
workerVmDiskSize |
Die Datenträgergröße des Workerknotens in Gigabyte. | 128 | |
workerCount |
Die Anzahl Workerknoten: | 3 | |
podCidr |
Der Adressraum der Pods in CIDR-Notation. | 10.128.0.0/14 | |
serviceCidr |
Der Adressraum des Diensts in CIDR-Notation. | 172.30.0.0/16 | |
tags |
Eine Hashtabelle mit Ressourcentags. | @{env = 'Dev'; dept = 'Ops'} |
|
apiServerVisibility |
Die Sichtbarkeit des API-Servers (Public oder Private ). |
Öffentlich | |
ingressVisibility |
Die Eingangssichtbarkeit (oderPublic Private ). |
Öffentlich |
Die folgenden Abschnitte enthalten Anweisungen zur Verwendung von PowerShell oder Azure CLI.
PowerShell-Schritte
Führen Sie die folgenden Schritte aus, wenn Sie PowerShell verwenden.
Bevor Sie beginnen– PowerShell
Vor dem Ausführen der Befehle in diesem Artikel müssen Sie möglicherweise Connect-AzAccount
ausführen. Überprüfen Sie, ob eine Verbindung mit Azure besteht, bevor Sie fortfahren. Führen Sie hierzu Get-AzContext
aus, um zu überprüfen, ob Sie Zugriff auf ein aktives Azure-Abonnement haben.
Hinweis
Diese Vorlage verwendet den Text des Pull-Geheimnisses, das Sie von der Red Hat OpenShift Cluster Manager-Website erhalten haben. Bevor Sie fortfahren, stellen Sie sicher, dass das Pull-Geheimnis lokal als pull-secret.txt
gespeichert ist.
$rhosPullSecret= Get-Content .\pull-secret.txt -Raw # the pull secret text that was obtained from the Red Hat OpenShift Cluster Manager website
Definieren der folgenden Parameter als Umgebungsvariablen – PowerShell
$resourceGroup="aro-rg" # the new resource group for the cluster
$location="eastus" # the location of the new ARO cluster
$domain="mydomain" # the domain prefix for the cluster
$aroClusterName="cluster" # the name of the cluster
Registrieren der erforderlichen Ressourcenanbieter – PowerShell
Registrieren Sie die folgenden Ressourcenanbieter in Ihrem Abonnement: Microsoft.RedHatOpenShift
, Microsoft.Compute
und Microsoft.Storage
Microsoft.Authorization
.
Register-AzResourceProvider -ProviderNamespace Microsoft.RedHatOpenShift
Register-AzResourceProvider -ProviderNamespace Microsoft.Compute
Register-AzResourceProvider -ProviderNamespace Microsoft.Storage
Register-AzResourceProvider -ProviderNamespace Microsoft.Authorization
Erstellen der neuen Ressourcengruppe – PowerShell
New-AzResourceGroup -Name $resourceGroup -Location $location
Erstellen eines neuen Dienstprinzipals und Zuweisen von Rollen – PowerShell
$suffix=Get-Random # random suffix for the Service Principal
$spDisplayName="sp-$resourceGroup-$suffix"
$azureADAppSp = New-AzADServicePrincipal -DisplayName $spDisplayName -Role Contributor
New-AzRoleAssignment -ObjectId $azureADAppSp.Id -RoleDefinitionName 'User Access Administrator' -ResourceGroupName $resourceGroup -ObjectType 'ServicePrincipal'
New-AzRoleAssignment -ObJectId $azureADAppSp.Id -RoleDefinitionName 'Contributor' -ResourceGroupName $resourceGroup -ObjectType 'ServicePrincipal'
Abrufen des Dienstprinzipalkennworts – PowerShell
$aadClientSecretDigest = ConvertTo-SecureString -String $azureADAppSp.PasswordCredentials.SecretText -AsPlainText -Force
Abrufen des Dienstprinzipals für den OpenShift-Ressourcenanbieter – PowerShell
$rpOpenShift = Get-AzADServicePrincipal -DisplayName 'Azure Red Hat OpenShift RP' | Select-Object -ExpandProperty Id -Property Id -First 1
Überprüfen der Parameter vor der Bereitstellung des Clusters – PowerShell
# setup the parameters for the deployment
$templateParams = @{
domain = $domain
clusterName = $aroClusterName
location = $location
aadClientId = $azureADAppSp.AppId
aadObjectId = $azureADAppSp.Id
aadClientSecret = $aadClientSecretDigest
rpObjectId = $rpOpenShift.Id
pullSecret = $rhosPullSecret
}
Write-Verbose (ConvertTo-Json $templateParams) -Verbose
Bereitstellen des Azure Red Hat OpenShift-Clusters mithilfe der ARM-Vorlage – PowerShell
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroup @templateParams `
-TemplateFile azuredeploy.json
Herstellen einer Clusterverbindung
Um eine Verbindung mit dem neuen Cluster herzustellen, schauen Sie sich die Schritte in Herstellen einer Verbindung mit einem Azure Red Hat OpenShift 4-Cluster an.
Bereinigen von Ressourcen – PowerShell
Wenn Sie fertig sind, führen Sie den folgenden Befehl aus, um Ihre Ressourcengruppe zusammen mit allen in diesem Artikel erstellten Ressourcen zu löschen.
Remove-AzResourceGroup -Name $resourceGroup -Force
Schritte mit der Azure-Befehlszeilenschnittstelle
Führen Sie die folgenden Schritte aus, wenn Sie die Azure CLI verwenden.
Bevor Sie beginnen – Azure CLI
Vor dem Ausführen der Befehle in diesem Artikel müssen Sie möglicherweise az login
ausführen. Überprüfen Sie, ob eine Verbindung mit Azure besteht, bevor Sie fortfahren. Führen Sie hierzu az account list
aus, um zu überprüfen, ob Sie Zugriff auf ein aktives Azure-Abonnement haben.
Hinweis
Diese Vorlage verwendet den Text des Pull-Geheimnisses, das Sie von der Red Hat OpenShift Cluster Manager-Website erhalten haben. Bevor Sie fortfahren, stellen Sie sicher, dass dieses Geheimnis lokal als pull-secret.txt
gespeichert ist.
PULL_SECRET=$(cat pull-secret.txt) # the pull secret text
Definieren der folgenden Parameter als Umgebungsvariablen – Azure CLI
RESOURCEGROUP=aro-rg # the new resource group for the cluster
LOCATION=eastus # the location of the new cluster
DOMAIN=mydomain # the domain prefix for the cluster
ARO_CLUSTER_NAME=aro-cluster # the name of the cluster
Registrieren der erforderlichen Ressourcenanbieter – Azure CLI
Registrieren Sie die folgenden Ressourcenanbieter in Ihrem Abonnement: Microsoft.RedHatOpenShift
, Microsoft.Compute
und Microsoft.Storage
Microsoft.Authorization
.
az provider register --namespace 'Microsoft.RedHatOpenShift' --wait
az provider register --namespace 'Microsoft.Compute' --wait
az provider register --namespace 'Microsoft.Storage' --wait
az provider register --namespace 'Microsoft.Authorization' --wait
Erstellen der neuen Ressourcengruppe – Azure CLI
az group create --name $RESOURCEGROUP --location $LOCATION
Erstellen eines Dienstprinzipal für die neue Microsoft Entra-Anwendung
- Azure CLI
az ad sp create-for-rbac --name "sp-$RG_NAME-${RANDOM}" > app-service-principal.json
SP_CLIENT_ID=$(jq -r '.appId' app-service-principal.json)
SP_CLIENT_SECRET=$(jq -r '.password' app-service-principal.json)
SP_OBJECT_ID=$(az ad sp show --id $SP_CLIENT_ID | jq -r '.id')
Dem neuen Dienstprinzipal die Rolle Mitwirkender zuweisen – Azure CLI
az role assignment create \
--role 'User Access Administrator' \
--assignee-object-id $SP_OBJECT_ID \
--scope $SCOPE \
--assignee-principal-type 'ServicePrincipal'
az role assignment create \
--role 'Contributor' \
--assignee-object-id $SP_OBJECT_ID \
--scope $SCOPE \
--assignee-principal-type 'ServicePrincipal'
Abrufen der Objekt-ID des Dienstprinzipals für den OpenShift-Ressourcenanbieter – Azure CLI
ARO_RP_SP_OBJECT_ID=$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query [0].id -o tsv)
Bereitstellen des Clusters – Azure CLI
az deployment group create \
--name aroDeployment \
--resource-group $RESOURCEGROUP \
--template-file azuredeploy.json \
--parameters location=$LOCATION \
--parameters domain=$DOMAIN \
--parameters pullSecret=$PULL_SECRET \
--parameters clusterName=$ARO_CLUSTER_NAME \
--parameters aadClientId=$SP_CLIENT_ID \
--parameters aadObjectId=$SP_OBJECT_ID \
--parameters aadClientSecret=$SP_CLIENT_SECRET \
--parameters rpObjectId=$ARO_RP_SP_OBJECT_ID
az deployment group create \
--name aroDeployment \
--resource-group $RESOURCEGROUP \
--template-file azuredeploy.bicep \
--parameters location=$LOCATION \
--parameters domain=$DOMAIN \
--parameters pullSecret=$PULL_SECRET \
--parameters clusterName=$ARO_CLUSTER_NAME \
--parameters aadClientId=$SP_CLIENT_ID \
--parameters aadObjectId=$SP_OBJECT_ID \
--parameters aadClientSecret=$SP_CLIENT_SECRET \
--parameters rpObjectId=$ARO_RP_SP_OBJECT_ID
Herstellen einer Verbindung zu Ihrem Cluster – Azure CLI
Um eine Verbindung mit dem neuen Cluster herzustellen, schauen Sie sich die Schritte in Herstellen einer Verbindung mit einem Azure Red Hat OpenShift 4-Cluster an.
Bereinigen von Ressourcen – Azure CLI
Wenn Sie fertig sind, führen Sie den folgenden Befehl aus, um Ihre Ressourcengruppe zusammen mit allen in diesem Artikel erstellten Ressourcen zu löschen.
az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER
Tipp
Treten Probleme auf? Informieren Sie uns über GitHub, indem Sie ein Issue im Repository „Azure Red Hat Openshift (ARO)“ öffnen.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie mithilfe von ARM-Vorlagen und Bicep-Dateien einen Azure Red Hat OpenShift-Cluster erstellen, auf dem OpenShift 4 ausgeführt wird.
Im nächsten Artikel erfahren Sie, wie Sie den Cluster für die Authentifizierung mithilfe von Microsoft Entra ID konfigurieren können.