Delen via


Snelstart: Een Azure Red Hat OpenShift-cluster implementeren met een Azure Resource Manager-sjabloon of Bicep-bestand

In dit artikel wordt beschreven hoe u een Azure Resource Manager-sjabloon (ARM-sjabloon) of Bicep gebruikt om een Azure Red Hat OpenShift-cluster te maken. U kunt het Azure Red Hat OpenShift-cluster implementeren met PowerShell of de Azure-opdrachtregelinterface (Azure CLI).

Een Azure Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. U beschrijft de beoogde implementatie zonder de reeks programmeeropdrachten te schrijven om de implementatie te maken.

Bicep is een domeinspecifieke taal (DSL) die declaratieve syntaxis gebruikt om Azure-resources te implementeren. In een Bicep-bestand definieert u de infrastructuur die u wilt implementeren in Azure en gebruikt u dat bestand vervolgens gedurende de ontwikkelingslevenscyclus om uw infrastructuur herhaaldelijk te implementeren. Uw resources worden op een consistente manier geïmplementeerd.

Vereisten

  • Azure CLI installeren
  • Er is een Azure-account met een actief abonnement vereist. Als u dat nog niet hebt, kunt u gratis een account maken.

  • Mogelijkheid om gebruikerstoegangsbeheerders- en inzenderrollen toe te wijzen. Als u deze mogelijkheid niet hebt, neemt u contact op met uw Microsoft Entra-beheerder om rollen te beheren.

  • Een Red Hat-account. Als u nog geen account hebt, moet u zich registreren voor een account.

  • Een pull-geheim voor uw Azure Red Hat OpenShift-cluster. Download het pull-geheimbestand van de website van Red Hat OpenShift Cluster Manager.

  • Als u de Azure PowerShell-code lokaal wilt uitvoeren, azure PowerShell.

  • Als u de Azure CLI-code lokaal wilt uitvoeren:

Een ARM-sjabloon of Bicep-bestand maken

Kies een Azure Resource Manager-sjabloon (ARM-sjabloon) of een Azure Bicep-bestand. Vervolgens kunt u de sjabloon implementeren met behulp van de Azure-opdrachtregel (azure-cli) of PowerShell.

Een ARM-sjabloon maken

In het volgende voorbeeld ziet u hoe uw ARM-sjabloon eruit moet zien wanneer deze is geconfigureerd voor uw Azure RedHat OpenShift-cluster.

De sjabloon definieert drie Azure-resources:

Meer Voorbeelden van Azure Red Hat OpenShift-sjablonen vindt u op de Website van Red Hat OpenShift.

