Megosztás a következőn keresztül:


Gyorsútmutató: Azure Red Hat OpenShift-fürt üzembe helyezése Azure Resource Manager-sablonnal vagy Bicep-fájllal

Ez a cikk azt ismerteti, hogyan hozhat létre Azure Red Hat OpenShift-fürtöt Azure Resource Manager-sablon (ARM-sablon) vagy Bicep használatával. Az Azure Red Hat OpenShift-fürtöt a PowerShell vagy az Azure parancssori felülete (Azure CLI) használatával helyezheti üzembe.

Az Azure Resource Manager-sablon egy JavaScript Object Notation (JSON) fájl, amely meghatározza a projekt infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist használ. Az üzembe helyezés létrehozásához szükséges programozási parancsok sorozatának megírása nélkül írhatja le a tervezett üzembe helyezést.

A Bicep tartományspecifikus nyelv (DSL), amely deklaratív szintaxist használ az Azure-erőforrások üzembe helyezéséhez. Egy Bicep-fájlban definiálja az Azure-ban üzembe helyezni kívánt infrastruktúrát, majd a fejlesztési életciklus során ezt a fájlt használja az infrastruktúra ismételt üzembe helyezéséhez. Az erőforrások üzembe helyezése konzisztens módon működik.

Előfeltételek

  • Az Azure CLI telepítése

ARM-sablon vagy Bicep-fájl létrehozása

Válasszon egy Azure Resource Manager-sablont (ARM-sablont) vagy egy Azure Bicep-fájlt. Ezután üzembe helyezheti a sablont az Azure parancssor (azure-cli) vagy a PowerShell használatával.

ARM-sablon létrehozása

Az alábbi példa bemutatja, hogyan kell kinéznie az ARM-sablonnak az Azure RedHat OpenShift-fürthöz való konfiguráláskor.

A sablon három Azure-erőforrást határoz meg:

További Azure Red Hat OpenShift-sablonminták találhatók a Red Hat OpenShift webhelyén.

Mentse a következő példát azuredeploy.bicep néven:

{
    "$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')]"
         }
    }
}

Bicep-fájl létrehozása

Az alábbi példa bemutatja, hogyan kell kinéznie az Azure Bicep-fájlnak, amikor az Azure Red Hat OpenShift-fürthöz van konfigurálva.

A Bicep-fájl három Azure-erőforrást határoz meg:

További Azure Red Hat OpenShift-sablonok találhatók a Red Hat OpenShift webhelyén.

Hozza létre a következő Bicep-fájlt, amely tartalmazza az Azure Red Hat OpenShift-fürt definícióját. Az alábbi példa bemutatja, hogyan kell kinéznie a Bicep-fájlnak a konfiguráláskor.

Mentse a következő fájlt azuredeploy.bicep néven:

@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
  ]
}

A azuredeploy.json sablon üzembe helyezése

A azuredeploy.json sablon egy Azure Red Hat OpenShift-fürt üzembe helyezésére szolgál. A következő paraméterek szükségesek:

Feljegyzés

domain A paraméterhez adja meg az OpenShift-konzol és API-kiszolgálók automatikusan létrehozott DNS-nevének részeként használt tartományelőtagot. Ez az előtag a fürt virtuális gépeinek üzemeltetéséhez létrehozott erőforráscsoport nevének részeként is használatos.

Tulajdonság Leírás Érvényes beállítások Alapértelmezett érték
domain A fürt tartományelőtagja. Nincs
pullSecret A Red Hat OpenShift Cluster Manager webhelyről beszerzett lekéréses titkos kód.
clusterName A fürt neve.
aadClientId Egy Microsoft Entra-ügyfélalkalmazás alkalmazásazonosítója (GUID).
aadObjectId A Microsoft Entra-ügyfélalkalmazás szolgáltatásnévének objektumazonosítója (GUID).
aadClientSecret A Microsoft Entra-ügyfélalkalmazás szolgáltatásnévének titkos ügyfélkódja biztonságos sztringként.
rpObjectId Az erőforrás-szolgáltató szolgáltatásnév objektumazonosítója (GUID).

