Démarrage rapide : Déployer un cluster Azure Red Hat OpenShift avec un modèle Azure Resource Manager ou un fichier Bicep
Cet article explique comment utiliser un modèle Azure Resource Manager (modèle ARM) ou Bicep pour créer un cluster Azure Red Hat OpenShift. Vous pouvez déployer le cluster Azure Red Hat OpenShift à l’aide de PowerShell ou de l’interface de ligne de commande Azure (Azure CLI).
Un modèle Azure Resource Manager est un fichier JavaScript Object Notation (JSON) qui définit l'infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Vous décrivez votre déploiement prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.
Bicep est un langage spécifique à un domaine (DSL) qui utilise la syntaxe déclarative pour déployer des ressources Azure. Dans un fichier Bicep, vous définissez l’infrastructure que vous voulez déployer sur Azure, puis utilisez ce fichier tout au long du cycle de vie de développement pour déployer votre infrastructure à plusieurs reprises. Vos ressources sont déployées de manière cohérente.
Notes
Pour plus d’informations sur le déploiement de clusters Azure Red Hat OpenShift à l’aide de Terraform, consultez Microsoft.RedHatOpenShift openShiftClusters Terraform.
- Installer l’interface de ligne de commande Azure
Un compte Azure avec un abonnement actif est requis. Si vous n’en avez pas déjà un, vous pouvez créer un compte gratuit.
Capacité d’attribuer des rôles Administrateur de l’accès utilisateur et Contributeur. Si vous n’avez pas cette possibilité, contactez votre administrateur Microsoft Entra pour gérer les rôles.
Compte Red Hat. Si vous n’en avez pas, vous devrez vous inscrire pour obtenir un compte.
Secret d’extraction pour votre cluster Azure Red Hat OpenShift. Téléchargez le fichier du secret d’extraction à partir du site web du gestionnaire de cluster Red Hat OpenShift.
Si vous souhaitez exécuter le code Azure PowerShell localement, Azure PowerShell.
Si vous souhaitez exécuter le code Azure CLI localement :
- Un shell Bash (comme Git Bash, qui est inclus dans Git pour Windows).
- Azure CLI.
Choisissez un modèle Azure Resource Manager (modèle ARM) ou un fichier Bicep Azure. Ensuite, vous pouvez déployer le modèle à l’aide de la ligne de commande Azure (azure-cli) ou de PowerShell.
L’exemple suivant montre a quoi votre modèle ARM doit ressembler quand il est configuré pour votre cluster Azure RedHat OpenShift.
Le modèle définit trois ressources Azure :
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Vous trouverez d’autres exemples de modèles Azure Red Hat OpenShift sur le site web de Red Hat OpenShift.
Enregistrez l’exemple suivant sous 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')]"
}
}
}
L’exemple suivant montre à quoi votre fichier Bicep Azure doit ressembler quand il est configuré pour votre cluster Azure Red Hat OpenShift.
Le fichier Bicep définit trois ressources Azure :
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Vous trouverez d’autres modèles Azure Red Hat OpenShift sur le site web de Red Hat OpenShift.
Créez le fichier Bicep suivant contenant la définition du cluster Azure Red Hat OpenShift. L’exemple suivant montre à quoi votre fichier Bicep Azure doit ressembler une fois configuré.
Enregistrez le fichier suivant sous le nom 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
]
}
Le modèle azuredeploy.json est utilisé pour déployer un cluster Azure Red Hat OpenShift. Les paramètres requis sont les suivants :
Notes
Pour le domain
paramètre, spécifiez le préfixe de domaine qui sera utilisé dans le cadre du nom DNS généré automatiquement pour la console OpenShift et les serveurs d’API. Ce préfixe est également utilisé dans le nom du groupe de ressources créé pour héberger les machines virtuelles du cluster.
Propriété | Description | Options valides | Valeur par défaut |
---|---|---|---|
domain |
Préfixe de domaine pour le cluster. | aucun | |
pullSecret |
Secret d’extraction que vous avez obtenu à partir du site web du gestionnaire de cluster Red Hat OpenShift. | ||
clusterName |
Nom du cluster. | ||
aadClientId |
ID d’application (GUID) d’une application cliente Microsoft Entra. | ||
aadObjectId |
ID d’objet (GUID) du principal de service pour l’application cliente Microsoft Entra. | ||
aadClientSecret |
Clé secrète client du principal de service pour l’application cliente Microsoft Entra, en tant que chaîne sécurisée. | ||
rpObjectId |
ID d’objet (GUID) du principal du service du fournisseur de ressources. |
Les paramètres de modèle ci-dessous ont des valeurs par défaut. Ils peuvent être spécifiés mais ne sont pas explicitement requis.
Propriété | Description | Options valides | Valeur par défaut |
---|---|---|---|
location |
Emplacement du nouveau cluster ARO. Cet emplacement peut coïncider ou non avec la région du groupe de ressources. | eastus | |
clusterVnetName |
Nom du réseau virtuel pour le cluster ARO. | aro-vnet | |
clusterVnetCidr |
Espace d’adressage du réseau virtuel ARO, en notation CIDR Classless Inter-Domain Routing. | 10.100.0.0/15 | |
workerSubnetCidr |
Espace d’adressage du sous-réseau du nœud Worker, en notation CIDR. | 10.100.70.0/23 | |
masterSubnetCidr |
Espace d’adressage du sous-réseau du nœud de plan de contrôle, en notation CIDR. | 10.100.76.0/24 | |
masterVmSize |
Type/taille de machine virtuelle du nœud de plan de contrôle. | Standard_D8s_v3 | |
workerVmSize |
Type/taille de machine virtuelle du nœud Worker. | Standard_D4s_v3 | |
workerVmDiskSize |
Taille de disque du nœud Worker, en gigaoctets. | 128 | |
workerCount |
Nombre de nœuds Worker. | 3 | |
podCidr |
Espace d’adressage des pods, en notation CIDR. | 10.128.0.0/14 | |
serviceCidr |
Espace d’adressage du service, en notation CIDR. | 172.30.0.0/16 | |
tags |
Table de hachage des étiquettes de ressource. | @{env = 'Dev'; dept = 'Ops'} |
|
apiServerVisibility |
Visibilité du serveur d’API (Public ou Private ). |
Blockchain publique | |
ingressVisibility |
Visibilité d’entrée (Public ou Private ). |
Blockchain publique |
Les sections suivantes fournissent des instructions utilisant PowerShell ou Azure CLI.
Si vous utilisez PowerShell, procédez comme suit.
Avant d’exécuter les commandes de cet article, il se peut que vous deviez exécuter Connect-AzAccount
. Avant de poursuivre, vérifiez si vous disposez d’une connectivité à Azure. Pour déterminer si vous disposez d’une connectivité, exécutez Get-AzContext
afin de vérifier si vous avez accès à un abonnement Azure actif.
Notes
Ce modèle utilise le texte du secret d’extraction obtenu à partir du site web du gestionnaire de cluster Red Hat OpenShift. Avant de poursuivre, vérifiez que le secret d’extraction est enregistré localement sous 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
$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
Inscrivez les fournisseurs de ressources suivants dans votre abonnement : Microsoft.RedHatOpenShift
, Microsoft.Compute
, Microsoft.Storage
et Microsoft.Authorization
.
Register-AzResourceProvider -ProviderNamespace Microsoft.RedHatOpenShift
Register-AzResourceProvider -ProviderNamespace Microsoft.Compute
Register-AzResourceProvider -ProviderNamespace Microsoft.Storage
Register-AzResourceProvider -ProviderNamespace Microsoft.Authorization
New-AzResourceGroup -Name $resourceGroup -Location $location
$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'
$aadClientSecretDigest = ConvertTo-SecureString -String $azureADAppSp.PasswordCredentials.SecretText -AsPlainText -Force
$rpOpenShift = Get-AzADServicePrincipal -DisplayName 'Azure Red Hat OpenShift RP' | Select-Object -ExpandProperty Id -Property Id -First 1
# 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
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroup @templateParams `
-TemplateFile azuredeploy.json
Pour vous connecter à votre nouveau cluster, suivez les étapes décrites dans Se connecter à un cluster Azure Red Hat OpenShift 4.
Lorsque vous avez terminé, exécutez la commande suivante pour supprimer votre groupe de ressources et toutes les ressources créées dans cet article.
Remove-AzResourceGroup -Name $resourceGroup -Force
Si vous utilisez Azure CLI, procédez comme suit.
Il se peut que vous deviez exécuter az login
avant d’exécuter les commandes de ce démarrage rapide,. Avant de poursuivre, vérifiez si vous disposez d’une connectivité à Azure. Pour déterminer si vous disposez d’une connectivité, exécutez az account list
afin de vérifier si vous avez accès à un abonnement Azure actif.
Notes
Ce modèle utilise le texte du secret d’extraction obtenu à partir du site web du gestionnaire de cluster Red Hat OpenShift. Avant de poursuivre, vérifiez que ce secret est enregistré localement sous pull-secret.txt
.
PULL_SECRET=$(cat pull-secret.txt) # the pull secret text
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
Inscrivez les fournisseurs de ressources suivants dans votre abonnement : Microsoft.RedHatOpenShift
, Microsoft.Compute
, Microsoft.Storage
et 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
az group create --name $RESOURCEGROUP --location $LOCATION
- 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')
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'
Obtenir l’ID d’objet du principal du service pour le fournisseur de ressources OpenShift - Azure CLI
ARO_RP_SP_OBJECT_ID=$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query [0].id -o tsv)
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
Pour vous connecter à votre nouveau cluster, suivez les étapes décrites dans Se connecter à un cluster Azure Red Hat OpenShift 4.
Lorsque vous avez terminé, exécutez la commande suivante pour supprimer votre groupe de ressources et toutes les ressources créées dans cet article.
az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER
Conseil
Vous rencontrez des problèmes ? Faites-le nous savoir sur GitHub en ouvrant un problème dans le dépôt Azure Red Hat Openshift (ARO).
Dans cet article, vous avez appris à créer un cluster Azure Red Hat OpenShift exécutant OpenShift 4 à l’aide de modèles ARM et de Bicep.
Passez à l’article suivant afin d’apprendre à configurer le cluster pour l’authentification avec Microsoft Entra ID.