Sla het volgende voorbeeld op als azuredeploy.json:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "location" : {
        "type": "string",
        "defaultValue": "eastus",
        "metadata": {
          "description": "Location"
        }
      },
      "domain": {
          "type": "string",
          "defaultValue": "",
          "metadata": {
              "description": "Domain Prefix"
          }
      },
      "pullSecret": {
          "type": "string",
          "metadata": {
              "description": "Pull secret from cloud.redhat.com. The json should be input as a string"
          }
      },
      "clusterVnetName": {
          "type": "string",
          "defaultValue": "aro-vnet",
          "metadata": {
              "description": "Name of ARO vNet"
          }
      },
      "clusterVnetCidr": {
          "type": "string",
          "defaultValue": "10.100.0.0/15",
          "metadata": {
              "description": "ARO vNet Address Space"
          }
      },
      "workerSubnetCidr": {
          "type": "string",
          "defaultValue": "10.100.70.0/23",
          "metadata": {
              "description": "Worker node subnet address space"
          }
      },
      "masterSubnetCidr": {
          "type": "string",
          "defaultValue": "10.100.76.0/24",
          "metadata": {
              "description": "Master node subnet address space"
          }
      },
      "masterVmSize" : {
          "type": "string",
          "defaultValue": "Standard_D8s_v3",
          "metadata": {
              "description": "Master Node VM Type"
          }
      },
      "workerVmSize": {
          "type": "string",
          "defaultValue": "Standard_D4s_v3",
          "metadata": {
              "description": "Worker Node VM Type"
          }
      },
      "workerVmDiskSize": {
          "type" : "int",
          "defaultValue": 128,
          "minValue": 128,
          "metadata": {
              "description": "Worker Node Disk Size in GB"
          }
      },
      "workerCount": {
          "type": "int",
          "defaultValue": 3,
          "minValue": 3,
          "metadata": {
              "description": "Number of Worker Nodes"
          }
      },
      "podCidr": {
          "type": "string",
          "defaultValue": "10.128.0.0/14",
          "metadata": {
              "description": "Cidr for Pods"
          }
      },
      "serviceCidr": {
          "type": "string",
          "defaultValue": "172.30.0.0/16",
          "metadata": {
              "decription": "Cidr of service"
          }
      },
      "clusterName" : {
        "type": "string",
        "metadata": {
          "description": "Unique name for the cluster"
        }
      },
      "tags": {
          "type": "object",
          "defaultValue" : {
              "env": "Dev",
              "dept": "Ops"
          },
          "metadata": {
              "description": "Tags for resources"
          }
      },
      "apiServerVisibility": {
          "type": "string",
          "allowedValues": [
              "Private",
              "Public"
          ],
          "defaultValue": "Public",
          "metadata": {
              "description": "Api Server Visibility"
          }
      },
      "ingressVisibility": {
          "type": "string",
          "allowedValues": [
              "Private",
              "Public"
          ],
          "defaultValue": "Public",
          "metadata": {
              "description": "Ingress Visibility"
          }
      },
      "aadClientId" : {
        "type": "string",
        "metadata": {
          "description": "The Application ID of an Azure Active Directory client application"
        }
      },
      "aadObjectId": {
          "type": "string",
          "metadata": {
              "description": "The Object ID of an Azure Active Directory client application"
          }
      },
      "aadClientSecret" : {
        "type":"securestring",
        "metadata": {
          "description": "The secret of an Azure Active Directory client application"
        }
      },
      "rpObjectId": {
          "type": "String",
          "metadata": {
              "description": "The ObjectID of the Resource Provider Service Principal"
          }
      }
    },
    "variables": {
        "contribRole": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]"
    },
    "resources": [
        {
            "type": "Microsoft.Network/virtualNetworks",
            "apiVersion": "2020-05-01",
            "name": "[parameters('clusterVnetName')]",
            "location": "[parameters('location')]",
            "tags": "[parameters('tags')]",
            "properties": {
                "addressSpace": {
                "addressPrefixes": [
                    "[parameters('clusterVnetCidr')]"
                    ]
                },
                "subnets": [
                {
                    "name": "master",
                    "properties": {
                        "addressPrefix": "[parameters('masterSubnetCidr')]",
                        "serviceEndpoints": [
                            {
                                "service": "Microsoft.ContainerRegistry"
                            }
                        ],
                        "privateLinkServiceNetworkPolicies": "Disabled"
                    }
                },
                {
                    "name": "worker",
                    "properties": {
                        "addressPrefix": "[parameters('workerSubnetCidr')]",
                        "serviceEndpoints": [
                            {
                                "service": "Microsoft.ContainerRegistry"
                            }
                        ]
                    }
                }]
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/providers/roleAssignments",
            "apiVersion": "2018-09-01-preview",
            "name": "[concat(parameters('clusterVnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name, parameters('aadObjectId')))]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('clusterVnetName'))]"
            ],
            "properties": {
                "roleDefinitionId": "[variables('contribRole')]",
                "principalId":"[parameters('aadObjectId')]"
            }
        },
        {
            "type": "Microsoft.Network/virtualNetworks/providers/roleAssignments",
            "apiVersion": "2018-09-01-preview",
            "name": "[concat(parameters('clusterVnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name, parameters('rpObjectId')))]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('clusterVnetName'))]"
            ],
            "properties": {
                "roleDefinitionId": "[variables('contribRole')]",
                "principalId":"[parameters('rpObjectId')]"
            }
        },
        {
            "type": "Microsoft.RedHatOpenShift/OpenShiftClusters",
            "apiVersion": "2020-04-30",
            "name": "[parameters('clusterName')]",
            "location": "[parameters('location')]",
            "tags": "[parameters('tags')]",
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', parameters('clusterVnetName'))]"
            ],
            "properties": {
                "clusterProfile": {
                    "domain": "[parameters('domain')]",
                    "resourceGroupId": "[concat('/subscriptions/', subscription().subscriptionId,'/resourceGroups/aro-', parameters('domain'))]",
                    "pullSecret": "[parameters('pullSecret')]"
                },
                "networkProfile": {
                    "podCidr": "[parameters('podCidr')]",
                    "serviceCidr": "[parameters('serviceCidr')]"
                },
                "servicePrincipalProfile": {
                    "clientId": "[parameters('aadClientId')]",
                    "clientSecret": "[parameters('aadClientSecret')]"
                },
                "masterProfile": {
                    "vmSize": "[parameters('masterVmSize')]",
                    "subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('clusterVnetName'), 'master')]"
                },
                "workerProfiles": [
                    {
                        "name": "worker",
                        "vmSize": "[parameters('workerVmSize')]",
                        "diskSizeGB": "[parameters('workerVmDiskSize')]",
                        "subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('clusterVnetName'), 'worker')]",
                        "count": "[parameters('workerCount')]"
                    }
                ],
                "apiserverProfile": {
                    "visibility": "[parameters('apiServerVisibility')]"
                },
                "ingressProfiles": [
                    {
                        "name": "default",
                        "visibility": "[parameters('ingressVisibility')]"
                    }
                ]
            }
        }
    ],
    "outputs": {
         "clusterCredentials": {
             "type": "object",
             "value": "[listCredentials(resourceId('Microsoft.RedHatOpenShift/OpenShiftClusters', parameters('clusterName')), '2020-04-30')]"
         },
         "oauthCallbackURL": {
             "type": "string",
             "value": "[concat('https://oauth-openshift.apps.', parameters('domain'), '.', parameters('location'), '.aroapp.io/oauth2callback/AAD')]"
         }
    }
}