Az alábbi sablonparaméterek alapértelmezett értékekkel rendelkeznek. Megadhatóak, de kifejezetten nem kötelezőek.

Tulajdonság Leírás Érvényes beállítások Alapértelmezett érték
location Az új ARO-fürt helye. Ez a hely lehet ugyanaz, mint az erőforráscsoport régiója, vagy más lehet. eastus
clusterVnetName Az ARO-fürt virtuális hálózatának neve. aro-vnet
clusterVnetCidr Az ARO virtuális hálózat címtere osztály nélküli tartományközi útválasztás (CIDR) jelöléssel. 10.100.0.0/15
workerSubnetCidr A feldolgozó csomópont alhálózatának címtere CIDR-jelölésben. 10.100.70.0/23
masterSubnetCidr A vezérlősík csomópont alhálózatának címtere CIDR-jelölésben. 10.100.76.0/24
masterVmSize A vezérlősík csomópontjának virtuális gép típusa/mérete . Standard_D8s_v3
workerVmSize A munkavégző csomópont virtuálisgép-típusa/mérete. Standard_D4s_v3
workerVmDiskSize A feldolgozó csomópont lemezmérete gigabájtban. 128
workerCount A feldolgozó csomópontok száma. 3
podCidr A podok címtere CIDR-jelölésben. 10.128.0.0/14
serviceCidr A szolgáltatás címtere CIDR-jelölésben. 172.30.0.0/16
tags Erőforráscímkék kivonattáblája. @{env = 'Dev'; dept = 'Ops'}
apiServerVisibility Az API-kiszolgáló láthatósága (Public vagy Private). Nyilvános
ingressVisibility A bejövő forgalom (bejárat) láthatósága (Public vagy Private). Nyilvános

Az alábbi szakaszok a PowerShell vagy az Azure CLI használatával nyújtanak útmutatást.

A PowerShell lépései

PowerShell használata esetén hajtsa végre az alábbi lépéseket.

Kezdés előtt – PowerShell

A cikkben szereplő parancsok futtatása előtt előfordulhat, hogy futtatnia kell a parancsokat Connect-AzAccount. Ellenőrizze, hogy rendelkezik-e kapcsolattal az Azure-hoz a folytatás előtt. Annak ellenőrzéséhez, hogy rendelkezik-e kapcsolattal, futtassa Get-AzContext annak ellenőrzéséhez, hogy rendelkezik-e aktív Azure-előfizetéssel.

Feljegyzés

Ez a sablon a Red Hat OpenShift Cluster Manager webhelyről beszerzett lekéréses titkos kódszöveget használja. A folytatás előtt győződjön meg arról, hogy a lekéréses titkos kód helyileg pull-secret.txtmentve van.

$rhosPullSecret= Get-Content .\pull-secret.txt -Raw # the pull secret text that was obtained from the Red Hat OpenShift Cluster Manager website

A következő paraméterek definiálása környezeti változókként – 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

A szükséges erőforrás-szolgáltatók regisztrálása – PowerShell

Regisztrálja a következő erőforrás-szolgáltatókat az előfizetésében: Microsoft.RedHatOpenShift, Microsoft.ComputeMicrosoft.Storage és Microsoft.Authorization.

Register-AzResourceProvider -ProviderNamespace Microsoft.RedHatOpenShift
Register-AzResourceProvider -ProviderNamespace Microsoft.Compute
Register-AzResourceProvider -ProviderNamespace Microsoft.Storage
Register-AzResourceProvider -ProviderNamespace Microsoft.Authorization

Az új erőforráscsoport létrehozása – PowerShell

New-AzResourceGroup -Name $resourceGroup -Location $location

Új szolgáltatásnév létrehozása és szerepkörök hozzárendelése – 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'

A szolgáltatásnév jelszavának lekérése – PowerShell

