Snelstart: Een Azure Red Hat OpenShift-cluster implementeren met een Azure Resource Manager-sjabloon of Bicep-bestand
In dit artikel wordt beschreven hoe u een Azure Resource Manager-sjabloon (ARM-sjabloon) of Bicep gebruikt om een Azure Red Hat OpenShift-cluster te maken. U kunt het Azure Red Hat OpenShift-cluster implementeren met PowerShell of de Azure-opdrachtregelinterface (Azure CLI).
Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.
Bicep is een domeinspecifieke taal (DSL) die declaratieve syntaxis gebruikt om Azure-resources te implementeren. In een Bicep-bestand definieert u de infrastructuur die u wilt implementeren in Azure en gebruikt u dat bestand vervolgens gedurende de ontwikkelingslevenscyclus om uw infrastructuur herhaaldelijk te implementeren. Uw resources worden op een consistente manier geïmplementeerd.
Vereisten
Er is een Azure-account met een actief abonnement vereist. Als u dat nog niet hebt, kunt u gratis een account maken.
Mogelijkheid om gebruikerstoegangsbeheerders- en inzenderrollen toe te wijzen. Als u deze mogelijkheid niet hebt, neemt u contact op met uw Microsoft Entra-beheerder om rollen te beheren.
Een Red Hat-account. Als u nog geen account hebt, moet u zich registreren voor een account.
Een pull-geheim voor uw Azure Red Hat OpenShift-cluster. Download het pull-geheimbestand van de website van Red Hat OpenShift Cluster Manager.
Als u de Azure PowerShell-code lokaal wilt uitvoeren, azure PowerShell.
Als u de Azure CLI-code lokaal wilt uitvoeren:
- Een Bash-shell (zoals Git Bash, die deel uitmaakt van Git voor Windows).
- Azure CLI.
Een ARM-sjabloon of Bicep-bestand maken
Kies een Azure Resource Manager-sjabloon (ARM-sjabloon) of een Azure Bicep-bestand. Vervolgens kunt u de sjabloon implementeren met behulp van de Azure-opdrachtregel (azure-cli) of PowerShell.
Een ARM-sjabloon maken
In het volgende voorbeeld ziet u hoe uw ARM-sjabloon eruit moet zien wanneer deze is geconfigureerd voor uw Azure RedHat OpenShift-cluster.
De sjabloon definieert drie Azure-resources:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Meer Voorbeelden van Azure Red Hat OpenShift-sjablonen vindt u op de Website van Red Hat OpenShift.
Sla het volgende voorbeeld op 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": {
"decription": "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')]"
}
}
}
Een Bicep-bestand maken
In het volgende voorbeeld ziet u hoe uw Azure Bicep-bestand eruit moet zien wanneer het is geconfigureerd voor uw Azure Red Hat OpenShift-cluster.
Het Bicep-bestand definieert drie Azure-resources:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Meer Azure Red Hat OpenShift-sjablonen vindt u op de website van Red Hat OpenShift.
Maak het volgende Bicep-bestand met de definitie voor het Azure Red Hat OpenShift-cluster. In het volgende voorbeeld ziet u hoe uw Bicep-bestand eruit moet zien wanneer het is geconfigureerd.
Sla het volgende bestand op 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
]
}
De sjabloon azuredeploy.json implementeren
De azuredeploy.json-sjabloon wordt gebruikt om een Azure Red Hat OpenShift-cluster te implementeren. De volgende parameters zijn vereist:
Notitie
Geef voor de domain
parameter het domeinvoorvoegsel op dat wordt gebruikt als onderdeel van de automatisch gegenereerde DNS-naam voor OpenShift-console- en API-servers. Dit voorvoegsel wordt ook gebruikt als onderdeel van de naam van de resourcegroep die is gemaakt om de cluster-VM's te hosten.
Eigenschappen | Beschrijving | Geldige opties | Standaardwaarde |
---|---|---|---|
domain |
Het domeinvoorvoegsel voor het cluster. | Geen | |
pullSecret |
Het pull-geheim dat u hebt verkregen van de red hat OpenShift Cluster Manager-website. | ||
clusterName |
De naam van het cluster. | ||
aadClientId |
De toepassings-id (een GUID) van een Microsoft Entra-clienttoepassing. | ||
aadObjectId |
De object-id (een GUID) van de service-principal voor de Microsoft Entra-clienttoepassing. | ||
aadClientSecret |
Het clientgeheim van de service-principal voor de Microsoft Entra-clienttoepassing als een beveiligde tekenreeks. | ||
rpObjectId |
De object-id (een GUID) van de service-principal van de resourceprovider. |
De onderstaande sjabloonparameters hebben standaardwaarden. Ze kunnen worden opgegeven, maar ze zijn niet expliciet vereist.
Eigenschappen | Beschrijving | Geldige opties | Standaardwaarde |
---|---|---|---|
location |
De locatie van het nieuwe ARO-cluster. Deze locatie kan hetzelfde zijn als of afwijken van de resourcegroepregio. | eastus | |
clusterVnetName |
De naam van het virtuele netwerk voor het ARO-cluster. | aro-vnet | |
clusterVnetCidr |
De adresruimte van het virtuele ARO-netwerk, in CIDR-notatie (Classless Inter-Domain Routing ). | 10.100.0.0/15 | |
workerSubnetCidr |
De adresruimte van het subnet van het werkknooppunt, in CIDR-notatie. | 10.100.70.0/23 | |
masterSubnetCidr |
De adresruimte van het subnet van het besturingsvlakknooppunt, in CIDR-notatie. | 10.100.76.0/24 | |
masterVmSize |
Het type/grootte van de virtuele machine van het besturingsvlakknooppunt. | Standard_D8s_v3 | |
workerVmSize |
Het type/de grootte van de virtuele machine van het werkknooppunt. | Standard_D4s_v3 | |
workerVmDiskSize |
De schijfgrootte van het werkknooppunt, in gigabytes. | 128 | |
workerCount |
Het aantal werkknooppunten. | 3 | |
podCidr |
De adresruimte van de pods, in CIDR-notatie. | 10.128.0.0/14 | |
serviceCidr |
De adresruimte van de service, in CIDR-notatie. | 172.30.0.0/16 | |
tags |
Een hash-tabel met resourcetags. | @{env = 'Dev'; dept = 'Ops'} |
|
apiServerVisibility |
De zichtbaarheid van de API-server (Public of Private ). |
Openbaar | |
ingressVisibility |
De zichtbaarheid (ingang) van inkomend verkeer (Public of Private ). |
Openbaar |
De volgende secties bevatten instructies met behulp van PowerShell of Azure CLI.
PowerShell-stappen
Voer de volgende stappen uit als u PowerShell gebruikt.
Voordat u begint - PowerShell
Voordat u de opdrachten in dit artikel uitvoert, moet u mogelijk uitvoeren Connect-AzAccount
. Controleer of u verbinding hebt met Azure voordat u doorgaat. Als u wilt controleren of u verbinding hebt, voert u de opdracht uit Get-AzContext
om te controleren of u toegang hebt tot een actief Azure-abonnement.
Notitie
Deze sjabloon maakt gebruik van de pull-geheime tekst die is verkregen op de website van Red Hat OpenShift Cluster Manager. Voordat u doorgaat, moet u ervoor zorgen dat het pull-geheim lokaal is opgeslagen als pull-secret.txt
.
$rhosPullSecret= Get-Content .\pull-secret.txt -Raw # the pull secret text that was obtained from the Red Hat OpenShift Cluster Manager website
Definieer de volgende parameters als omgevingsvariabelen - 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
De vereiste resourceproviders registreren - PowerShell
Registreer de volgende resourceproviders in uw abonnement: Microsoft.RedHatOpenShift
, Microsoft.Compute
en Microsoft.Authorization
Microsoft.Storage
.
Register-AzResourceProvider -ProviderNamespace Microsoft.RedHatOpenShift
Register-AzResourceProvider -ProviderNamespace Microsoft.Compute
Register-AzResourceProvider -ProviderNamespace Microsoft.Storage
Register-AzResourceProvider -ProviderNamespace Microsoft.Authorization
De nieuwe resourcegroep maken - PowerShell
New-AzResourceGroup -Name $resourceGroup -Location $location
Een nieuwe service-principal maken en rollen toewijzen - 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'
Het wachtwoord voor de service-principal ophalen - PowerShell
$aadClientSecretDigest = ConvertTo-SecureString -String $azureADAppSp.PasswordCredentials.SecretText -AsPlainText -Force
De service-principal voor de OpenShift-resourceprovider ophalen - PowerShell
$rpOpenShift = Get-AzADServicePrincipal -DisplayName 'Azure Red Hat OpenShift RP' | Select-Object -ExpandProperty Id -Property Id -First 1
Controleer de parameters voordat u het cluster implementeert - 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
Het Azure Red Hat OpenShift-cluster implementeren met behulp van de ARM-sjabloon - PowerShell
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroup @templateParams `
-TemplateFile azuredeploy.json
Verbinding maken met uw cluster
Als u verbinding wilt maken met uw nieuwe cluster, raadpleegt u de stappen in Verbinding maken met een Azure Red Hat OpenShift 4-cluster.
Resources opschonen - PowerShell
Wanneer u klaar bent, voert u de volgende opdracht uit om uw resourcegroep en alle resources die u in dit artikel hebt gemaakt, te verwijderen.
Remove-AzResourceGroup -Name $resourceGroup -Force
Azure CLI-stappen
Voer de volgende stappen uit als u Azure CLI gebruikt.
Voordat u begint - Azure CLI
Mogelijk moet u deze uitvoeren az login
voordat u de opdrachten in dit artikel uitvoert. Controleer of u verbinding hebt met Azure voordat u doorgaat. Als u wilt controleren of u verbinding hebt, voert u deze uit az account list
en controleert u of u toegang hebt tot een actief Azure-abonnement.
Notitie
Deze sjabloon gebruikt de pull-geheime tekst die is verkregen op de website van Red Hat OpenShift Cluster Manager. Voordat u doorgaat, moet u ervoor zorgen dat het geheim lokaal is opgeslagen als pull-secret.txt
.
PULL_SECRET=$(cat pull-secret.txt) # the pull secret text
Definieer de volgende parameters als omgevingsvariabelen - 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
De vereiste resourceproviders registreren - Azure CLI
Registreer de volgende resourceproviders in uw abonnement: Microsoft.RedHatOpenShift
, Microsoft.Compute
en Microsoft.Authorization
Microsoft.Storage
.
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
De nieuwe resourcegroep maken - Azure CLI
az group create --name $RESOURCEGROUP --location $LOCATION
Een service-principal maken voor de nieuwe Microsoft Entra-toepassing
- 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')
De rol Inzender toewijzen aan de nieuwe service-principal - 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'
De object-id van de service-principal ophalen voor de OpenShift-resourceprovider - Azure CLI
ARO_RP_SP_OBJECT_ID=$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query [0].id -o tsv)
Het cluster implementeren - 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
Verbinding maken met uw cluster - Azure CLI
Als u verbinding wilt maken met uw nieuwe cluster, raadpleegt u de stappen in Verbinding maken met een Azure Red Hat OpenShift 4-cluster.
Resources opschonen - Azure CLI
Wanneer u klaar bent, voert u de volgende opdracht uit om uw resourcegroep en alle resources die u in dit artikel hebt gemaakt, te verwijderen.
az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER
Tip
Ondervindt u problemen? Laat het ons weten op GitHub door een probleem te openen in de Azure Red Hat Openshift-opslagplaats (ARO).
Volgende stappen
In dit artikel hebt u geleerd hoe u een Azure Red Hat OpenShift-cluster met OpenShift 4 maakt met zowel ARM-sjablonen als Bicep.
Ga naar het volgende artikel voor meer informatie over het configureren van het cluster voor verificatie met behulp van Microsoft Entra-id.