Een Bicep-bestand maken

In het volgende voorbeeld ziet u hoe uw Azure Bicep-bestand eruit moet zien wanneer het is geconfigureerd voor uw Azure Red Hat OpenShift-cluster.

Het Bicep-bestand definieert drie Azure-resources:

Meer Azure Red Hat OpenShift-sjablonen vindt u op de website van Red Hat OpenShift.

Maak het volgende Bicep-bestand met de definitie voor het Azure Red Hat OpenShift-cluster. In het volgende voorbeeld ziet u hoe uw Bicep-bestand eruit moet zien wanneer het is geconfigureerd.

Sla het volgende bestand op als azuredeploy.bicep:

@description('Location')
param location string = 'eastus'

@description('Domain Prefix')
param domain string = ''

@description('Pull secret from cloud.redhat.com. The json should be input as a string')
param pullSecret string

@description('Name of ARO vNet')
param clusterVnetName string = 'aro-vnet'

@description('ARO vNet Address Space')
param clusterVnetCidr string = '10.100.0.0/15'

@description('Worker node subnet address space')
param workerSubnetCidr string = '10.100.70.0/23'

@description('Master node subnet address space')
param masterSubnetCidr string = '10.100.76.0/24'

@description('Master Node VM Type')
param masterVmSize string = 'Standard_D8s_v3'

@description('Worker Node VM Type')
param workerVmSize string = 'Standard_D4s_v3'

@description('Worker Node Disk Size in GB')
@minValue(128)
param workerVmDiskSize int = 128

@description('Number of Worker Nodes')
@minValue(3)
param workerCount int = 3

@description('Cidr for Pods')
param podCidr string = '10.128.0.0/14'

@metadata({
  description: 'Cidr of service'
})
param serviceCidr string = '172.30.0.0/16'

