Delen via


Een Azure Red Hat OpenShift-cluster maken met beheerde identiteiten (preview)

Belangrijk

Momenteel wordt deze Azure Red Hat OpenShift-functie alleen aangeboden in preview. Preview-functies zijn beschikbaar op selfservice, opt-in basis. Previews worden geleverd in de staat waarin ze zijn en voor zover beschikbaar, en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. Azure Red Hat OpenShift-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Zodoende zijn deze functies niet bedoeld voor productiegebruik.

In dit artikel wordt beschreven hoe u een Azure Red Hat OpenShift-cluster implementeert met behulp van beheerde identiteiten. Een bestaand cluster dat gebruikmaakt van een service-principal , kan niet worden gemigreerd om een beheerde identiteit te gebruiken. U moet een nieuw cluster maken dat gebruikmaakt van een beheerde identiteit in een Azure Red Hat OpenShift-cluster.

Azure Red Hat OpenShift is een beheerde OpenShift-service die beheerde identiteiten en workloadidentiteiten ondersteunt. Beheerde identiteiten en workloadidentiteiten helpen bij het minimaliseren van risico's bij het beveiligen van workloads en toepassingen door kortdurende tokens te bieden in plaats van referenties met een lange levensduur, zoals een service-principal met clientgeheimreferenties.

Voor meer informatie, zie:

Vereiste voorwaarden

Zorg ervoor dat u Azure CLI versie 2.67.0 of hoger gebruikt. Gebruik az--version deze functie om de versie van Azure CLI te vinden die u hebt geïnstalleerd. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

Azure Red Hat OpenShift vereist minimaal 44 kernen om een OpenShift-cluster te maken. Het standaardquotum voor Azure-resources voor een nieuw Azure-abonnement voldoet niet aan deze vereiste. Zie VCPU-quota verhogen als u een verhoging van uw resourcelimiet wilt aanvragen.

De 44 kernen worden als volgt gebruikt:

  • Bootstrap machine: 8 kernen
  • Besturingsvlak (hoofdmachines): 24 kernen
  • Rekenkracht (werkmachines): 12 kernen

Wanneer de installatie is voltooid, wordt de bootstrap-machine verwijderd en gebruikt uw cluster in totaal 36 kernen. Zie Installeren in Azure voor meer informatie.

Als u bijvoorbeeld het huidige abonnementsquotum van de kleinste ondersteunde SKU van de virtuele-machinefamilie 'Standard DSv5' wilt controleren:

LOCATION=eastus
az vm list-usage -l $LOCATION \
--query "[?contains(name.value, 'standardDSv5Family')]" -o table

Azure Red Hat OpenShift-extensiewielbestand downloaden (alleen preview)

Als u de opdrachten in dit artikel wilt uitvoeren, downloadt u eerst het azure Red Hat OpenShift-extensiewielbestand van https://aka.ms/az-aroext-latest. Voer vervolgens de volgende opdracht uit om de extensie te installeren:

az extension add -s <path to downloaded whl file>

Uw machtigingen controleren

In dit artikel maakt u een resourcegroep die het virtuele netwerk en beheerde identiteiten voor het cluster bevat. Als u een resourcegroep wilt maken, hebt u inzender- en gebruikerstoegangsbeheerdersmachtigingen of eigenaarsmachtigingen voor de resourcegroep of het bijbehorende abonnement nodig.

U hebt eveneens voldoende Microsoft Entra-machtigingen nodig (een lidgebruiker van de tenant of een gast die is toegewezen met de rol Applicatiebeheerder) om een set beheerde identiteiten te maken en rollen toe te wijzen voor het cluster dat door het cluster kan worden gebruikt. Zie De rollen Lid en Gasten enBeheerders- en niet-beheerdersrollen toewijzen aan gebruikers met Microsoft Entra-id voor meer informatie.

De resourceproviders registreren

