Sdílet prostřednictvím


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

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:

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:

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.Computea 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.Computea 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.