@description('Unique name for the cluster')
param clusterName string

@description('Tags for resources')
param tags object = {
  env: 'Dev'
  dept: 'Ops'
}

@description('Api Server Visibility')
@allowed([
  'Private'
  'Public'
])
param apiServerVisibility string = 'Public'

@description('Ingress Visibility')
@allowed([
  'Private'
  'Public'
])
param ingressVisibility string = 'Public'

@description('The Application ID of an Azure Active Directory client application')
param aadClientId string

@description('The Object ID of an Azure Active Directory client application')
param aadObjectId string

@description('The secret of an Azure Active Directory client application')
@secure()
param aadClientSecret string

@description('The ObjectID of the Resource Provider Service Principal')
param rpObjectId string

@description('Specify if FIPS validated crypto modules are used')
@allowed([
  'Enabled'
  'Disabled'
])
param fips string = 'Disabled'

@description('Specify if master VMs are encrypted at host')
@allowed([
  'Enabled'
  'Disabled'
])
param masterEncryptionAtHost string = 'Disabled'

@description('Specify if worker VMs are encrypted at host')
@allowed([
  'Enabled'
  'Disabled'
])
param workerEncryptionAtHost string = 'Disabled'

var contributorRoleDefinitionId = resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
var resourceGroupId = '/subscriptions/${subscription().subscriptionId}/resourceGroups/aro-${domain}-${location}'
var masterSubnetId=resourceId('Microsoft.Network/virtualNetworks/subnets', clusterVnetName, 'master')
var workerSubnetId=resourceId('Microsoft.Network/virtualNetworks/subnets', clusterVnetName, 'worker')

resource clusterVnetName_resource 'Microsoft.Network/virtualNetworks@2020-05-01' = {
  name: clusterVnetName
  location: location
  tags: tags
  properties: {
    addressSpace: {
      addressPrefixes: [
        clusterVnetCidr
      ]
    }
    subnets: [
      {
        name: 'master'
        properties: {
          addressPrefix: masterSubnetCidr
          serviceEndpoints: [
            {
              service: 'Microsoft.ContainerRegistry'
            }
          ]
          privateLinkServiceNetworkPolicies: 'Disabled'
        }
      }
      {
        name: 'worker'
        properties: {
          addressPrefix: workerSubnetCidr
          serviceEndpoints: [
            {
              service: 'Microsoft.ContainerRegistry'
            }
          ]
        }
      }
    ]
  }
}

resource clusterVnetName_Microsoft_Authorization_id_name_aadObjectId 'Microsoft.Authorization/roleAssignments@2020-10-01-preview' = {
  name: guid(aadObjectId, clusterVnetName_resource.id, contributorRoleDefinitionId)
  scope: clusterVnetName_resource
  properties: {
    roleDefinitionId: contributorRoleDefinitionId
    principalId: aadObjectId
    principalType: 'ServicePrincipal'
  }
}

resource clusterVnetName_Microsoft_Authorization_id_name_rpObjectId 'Microsoft.Authorization/roleAssignments@2020-10-01-preview' = {
  name: guid(rpObjectId, clusterVnetName_resource.id, contributorRoleDefinitionId)
  scope: clusterVnetName_resource
  properties: {
    roleDefinitionId: contributorRoleDefinitionId
    principalId: rpObjectId
    principalType: 'ServicePrincipal'
  }
}