Sommige Azure-resourceproviders, waaronder de Azure Red Hat OpenShift-resourceprovider, vereisen registratie om te kunnen functioneren. Als u een resourceprovider registreert, maakt u een service-principal in uw abonnement waarmee de resourceprovider bepaalde acties kan uitvoeren, zoals het maken van resources. Zie Resourceprovider registreren voor meer informatie over de registratie van de resourceprovider.

  1. Als u meerdere Azure-abonnementen hebt, geeft u de relevante abonnements-id op:

    az account set --subscription <SUBSCRIPTION ID>
    
  2. Registreer de bronaanbieder Microsoft.RedHatOpenShift:

    az provider register -n Microsoft.RedHatOpenShift --wait
    
  3. Registreer de bronaanbieder Microsoft.Compute:

    az provider register -n Microsoft.Compute --wait
    
  4. Registreer de bronaanbieder Microsoft.Storage:

    az provider register -n Microsoft.Storage --wait
    
  5. Registreer de bronaanbieder Microsoft.Authorization:

    az provider register -n Microsoft.Authorization --wait
    

Een pull-geheim voor Red Hat ophalen (optioneel)

Opmerking

Het pull secret van Azure Red Hat OpenShift verandert de kosten van de Red Hat OpenShift-licentie niet.

Met een Red Hat-pull-geheim kan uw cluster toegang krijgen tot Red Hat-containerregisters, samen met andere inhoud, zoals operators van OperatorHub. Deze stap is optioneel, maar wordt aanbevolen. Als u besluit het pull-geheim later toe te voegen, volgt u deze richtlijnen. Het veld cloud.openshift.com wordt verwijderd uit uw geheim, zelfs als uw pull-geheim dat veld bevat. Dit veld maakt een extra bewakingsfunctie mogelijk, die gegevens naar RedHat verzendt en dus standaard is uitgeschakeld. Zie Externe statusrapportage inschakelen om deze functie in te schakelen.

  1. Navigeer naar uw Red Hat OpenShift-clusterbeheerportal en meld u aan.

    U moet zich aanmelden bij uw Red Hat-account of een nieuw Red Hat-account maken met uw zakelijke e-mailadres en de voorwaarden accepteren.

  2. Selecteer Download pull secret en download vervolgens een pull secret voor gebruik met uw Azure Red Hat OpenShift-cluster.

    Bewaar het opgeslagen bestand pull-secret.txt op een veilige plek. Het bestand wordt gebruikt bij het maken van elk cluster als u een cluster moet maken met voorbeelden of operators voor Red Hat of gecertificeerde partners.

    Wanneer u de opdracht az aro create uitvoert, kunt u verwijzen naar uw pull-geheim met behulp van de parameter --pull-secret @pull-secret.txt. Voer az aro create uit vanuit de map waarin u het pull-secret.txt-bestand hebt opgeslagen. Vervang anders @pull-secret.txt door @/path/to/my/pull-secret.txt.

    Als u uw pull-geheim kopieert of ernaar verwijst in andere scripts, moet uw pull-geheim worden opgemaakt als een geldige JSON-tekenreeks.

Een aangepast domein voorbereiden voor uw cluster (optioneel)

Wanneer u de opdracht az aro create uitvoert, kunt u een aangepast domein opgeven voor uw cluster, met behulp van de parameter --domain foo.example.com.

Opmerking

Het toevoegen van een domeinnaam is optioneel bij het maken van een cluster via Azure CLI. Een domeinnaam (of een voorvoegsel dat wordt gebruikt als onderdeel van de automatisch gegenereerde DNS-naam voor OpenShift-console en API-servers) is nodig bij het toevoegen van een cluster via de portal. Zie quickstart: Een Azure Red Hat OpenShift-cluster implementeren met behulp van Azure Portal voor meer informatie.

