Rychlý start: Nasazení clusteru Azure Red Hat OpenShift s šablonou Azure Resource Manageru nebo souborem Bicep
Tento článek popisuje, jak pomocí šablony Azure Resource Manageru (šablony ARM) nebo Bicep vytvořit cluster Azure Red Hat OpenShift. Cluster Azure Red Hat OpenShift můžete nasadit pomocí PowerShellu nebo rozhraní příkazového řádku Azure (Azure CLI).
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Bicep je jazyk specifický pro doménu (DSL), který k nasazování prostředků Azure používá deklarativní syntaxi. V souboru Bicep definujete infrastrukturu, kterou chcete nasadit do Azure, a pak tento soubor použijete v průběhu životního cyklu vývoje k opakovanému nasazení infrastruktury. Vaše prostředky se nasazují konzistentním způsobem.
Poznámka:
Informace o nasazení clusterů Azure Red Hat OpenShift pomocí Terraformu najdete v tématu Microsoft.RedHatOpenShift openShiftClusters Terraform.
Požadavky
- Instalace Azure CLI
Vyžaduje se účet Azure s aktivním předplatným. Pokud ho ještě nemáte, můžete si zdarma vytvořit účet.
Možnost přiřazovat role Správce uživatelských přístupů a Přispěvatel Pokud tuto možnost nemáte, obraťte se na správce Microsoft Entra a požádejte ho o správu rolí.
Účet Red Hat. Pokud ho nemáte, budete se muset zaregistrovat k účtu.
Tajný kód pro vyžádání změn pro cluster Azure Red Hat OpenShift Stáhněte soubor tajného kódu pro vyžádání z webu Správce clusteru Red Hat OpenShift.
Pokud chcete kód Azure PowerShellu spustit místně, Azure PowerShell.
Pokud chcete kód Azure CLI spustit místně:
- Prostředí Bash (například Git Bash, které je součástí Gitu pro Windows).
- Rozhraní příkazového řádku Azure.
Vytvoření šablony ARM nebo souboru Bicep
Zvolte šablonu Azure Resource Manageru (šablonu ARM) nebo soubor Azure Bicep. Pak můžete šablonu nasadit pomocí příkazového řádku Azure (azure-cli) nebo PowerShellu.
Vytvoření šablony ARM
Následující příklad ukazuje, jak by vaše šablona ARM měla vypadat při konfiguraci clusteru Azure RedHat OpenShift.
Šablona definuje tři prostředky Azure:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Další ukázky šablon Azure Red Hat OpenShift najdete na webu Red Hat OpenShift.
Uložte následující příklad jako 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')]"
}
}
}
Vytvoření souboru Bicep
Následující příklad ukazuje, jak by měl soubor Azure Bicep vypadat, když je nakonfigurovaný pro váš cluster Azure Red Hat OpenShift.
Soubor Bicep definuje tři prostředky Azure:
- Microsoft.Network/virtualNetworks
- Microsoft.Network/virtualNetworks/providers/roleAssignments
- Microsoft.RedHatOpenShift/OpenShiftClusters
Další šablony Azure Red Hat OpenShift najdete na webu Red Hat OpenShift.
Vytvořte následující soubor Bicep obsahující definici clusteru Azure Red Hat OpenShift. Následující příklad ukazuje, jak by měl váš soubor Bicep vypadat při konfiguraci.
Uložte následující soubor jako 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
]
}
Nasazení šablony azuredeploy.json
Šablona azuredeploy.json slouží k nasazení clusteru Azure Red Hat OpenShift. Jsou vyžadovány následující parametry:
Poznámka:
domain
Jako parametr zadejte předponu domény, která se použije jako součást automaticky generovaného názvu DNS pro konzolu OpenShift a servery rozhraní API. Tato předpona se také používá jako součást názvu skupiny prostředků, která je vytvořená pro hostování virtuálních počítačů clusteru.
Vlastnost | Popis | Platné možnosti | Výchozí hodnota |
---|---|---|---|
domain |
Předpona domény pro cluster. | Žádná | |
pullSecret |
Tajný klíč pro přijetí změn, který jste získali z webu Správce clusteru Red Hat OpenShift. | ||
clusterName |
Název clusteru. | ||
aadClientId |
ID aplikace (a GUID) klientské aplikace Microsoft Entra. | ||
aadObjectId |
ID objektu (a GUID) instančního objektu pro klientskou aplikaci Microsoft Entra. | ||
aadClientSecret |
Tajný klíč klienta instančního objektu pro klientskou aplikaci Microsoft Entra jako zabezpečený řetězec. | ||
rpObjectId |
ID objektu (a GUID) instančního objektu poskytovatele prostředků. |
Níže uvedené parametry šablony mají výchozí hodnoty. Dají se zadat, ale nejsou explicitně povinné.
Vlastnost | Popis | Platné možnosti | Výchozí hodnota |
---|---|---|---|
location |
Umístění nového clusteru ARO. Toto umístění může být stejné jako nebo jiné než oblast skupiny prostředků. | eastus | |
clusterVnetName |
Název virtuální sítě pro cluster ARO. | aro-vnet | |
clusterVnetCidr |
Adresní prostor virtuální sítě ARO v zápisu CIDR (Classless Inter-Domain Routing ). | 10.100.0.0/15 | |
workerSubnetCidr |
Adresní prostor podsítě pracovního uzlu v zápisu CIDR. | 10.100.70.0/23 | |
masterSubnetCidr |
Adresní prostor podsítě uzlu řídicí roviny v zápisu CIDR. | 10.100.76.0/24 | |
masterVmSize |
Typ /velikost virtuálního počítače uzlu řídicí roviny. | Standard_D8s_v3 | |
workerVmSize |
Typ nebo velikost pracovního uzlu virtuálního počítače. | Standard_D4s_v3 | |
workerVmDiskSize |
Velikost disku pracovního uzlu v gigabajtech. | 128 | |
workerCount |
Počet pracovních uzlů. | 3 | |
podCidr |
Adresní prostor podů v zápisu CIDR. | 10.128.0.0/14 | |
serviceCidr |
Adresní prostor služby v zápisu CIDR. | 172.30.0.0/16 | |
tags |
Tabulka hash značek prostředků | @{env = 'Dev'; dept = 'Ops'} |
|
apiServerVisibility |
Viditelnost serveru rozhraní API (Public nebo Private ). |
Veřejná | |
ingressVisibility |
Viditelnost příchozího přenosu dat (Public nebo Private ) |
Veřejná |
Následující části obsahují pokyny pomocí PowerShellu nebo Azure CLI.
Kroky PowerShellu
Pokud používáte PowerShell, proveďte následující kroky.
Než začnete – PowerShell
Před spuštěním příkazů v tomto článku možná budete muset spustit Connect-AzAccount
. Než budete pokračovat, zkontrolujte, jestli máte připojení k Azure. Pokud chcete zkontrolovat, jestli máte připojení, spusťte ověření Get-AzContext
, jestli máte přístup k aktivnímu předplatnému Azure.
Poznámka:
Tato šablona používá tajný text pro vyžádání obsahu získaný z webu Správce clusteru Red Hat OpenShift. Než budete pokračovat, ujistěte se, že máte tajný kód pro přijetí změn uložený místně jako 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
Definování následujících parametrů jako proměnných prostředí – 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
Registrace požadovaných poskytovatelů prostředků – PowerShell
Zaregistrujte ve svém předplatném následující poskytovatele prostředků: Microsoft.RedHatOpenShift
, Microsoft.Storage
Microsoft.Compute
a Microsoft.Authorization
.
Register-AzResourceProvider -ProviderNamespace Microsoft.RedHatOpenShift
Register-AzResourceProvider -ProviderNamespace Microsoft.Compute
Register-AzResourceProvider -ProviderNamespace Microsoft.Storage
Register-AzResourceProvider -ProviderNamespace Microsoft.Authorization
Vytvoření nové skupiny prostředků – PowerShell
New-AzResourceGroup -Name $resourceGroup -Location $location
Vytvoření nového instančního objektu a přiřazení rolí – 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'
Získání hesla instančního objektu – PowerShell
$aadClientSecretDigest = ConvertTo-SecureString -String $azureADAppSp.PasswordCredentials.SecretText -AsPlainText -Force
Získání instančního objektu pro poskytovatele prostředků OpenShift – PowerShell
$rpOpenShift = Get-AzADServicePrincipal -DisplayName 'Azure Red Hat OpenShift RP' | Select-Object -ExpandProperty Id -Property Id -First 1
Kontrola parametrů před nasazením clusteru – 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
Nasazení clusteru Azure Red Hat OpenShift pomocí šablony ARM – PowerShell
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroup @templateParams `
-TemplateFile azuredeploy.json
Připojení ke clusteru
Pokud se chcete připojit k novému clusteru, projděte si postup připojení ke clusteru Azure Red Hat OpenShift 4.
Vyčištění prostředků – PowerShell
Jakmile budete hotovi, spuštěním následujícího příkazu odstraňte skupinu prostředků a všechny prostředky, které jste vytvořili v tomto článku.
Remove-AzResourceGroup -Name $resourceGroup -Force
Kroky Azure CLI
Pokud používáte Azure CLI, proveďte následující kroky.
Než začnete – Azure CLI
Před spuštěním příkazů v tomto článku možná budete muset spustit az login
. Než budete pokračovat, zkontrolujte, jestli máte připojení k Azure. Pokud chcete zkontrolovat, jestli máte připojení, spusťte az account list
a ověřte, že máte přístup k aktivnímu předplatnému Azure.
Poznámka:
Tato šablona použije tajný text pro vyžádání obsahu získaný z webu Správce clusteru Red Hat OpenShift. Než budete pokračovat, ujistěte se, že máte tento tajný kód uložený místně jako pull-secret.txt
.
PULL_SECRET=$(cat pull-secret.txt) # the pull secret text
Definování následujících parametrů jako proměnných prostředí – 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
Registrace požadovaných poskytovatelů prostředků – Azure CLI
Zaregistrujte ve svém předplatném následující poskytovatele prostředků: Microsoft.RedHatOpenShift
, Microsoft.Storage
Microsoft.Compute
a 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
Vytvoření nové skupiny prostředků – Azure CLI
az group create --name $RESOURCEGROUP --location $LOCATION
Vytvoření instančního objektu pro novou aplikaci Microsoft Entra
- 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')
Přiřazení role Přispěvatel k novému instančnímu objektu – 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'
Získání ID instančního objektu pro poskytovatele prostředků OpenShift – Azure CLI
ARO_RP_SP_OBJECT_ID=$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query [0].id -o tsv)
Nasazení clusteru – 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
Připojení ke clusteru – Azure CLI
Pokud se chcete připojit k novému clusteru, projděte si postup připojení ke clusteru Azure Red Hat OpenShift 4.
Vyčištění prostředků – Azure CLI
Jakmile budete hotovi, spuštěním následujícího příkazu odstraňte skupinu prostředků a všechny prostředky, které jste vytvořili v tomto článku.
az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER
Tip
Máte problémy? Dejte nám vědět na GitHubu otevřením problému v úložišti Azure Red Hat Openshift (ARO).
Další kroky
V tomto článku jste zjistili, jak vytvořit cluster Azure Red Hat OpenShift se systémem OpenShift 4 pomocí šablon ARM i Bicep.
V dalším článku se dozvíte, jak nakonfigurovat cluster pro ověřování pomocí ID Microsoft Entra.