resource clusterName_resource 'Microsoft.RedHatOpenShift/OpenShiftClusters@2023-04-01' = {
  name: clusterName
  location: location
  tags: tags
  properties: {
    clusterProfile: {
      domain: domain
      resourceGroupId: resourceGroupId
      pullSecret: pullSecret
      fipsValidatedModules: fips
    }
    networkProfile: {
      podCidr: podCidr
      serviceCidr: serviceCidr
    }
    servicePrincipalProfile: {
      clientId: aadClientId
      clientSecret: aadClientSecret
    }
    masterProfile: {
      vmSize: masterVmSize
      subnetId: masterSubnetId
      encryptionAtHost: masterEncryptionAtHost
    }
    workerProfiles: [
      {
        name: 'worker'
        vmSize: workerVmSize
        diskSizeGB: workerVmDiskSize
        subnetId: workerSubnetId
        count: workerCount
        encryptionAtHost: workerEncryptionAtHost
      }
    ]
    apiserverProfile: {
      visibility: apiServerVisibility
    }
    ingressProfiles: [
      {
        name: 'default'
        visibility: ingressVisibility
      }
    ]
  }
  dependsOn: [
    clusterVnetName_resource
  ]
}

De sjabloon azuredeploy.json implementeren

De azuredeploy.json-sjabloon wordt gebruikt om een Azure Red Hat OpenShift-cluster te implementeren. De volgende parameters zijn vereist:

Notitie

Geef voor de domain parameter het domeinvoorvoegsel op dat wordt gebruikt als onderdeel van de automatisch gegenereerde DNS-naam voor OpenShift-console- en API-servers. Dit voorvoegsel wordt ook gebruikt als onderdeel van de naam van de resourcegroep die is gemaakt om de cluster-VM's te hosten.

Eigenschappen Beschrijving Geldige opties Standaardwaarde
domain Het domeinvoorvoegsel voor het cluster. Geen
pullSecret Het pull-geheim dat u hebt verkregen van de red hat OpenShift Cluster Manager-website.
clusterName De naam van het cluster.
aadClientId De toepassings-id (een GUID) van een Microsoft Entra-clienttoepassing.
aadObjectId De object-id (een GUID) van de service-principal voor de Microsoft Entra-clienttoepassing.
aadClientSecret Het clientgeheim van de service-principal voor de Microsoft Entra-clienttoepassing als een beveiligde tekenreeks.
rpObjectId De object-id (een GUID) van de service-principal van de resourceprovider.

De onderstaande sjabloonparameters hebben standaardwaarden. Ze kunnen worden opgegeven, maar ze zijn niet expliciet vereist.

Eigenschappen Beschrijving Geldige opties Standaardwaarde
location De locatie van het nieuwe ARO-cluster. Deze locatie kan hetzelfde zijn als of afwijken van de resourcegroepregio. eastus
clusterVnetName De naam van het virtuele netwerk voor het ARO-cluster. aro-vnet
clusterVnetCidr De adresruimte van het virtuele ARO-netwerk, in CIDR-notatie (Classless Inter-Domain Routing ). 10.100.0.0/15
workerSubnetCidr De adresruimte van het subnet van het werkknooppunt, in CIDR-notatie. 10.100.70.0/23
masterSubnetCidr De adresruimte van het subnet van het besturingsvlakknooppunt, in CIDR-notatie. 10.100.76.0/24
masterVmSize Het type/grootte van de virtuele machine van het besturingsvlakknooppunt. Standard_D8s_v3
workerVmSize Het type/de grootte van de virtuele machine van het werkknooppunt. Standard_D4s_v3
workerVmDiskSize De schijfgrootte van het werkknooppunt, in gigabytes. 128
workerCount Het aantal werkknooppunten. 3
podCidr De adresruimte van de pods, in CIDR-notatie. 10.128.0.0/14
serviceCidr De adresruimte van de service, in CIDR-notatie. 172.30.0.0/16
tags Een hash-tabel met resourcetags. @{env = 'Dev'; dept = 'Ops'}
apiServerVisibility De zichtbaarheid van de API-server (Public of Private). Openbaar
ingressVisibility De zichtbaarheid (ingang) van inkomend verkeer (Public of Private). Openbaar

De volgende secties bevatten instructies met behulp van PowerShell of Azure CLI.

PowerShell-stappen

Voer de volgende stappen uit als u PowerShell gebruikt.

Voordat u begint - PowerShell