Als u een aangepast domein voor uw cluster opgeeft, moet u rekening houden met de volgende punten:

  • Nadat u het cluster hebt gemaakt, moet u twee DNS A-records aanmaken op uw DNS-server voor de --domain die is opgegeven.
    • API : wijst naar het IP-adres van de API-server
    • *.apps - wijzend naar het IP-adres voor inkomend verkeer
    • Haal deze waarden op door na het maken van het cluster de volgende opdracht uit te voeren: az aro show -n -g --query '{api:apiserverProfile.ip, ingress:ingressProfiles[0].ip}'.
  • De OpenShift-console is beschikbaar op een URL, zoals https://console-openshift-console.apps.example.com, in plaats van het ingebouwde domein https://console-openshift-console.apps.<random>.<location>.aroapp.io.
  • OpenShift maakt standaard gebruik van zelfondertekende certificaten voor alle routes die op *.apps.example.com voor aangepaste domeinen worden gemaakt. Als u ervoor kiest om aangepaste DNS te gebruiken nadat u verbinding hebt gemaakt met het cluster, moet u de OpenShift-documentatie volgen om een aangepaste CA te configureren voor uw ingangscontroller en een aangepaste CA voor uw API-server.

Installatie

U kunt Azure CLI of Bicep gebruiken om een Azure Red Hat OpenShift-cluster te implementeren met beheerde identiteiten.

Installeren met behulp van Azure CLI

In deze sectie wordt beschreven hoe u Azure CLI gebruikt om een Azure Red Hat OpenShift-cluster te maken met beheerde identiteiten.

Een virtueel netwerk met twee lege subnetten maken

Maak een virtueel netwerk met twee lege subnetten. Als u een bestaand virtueel netwerk hebt dat aan uw behoeften voldoet, kunt u deze stap overslaan.

Zie Netwerken voor Azure Red Hat OpenShift voor informatie over netwerken en vereisten.

  1. Stel de volgende variabelen in de shell-omgeving in waarin u de az opdrachten uitvoert.

    LOCATION=eastus                 # the location of your cluster
    RESOURCEGROUP=aro-rg            # the name of the resource group where you want to create your cluster
    CLUSTER=cluster                 # the name of your cluster
    
  2. Maak een resourcegroep.

    Een Azure-resourcegroep is een logische groep waarin Azure-resources worden geïmplementeerd en beheerd. Wanneer u een resourcegroep maakt, wordt u gevraagd een locatie op te geven. Op deze locatie worden metagegevens van de resourcegroep opgeslagen en waar uw resources worden uitgevoerd in Azure als u geen andere regio opgeeft tijdens het maken van resources. Maak een resourcegroep met de opdracht az group create.

    Opmerking

    Azure Red Hat OpenShift is niet beschikbaar in alle regio's waar een Azure-resourcegroep kan worden gemaakt. Zie Beschikbare regio's voor informatie over waar Azure Red Hat OpenShift wordt ondersteund.

    az group create \
      --location $LOCATION \
      --name $RESOURCEGROUP
    
  3. Maak een virtueel netwerk, master- en workersubnetten in dezelfde resourcegroep die u eerder hebt gemaakt.

    Azure Red Hat OpenShift-clusters vereisen een virtueel netwerk met twee lege subnetten voor de hoofd- en werkknooppunten. U kunt een nieuw virtueel netwerk maken of een bestaand virtueel netwerk gebruiken.

    az network vnet create \
       --resource-group $RESOURCEGROUP \
       --name aro-vnet \
       --address-prefixes 10.0.0.0/22
    
    az network vnet subnet create \
       --resource-group $RESOURCEGROUP \
       --vnet-name aro-vnet \
       --name master \
       --address-prefixes 10.0.0.0/23
    
    az network vnet subnet create \
       --resource-group $RESOURCEGROUP \
       --vnet-name aro-vnet \
       --name worker \
       --address-prefixes 10.0.2.0/23
    