$aadClientSecretDigest = ConvertTo-SecureString -String $azureADAppSp.PasswordCredentials.SecretText -AsPlainText -Force

Az OpenShift-erőforrás-szolgáltató szolgáltatásnévének lekérése – PowerShell

$rpOpenShift =  Get-AzADServicePrincipal -DisplayName 'Azure Red Hat OpenShift RP' | Select-Object -ExpandProperty Id -Property Id -First 1

Ellenőrizze a paramétereket a fürt üzembe helyezése előtt – 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

Az Azure Red Hat OpenShift-fürt üzembe helyezése az ARM-sablonnal – PowerShell

New-AzResourceGroupDeployment -ResourceGroupName $resourceGroup @templateParams `
    -TemplateFile azuredeploy.json

Csatlakozás a fürthöz

Az új fürthöz való csatlakozáshoz tekintse át az Azure Red Hat OpenShift 4-fürthöz való csatlakozás lépéseit.

Erőforrások törlése – PowerShell

Ha végzett, futtassa a következő parancsot az erőforráscsoport és a cikkben létrehozott összes erőforrás törléséhez.

Remove-AzResourceGroup -Name $resourceGroup -Force

Az Azure CLI lépései

Az Azure CLI használata esetén hajtsa végre a következő lépéseket.

Kezdés előtt – Azure CLI

Előfordulhat, hogy a jelen cikkben szereplő parancsok futtatása előtt futtatnia az login kell a parancsokat. A folytatás előtt ellenőrizze, hogy van-e kapcsolata az Azure-sal. Annak ellenőrzéséhez, hogy rendelkezik-e kapcsolattal, futtassa az account list és ellenőrizze, hogy rendelkezik-e aktív Azure-előfizetéssel.

Feljegyzés

Ez a sablon a Red Hat OpenShift Cluster Manager webhelyről beszerzett lekéréses titkos kódszöveget fogja használni. Mielőtt továbblép, győződjön meg arról, hogy a titkos kulcs helyileg lett mentve.pull-secret.txt

PULL_SECRET=$(cat pull-secret.txt)    # the pull secret text 

Az alábbi paraméterek definiálása környezeti változókként – 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

A szükséges erőforrás-szolgáltatók regisztrálása – Azure CLI

Regisztrálja a következő erőforrás-szolgáltatókat az előfizetésében: Microsoft.RedHatOpenShift, Microsoft.ComputeMicrosoft.Storage és 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 új erőforráscsoport létrehozása – Azure CLI

az group create --name $RESOURCEGROUP --location $LOCATION

Szolgáltatásnév létrehozása az új Microsoft Entra-alkalmazáshoz

  • 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')

Közreműködői szerepkör hozzárendelése az új szolgáltatásnévhez – 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'

Az OpenShift-erőforrás-szolgáltató egyszerű szolgáltatásobjektum-azonosítójának lekérése – Azure CLI

ARO_RP_SP_OBJECT_ID=$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query [0].id -o tsv)

A fürt üzembe helyezése – Azure CLI

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

Csatlakozás a fürthöz – Azure CLI

Az új fürthöz való csatlakozáshoz tekintse át az Azure Red Hat OpenShift 4-fürthöz való csatlakozás lépéseit.

Erőforrások tisztítása – Azure CLI

Ha végzett, futtassa a következő parancsot az erőforráscsoport és a cikkben létrehozott összes erőforrás törléséhez.

az aro delete --resource-group $RESOURCEGROUP --name $CLUSTER

Tipp.

Problémákat tapasztal? Tudassa velünk a GitHubon, hogy megnyit egy hibát az Azure Red Hat Openshift (ARO) adattárában.

Következő lépések

Ebben a cikkben megtanulta, hogyan hozhat létre Egy OpenShift 4-et futtató Azure Red Hat OpenShift-fürtöt ARM-sablonok és Bicep használatával.

A következő cikkből megtudhatja, hogyan konfigurálhatja a fürtöt hitelesítésre a Microsoft Entra ID használatával.