Voordat u de opdrachten in dit artikel uitvoert, moet u mogelijk uitvoeren Connect-AzAccount. Controleer of u verbinding hebt met Azure voordat u doorgaat. Als u wilt controleren of u verbinding hebt, voert u de opdracht uit Get-AzContext om te controleren of u toegang hebt tot een actief Azure-abonnement.

Notitie

Deze sjabloon maakt gebruik van de pull-geheime tekst die is verkregen op de website van Red Hat OpenShift Cluster Manager. Voordat u doorgaat, moet u ervoor zorgen dat het pull-geheim lokaal is opgeslagen als pull-secret.txt.

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

Definieer de volgende parameters als omgevingsvariabelen - PowerShell

$resourceGroup="aro-rg"	     # the new resource group for the cluster
$location="eastus"    		 # the location of the new ARO cluster
$domain="mydomain"           # the domain prefix for the cluster  
$aroClusterName="cluster"    # the name of the cluster

De vereiste resourceproviders registreren - PowerShell

Registreer de volgende resourceproviders in uw abonnement: Microsoft.RedHatOpenShift, Microsoft.Computeen Microsoft.AuthorizationMicrosoft.Storage .

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

De nieuwe resourcegroep maken - PowerShell

New-AzResourceGroup -Name $resourceGroup -Location $location

Een nieuwe service-principal maken en rollen toewijzen - PowerShell

$suffix=Get-Random # random suffix for the Service Principal
$spDisplayName="sp-$resourceGroup-$suffix"
$azureADAppSp = New-AzADServicePrincipal -DisplayName $spDisplayName -Role Contributor

New-AzRoleAssignment -ObjectId $azureADAppSp.Id -RoleDefinitionName 'User Access Administrator' -ResourceGroupName $resourceGroup -ObjectType 'ServicePrincipal'
New-AzRoleAssignment -ObJectId $azureADAppSp.Id -RoleDefinitionName 'Contributor' -ResourceGroupName $resourceGroup -ObjectType 'ServicePrincipal'

Het wachtwoord voor de service-principal ophalen - PowerShell

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

De service-principal voor de OpenShift-resourceprovider ophalen - PowerShell

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

Controleer de parameters voordat u het cluster implementeert - PowerShell

# setup the parameters for the deployment
$templateParams = @{  
    domain = $domain
    clusterName = $aroClusterName
    location = $location
    aadClientId = $azureADAppSp.AppId
    aadObjectId = $azureADAppSp.Id
    aadClientSecret = $aadClientSecretDigest 
    rpObjectId = $rpOpenShift.Id
    pullSecret = $rhosPullSecret
}

Write-Verbose (ConvertTo-Json $templateParams) -Verbose

Het Azure Red Hat OpenShift-cluster implementeren met behulp van de ARM-sjabloon - PowerShell

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

Verbinding maken met uw cluster

Als u verbinding wilt maken met uw nieuwe cluster, raadpleegt u de stappen in Verbinding maken met een Azure Red Hat OpenShift 4-cluster.

Resources opschonen - PowerShell

Wanneer u klaar bent, voert u de volgende opdracht uit om uw resourcegroep en alle resources die u in dit artikel hebt gemaakt, te verwijderen.

Remove-AzResourceGroup -Name $resourceGroup -Force

Azure CLI-stappen

Voer de volgende stappen uit als u Azure CLI gebruikt.

Voordat u begint - Azure CLI

Mogelijk moet u deze uitvoeren az login voordat u de opdrachten in dit artikel uitvoert. Controleer of u verbinding hebt met Azure voordat u doorgaat. Als u wilt controleren of u verbinding hebt, voert u deze uit az account list en controleert u of u toegang hebt tot een actief Azure-abonnement.

Notitie

Deze sjabloon gebruikt de pull-geheime tekst die is verkregen op de website van Red Hat OpenShift Cluster Manager. Voordat u doorgaat, moet u ervoor zorgen dat het geheim lokaal is opgeslagen als pull-secret.txt.

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

Definieer de volgende parameters als omgevingsvariabelen - Azure CLI