De vereiste door de gebruiker toegewezen beheerde identiteiten maken

  1. Maak de volgende vereiste identiteiten. Azure Red Hat OpenShift vereist negen beheerde identiteiten, elk moet een toegewezen, ingebouwde rol hebben:

    • Zeven beheerde identiteiten met betrekking tot openshift-kernoperators.
    • Eén beheerde identiteit voor de Azure Red Hat OpenShift-serviceoperator.
    • Een andere identiteit voor het cluster om het gebruik van deze identiteiten mogelijk te maken.

    De onderdelen van de beheerde identiteit zijn:

    • OpenShift Image Afbeeldingsregister Operator (image-registry)
    • OpenShift-netwerkoperator (cloudnetwerkconfiguratie)
    • OpenShift Schijfopslagbeheerder (disk-csi-driver)
    • OpenShift Bestandsopslagoperator (file-csi-driver)
    • OpenShift-clusteringressoperator (inkomend verkeer)
    • OpenShift Cloud Controller Manager (cloudcontroller-manager)
    • OpenShift Machine API Operator (automatiseringsfunctie voor machines)
    • Azure Red Hat OpenShift-serviceoperator (aro-operator)

    Er zijn acht verschillende beheerde identiteiten en bijbehorende ingebouwde rollen die de machtigingen vertegenwoordigen die nodig zijn voor elk onderdeel van Azure Red Hat OpenShift om zijn taken uit te voeren. Daarnaast vereist het platform één andere identiteit, de clusteridentiteit, om federatieve referenties te maken voor de eerder vermelde beheerde identiteitsonderdelen (aro-cluster).

    Zie de naslaginformatie over Clusteroperators voor Red Hat OpenShift voor meer informatie over Red Hat OpenShift-clusteroperators.

    Zie Inzicht in beheerde identiteiten in Azure Red Hat OpenShift voor meer informatie over beheerde identiteiten in Azure Red Hat OpenShift.

    Maak de vereiste identiteiten:

    az identity create \
    --resource-group $RESOURCEGROUP \
    --name aro-cluster
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name cloud-controller-manager
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name ingress
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name machine-api
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name disk-csi-driver
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name cloud-network-config
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name image-registry
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name file-csi-driver
    
    az identity create \
    --resource-group $RESOURCEGROUP \
    --name aro-operator
    
  2. Maak de vereiste roltoewijzingen voor elke operatoridentiteit, clusteridentiteit en de service-principal van de eerste partij.

    Opmerking

    In dit artikel wordt ervan uitgegaan dat alleen hoofd- en werksubnetten aanwezig zijn. Als u tijdens de installatie meer clustersubnetten hebt geconfigureerd, moet u het bereik van roltoewijzing toewijzen aan die subnetten, voor operators waarvoor dit is vereist.

    Bij de volgende roltoewijzingen voor hoofd- en werksubnetten wordt ervan uitgegaan dat er geen netwerkbeveiligingsgroep (NSG), routetabel of NAT-gateway (Network Address Translation) is gekoppeld. Als u een van deze netwerkresources naar de installatie brengt, moet u meer roltoewijzingen maken die operatoridentiteitsmachtigingen verlenen voor deze extra netwerkresources. Voor elke operator waarvoor een roltoewijzing is vereist voor de volgende subnetten of het virtuele netwerk, is er ook een roltoewijzing vereist voor de extra netwerkresource.

    SUBSCRIPTION_ID=$(az account show --query 'id' -o tsv)
    
    # assign cluster identity permissions over identities previously created
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aro-operator"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cloud-controller-manager"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ingress"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/machine-api"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/disk-csi-driver"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cloud-network-config"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/image-registry"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-cluster --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/ef318e2a-8334-4a05-9e4a-295a196c6a6e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/file-csi-driver"
    
    # assign vnet-level permissions for operators that require it, and subnets-level permission for operators that require it
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name cloud-controller-manager --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/a1f96423-95ce-4224-ab27-4e3dc72facd4" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/master"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name cloud-controller-manager --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/a1f96423-95ce-4224-ab27-4e3dc72facd4" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/worker"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name ingress --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/0336e1d3-7a87-462b-b6db-342b63f7802c" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/master"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name ingress --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/0336e1d3-7a87-462b-b6db-342b63f7802c" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/worker"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name machine-api --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/0358943c-7e01-48ba-8889-02cc51d78637" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/master"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name machine-api --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/0358943c-7e01-48ba-8889-02cc51d78637" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/worker"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name cloud-network-config --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/be7a6435-15ae-4171-8f30-4a343eff9e8f" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name file-csi-driver --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/0d7aedc0-15fd-4a67-a412-efad370c947e" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name image-registry --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/8b32b316-c2f5-4ddf-b05b-83dacd2d08b5" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-operator --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/4436bae4-7702-4c84-919b-c4069ff25ee2" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/master"
    
    az role assignment create \
        --assignee-object-id "$(az identity show --resource-group $RESOURCEGROUP --name aro-operator --query principalId -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/4436bae4-7702-4c84-919b-c4069ff25ee2" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet/subnets/worker"
    
    az role assignment create \
        --assignee-object-id "$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query '[0].id' -o tsv)" \
        --assignee-principal-type ServicePrincipal \
        --role "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7" \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCEGROUP/providers/Microsoft.Network/virtualNetworks/aro-vnet"
    

Het cluster maken

Als u een cluster wilt maken, voert u de volgende opdracht uit onder de opties. Als u een van de volgende opties wilt gebruiken, wijzigt u de opdracht dienovereenkomstig:

  • Optie 1: U kunt uw Red Hat-pull-geheim doorgeven, zodat uw cluster samen met andere inhoud toegang heeft tot Red Hat-containerregisters. Voeg het argument --pull-secret @pull-secret.txt toe aan de opdracht.
  • Optie 2: U kunt een aangepast domein gebruiken. Voeg het argument --domain foo.example.com toe aan de opdracht, en vervang foo.example.com door uw eigen aangepaste domein.

Maak het cluster met de vereiste omgevingsvariabelen. Voor elke --assign-platform-workload-identity vlag vertegenwoordigt het eerste argument de sleutel, waarmee de Azure Red Hat OpenShift-resourceprovider aangeeft welke OpenShift-operator moet worden gebruikt voor een bepaalde identiteit. Het tweede argument vertegenwoordigt de verwijzing naar de identiteit zelf.

az aro create \
    --resource-group $RESOURCEGROUP \
    --name $CLUSTER \
    --vnet aro-vnet \
    --master-subnet master \
    --worker-subnet worker \
    --version <VERSION> \
    --enable-managed-identity \
    --assign-cluster-identity aro-cluster \
    --assign-platform-workload-identity file-csi-driver file-csi-driver \
    --assign-platform-workload-identity cloud-controller-manager cloud-controller-manager \
    --assign-platform-workload-identity ingress ingress \
    --assign-platform-workload-identity image-registry image-registry \
    --assign-platform-workload-identity machine-api machine-api \
    --assign-platform-workload-identity cloud-network-config cloud-network-config \
    --assign-platform-workload-identity aro-operator aro-operator \
    --assign-platform-workload-identity disk-csi-driver disk-csi-driver

Als er identiteitsresources in een andere regio of resourcegroep bestaan, kunt u volledige resource-id's doorgeven om te maken. Zie het volgende voorbeeld:

az aro create \
    --resource-group $RESOURCEGROUP \
    --name $CLUSTER \
    --vnet aro-vnet \
    --master-subnet master \
    --worker-subnet worker \
    --version <VERSION> \
    --enable-managed-identity \
    --assign-cluster-identity /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aro-cluster \
    --assign-platform-workload-identity file-csi-driver /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/file-csi-driver \
    --assign-platform-workload-identity cloud-controller-manager /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cloud-controller-manager \
    --assign-platform-workload-identity ingress /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ingress \
    --assign-platform-workload-identity image-registry /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/image-registry \
    --assign-platform-workload-identity machine-api /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/machine-api \
    --assign-platform-workload-identity cloud-network-config /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/cloud-network-config \
    --assign-platform-workload-identity aro-operator /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aro-operator \
    --assign-platform-workload-identity disk-csi-driver /subscriptions/$SUBSCRIPTION_ID/resourcegroups/$RESOURCEGROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/disk-csi-driver