RESOURCEGROUP=aro-rg            # the new resource group for the cluster
LOCATION=eastus                 # the location of the new cluster
DOMAIN=mydomain                 # the domain prefix for the cluster
ARO_CLUSTER_NAME=aro-cluster    # the name of the cluster

De vereiste resourceproviders registreren - Azure CLI

Registreer de volgende resourceproviders in uw abonnement: Microsoft.RedHatOpenShift, Microsoft.Computeen Microsoft.AuthorizationMicrosoft.Storage .

az provider register --namespace 'Microsoft.RedHatOpenShift' --wait
az provider register --namespace 'Microsoft.Compute' --wait
az provider register --namespace 'Microsoft.Storage' --wait
az provider register --namespace 'Microsoft.Authorization' --wait

De nieuwe resourcegroep maken - Azure CLI

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

Een service-principal maken voor de nieuwe Microsoft Entra-toepassing

  • Azure-CLI
az ad sp create-for-rbac --name "sp-$RG_NAME-${RANDOM}" > app-service-principal.json
SP_CLIENT_ID=$(jq -r '.appId' app-service-principal.json)
SP_CLIENT_SECRET=$(jq -r '.password' app-service-principal.json)
SP_OBJECT_ID=$(az ad sp show --id $SP_CLIENT_ID | jq -r '.id')

De rol Inzender toewijzen aan de nieuwe service-principal - Azure CLI

az role assignment create \
    --role 'User Access Administrator' \
    --assignee-object-id $SP_OBJECT_ID \
    --scope $SCOPE \
    --assignee-principal-type 'ServicePrincipal'

az role assignment create \
    --role 'Contributor' \
    --assignee-object-id $SP_OBJECT_ID \
    --scope $SCOPE \
    --assignee-principal-type 'ServicePrincipal'

De object-id van de service-principal ophalen voor de OpenShift-resourceprovider - Azure CLI

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

Het cluster implementeren - Azure CLI

az deployment group create \
    --name aroDeployment \
    --resource-group $RESOURCEGROUP \
    --template-file azuredeploy.json \
    --parameters location=$LOCATION \
    --parameters domain=$DOMAIN \
    --parameters pullSecret=$PULL_SECRET \
    --parameters clusterName=$ARO_CLUSTER_NAME \
    --parameters aadClientId=$SP_CLIENT_ID \
    --parameters aadObjectId=$SP_OBJECT_ID \
    --parameters aadClientSecret=$SP_CLIENT_SECRET \
    --parameters rpObjectId=$ARO_RP_SP_OBJECT_ID
az deployment group create \
    --name aroDeployment \
    --resource-group $RESOURCEGROUP \
    --template-file azuredeploy.bicep \
    --parameters location=$LOCATION \
    --parameters domain=$DOMAIN \
    --parameters pullSecret=$PULL_SECRET \
    --parameters clusterName=$ARO_CLUSTER_NAME \
    --parameters aadClientId=$SP_CLIENT_ID \
    --parameters aadObjectId=$SP_OBJECT_ID \
    --parameters aadClientSecret=$SP_CLIENT_SECRET \
    --parameters rpObjectId=$ARO_RP_SP_OBJECT_ID

Verbinding maken met uw cluster - Azure CLI

Als u verbinding wilt maken met uw nieuwe cluster, raadpleegt u de stappen in Verbinding maken met een Azure Red Hat OpenShift 4-cluster.

Resources opschonen - Azure CLI

Wanneer u klaar bent, voert u de volgende opdracht uit om uw resourcegroep en alle resources die u in dit artikel hebt gemaakt, te verwijderen.

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

Tip

Ondervindt u problemen? Laat het ons weten op GitHub door een probleem te openen in de Azure Red Hat Openshift-opslagplaats (ARO).

Volgende stappen

In dit artikel hebt u geleerd hoe u een Azure Red Hat OpenShift-cluster met OpenShift 4 maakt met zowel ARM-sjablonen als Bicep.

Ga naar het volgende artikel voor meer informatie over het configureren van het cluster voor verificatie met behulp van Microsoft Entra-id.