Een andere Versie van Azure Red Hat OpenShift selecteren

U kunt ervoor kiezen om een specifieke versie van Azure Red Hat OpenShift te gebruiken bij het maken van uw cluster. Gebruik eerst de CLI om query's uit te voeren op beschikbare Versies van Azure Red Hat OpenShift:

az aro get-versions --location <REGION>

Zodra de versie is gekozen, geeft u deze op met behulp van de --version parameter in de az aro create opdracht.

Installeren met Bicep

In deze sectie wordt beschreven hoe u Bicep gebruikt om een Azure Red Hat OpenShift-cluster te maken met beheerde identiteiten.

  1. Sla de Bicep-voorbeeldsjabloon (na stap 5) op in een bestand.

  2. Stel de volgende variabelen in de shell-omgeving in die u van plan bent om de az opdrachten uit te voeren.

    LOCATION=eastus                     # the location of your cluster
    RESOURCEGROUP=aro-rg                # the name of the resource group where you want to create your cluster
    CLUSTER=cluster                     # the name of your cluster
    VERSION=4.15.35                     # the version of the cluster
    PULL_SECRET=$(cat pull-secret.txt)  # the Red Hat pull secret JSON, provided as file or string
    
  3. Maak een resourcegroep aan om de clusterresource, het virtuele clusternetwerk en clusteridentiteiten te beheren.

    az group create --name $RESOURCEGROUP --location $LOCATION
    
  4. Controleer voor de resourceprovider de id van het service-principal-object van de eerste partij voor uw abonnement.

    ARO_RP_SP_OBJECT_ID=$(az ad sp list --display-name "Azure Red Hat OpenShift RP" --query '[0].id' -o tsv)
    
  5. Pas de Bicep-sjabloon toe:

    az deployment group create \
        --name aroDeployment \
        --resource-group $RESOURCEGROUP \
        --template-file azuredeploy.bicep \
        --parameters location=$LOCATION \
        --parameters version=$VERSION \
        --parameters clusterName=$CLUSTER \
        --parameters rpObjectId=$ARO_RP_SP_OBJECT_ID
        (--parameters domain=$DOMAIN) \ #optional
        (--parameters pullSecret=$PULL_SECRET) # optional
    

Voorbeeld van Bicep-sjabloon

Opmerking

In dit artikel wordt ervan uitgegaan dat alleen hoofd- en werksubnetten aanwezig zijn. Als u tijdens de installatie meer clustersubnetten hebt geconfigureerd, moet u het bereik van roltoewijzing toewijzen aan die subnetten, voor operators waarvoor dit is vereist.

Bij de volgende roltoewijzingen voor hoofd- en werksubnetten wordt ervan uitgegaan dat er geen netwerkbeveiligingsgroep (NSG), routetabel of NAT-gateway (Network Address Translation) is gekoppeld. Als u een van deze netwerkresources naar de installatie brengt, moet u meer roltoewijzingen maken die operatoridentiteitsmachtigingen verlenen voor deze extra netwerkresources. Voor elke operator waarvoor een roltoewijzing is vereist voor de volgende subnetten of het virtuele netwerk, is er ook een roltoewijzing vereist voor de extra netwerkresource.

@description('Location')
param location string = resourceGroup().location

@description('Domain Prefix')
param domain string

@description('Version of the OpenShift cluster')
param version string

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

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

@description('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('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('Api Server Visibility')
@allowed([
 'Private'
 'Public'
])
param apiServerVisibility string = 'Public'

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

@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 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 vnet 'Microsoft.Network/virtualNetworks@2023-06-01' = {
 name: clusterVnetName
 location: location
 properties: {
   addressSpace: { addressPrefixes: [ clusterVnetCidr ] }
   subnets: [
     {
       name: 'master'
       properties: {
         addressPrefixes: [ masterSubnetCidr ]
         serviceEndpoints: [ { service: 'Microsoft.ContainerRegistry' } ]
       }
     }
     {
       name: 'worker'
       properties: {
         addressPrefixes: [ workerSubnetCidr ]
         serviceEndpoints: [ { service: 'Microsoft.ContainerRegistry' } ]
       }
     }
   ]
 }
}

resource workerSubnet 'Microsoft.Network/virtualNetworks/subnets@2020-08-01' existing = {
 parent: vnet
 name: 'worker'
}

resource masterSubnet 'Microsoft.Network/virtualNetworks/subnets@2020-08-01' existing = {
 parent: vnet
 name: 'master'
}

// create required identities

resource cloudControllerManager 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'cloud-controller-manager'
   location: location
}

resource ingress 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'ingress'
   location: location
}

resource machineApi 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'machine-api'
   location: location
}

resource diskCsiDriver 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'disk-csi-driver'
   location: location
}

resource cloudNetworkConfig 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'cloud-network-config'
   location: location
}

resource imageRegistry 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'image-registry'
   location: location
}

resource fileCsiDriver 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'file-csi-driver'
   location: location
}

resource aroOperator 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'aro-operator'
   location: location
}

resource clusterMsi 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
   name: 'cluster'
   location: location
}

// create required role assignments on vnet / subnets

resource cloudControllerManagerMasterSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(masterSubnet.id, 'cloud-controller-manager')
   scope: masterSubnet
   properties: {
       principalId: cloudControllerManager.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a1f96423-95ce-4224-ab27-4e3dc72facd4')
       principalType: 'ServicePrincipal'
   }
}

resource cloudControllerManagerWorkerSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
 name: guid(workerSubnet.id, 'cloud-controller-manager')
 scope: workerSubnet
 properties: {
     principalId: cloudControllerManager.properties.principalId
     roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'a1f96423-95ce-4224-ab27-4e3dc72facd4')
     principalType: 'ServicePrincipal'
 }
}

resource ingressMasterSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(masterSubnet.id, 'ingress')
   scope: masterSubnet
   properties: {
       principalId: ingress.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0336e1d3-7a87-462b-b6db-342b63f7802c')
       principalType: 'ServicePrincipal'
   }
}

resource ingressWorkerSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
 name: guid(workerSubnet.id, 'ingress')
 scope: workerSubnet
 properties: {
     principalId: ingress.properties.principalId
     roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0336e1d3-7a87-462b-b6db-342b63f7802c')
     principalType: 'ServicePrincipal'
 }
}

resource machineApiMasterSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(masterSubnet.id, 'machine-api')
   scope: masterSubnet
   properties: {
       principalId: machineApi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0358943c-7e01-48ba-8889-02cc51d78637')
       principalType: 'ServicePrincipal'
   }
}

resource machineApiWorkerSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(workerSubnet.id, 'machine-api')
   scope: workerSubnet
   properties: {
       principalId: machineApi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0358943c-7e01-48ba-8889-02cc51d78637')
       principalType: 'ServicePrincipal'
   }
}

resource cloudNetworkConfigVnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(vnet.id, 'cloud-network-config')
   scope: vnet
   properties: {
       principalId: cloudNetworkConfig.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'be7a6435-15ae-4171-8f30-4a343eff9e8f')
       principalType: 'ServicePrincipal'
   }
}

resource fileCsiDriverVnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(vnet.id, 'file-csi-driver')
   scope: vnet
   properties: {
       principalId: fileCsiDriver.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '0d7aedc0-15fd-4a67-a412-efad370c947e')
       principalType: 'ServicePrincipal'
   }
}

resource imageRegistryVnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(vnet.id, 'image-registry')
   scope: vnet
   properties: {
       principalId: imageRegistry.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '8b32b316-c2f5-4ddf-b05b-83dacd2d08b5')
       principalType: 'ServicePrincipal'
   }
}

resource aroOperatorMasterSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(masterSubnet.id, 'aro-operator')
   scope: masterSubnet
   properties: {
       principalId: aroOperator.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4436bae4-7702-4c84-919b-c4069ff25ee2')
       principalType: 'ServicePrincipal'
   }
}

resource aroOperatorWorkerSubnetRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
 name: guid(workerSubnet.id, 'aro-operator')
 scope: workerSubnet
 properties: {
     principalId: aroOperator.properties.principalId
     roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4436bae4-7702-4c84-919b-c4069ff25ee2')
     principalType: 'ServicePrincipal'
 }
}

// create required role assignments on cluster MSI

resource clusterMsiRoleAssignmentCloudControllerManager 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(cloudControllerManager.id, 'cluster')
   scope: cloudControllerManager
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentIngress 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(ingress.id, 'cluster')
   scope: ingress
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentMachineApi 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(machineApi.id, 'cluster')
   scope: machineApi
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentDiskCsiDriver 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(diskCsiDriver.id, 'cluster')
   scope: diskCsiDriver
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentCloudNetworkConfig 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(cloudNetworkConfig.id, 'cluster')
   scope: cloudNetworkConfig
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentCloudImageRegistry 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(imageRegistry.id, 'cluster')
   scope: imageRegistry
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentCloudFileCsiDriver 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(fileCsiDriver.id, 'cluster')
   scope: fileCsiDriver
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

resource clusterMsiRoleAssignmentCloudAroOperator 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(aroOperator.id, 'cluster')
   scope: aroOperator
   properties: {
       principalId: clusterMsi.properties.principalId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'ef318e2a-8334-4a05-9e4a-295a196c6a6e')
       principalType: 'ServicePrincipal'
   }
}

// create first party role assignment over the vnet

resource fpspRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
   name: guid(vnet.id, rpObjectId)
   scope: vnet
   properties: {
       principalId: rpObjectId
       roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')
       principalType: 'ServicePrincipal'
   }
}

// create cluster

resource cluster 'Microsoft.RedHatOpenShift/openShiftClusters@2024-08-12-preview' = {
   name: clusterName
   location: location
   properties: {
       clusterProfile: {
           domain: domain
           #disable-next-line use-resource-id-functions
           resourceGroupId: resourceGroupId
           version: version
           fipsValidatedModules: fips
           pullSecret: pullSecret
       }
       networkProfile: {podCidr: podCidr, serviceCidr: serviceCidr}
       masterProfile: {
           vmSize: masterVmSize
           subnetId: masterSubnetId
           encryptionAtHost: masterEncryptionAtHost
       }
       workerProfiles: [{
           name: 'worker'
           count: 3
           diskSizeGB: workerVmDiskSize
           vmSize: workerVmSize
           subnetId: workerSubnetId
           encryptionAtHost: workerEncryptionAtHost
       }]
       apiserverProfile: {visibility: apiServerVisibility}
       ingressProfiles: [{name: 'default', visibility: ingressVisibility}]
       platformWorkloadIdentityProfile: {
           platformWorkloadIdentities: {
               'cloud-controller-manager': {resourceId: cloudControllerManager.id}
               ingress: {resourceId: ingress.id}
               'machine-api': {resourceId: machineApi.id}
               'disk-csi-driver': {resourceId: diskCsiDriver.id}
               'cloud-network-config': {resourceId: cloudNetworkConfig.id}
               'image-registry': {resourceId: imageRegistry.id}
               'file-csi-driver': {resourceId: fileCsiDriver.id}
               'aro-operator': {resourceId: aroOperator.id}
           }
       }
   }
   identity: {
       type: 'UserAssigned'
       userAssignedIdentities: {
           '${clusterMsi.id}': {}
       }
   }
}

Schoonmaken

Voer de volgende opdracht uit om een beheerd identiteitscluster te verwijderen:

az aro delete -n $CLUSTER -g $RESOURCEGROUP

Met deze verwijderopdracht worden de door het cluster toegewezen beheerde identiteiten die zijn gemaakt als onderdeel van de installatie niet opgeschoond. U moet de identiteiten en roltoewijzingen handmatig verwijderen.