Quickstart: Verbinding maken kubernetes-cluster maken om een Azure Arc

In deze quickstart leert u de voordelen van kubernetes met Azure Arc-functie en leert u hoe u een bestaand Kubernetes-cluster verbindt met Azure Arc. Zie het artikel kubernetes-agentarchitectuurmet Azure Arc voor een conceptueel artikel over het Azure Arc van clusters met meerdere clusters.

Als u geen Azure-abonnement hebt, maakt u een gratis account voordat u begint.

Vereisten

  • Azure CLI installeren of upgraden naar versie >= 2.16.0

  • Installeer de Azure CLI-extensie connectedk8s van versie >= 1.2.0:

    az extension add --name connectedk8s
    
  • Meld u aan bij Azure CLI met behulp van de identiteit (gebruiker of service-principal) die u wilt gebruiken om uw cluster te verbinden met Azure Arc.

    • De identiteit die wordt gebruikt, moet ten minste de machtigingen Lezen en Schrijven hebben voor het kubernetes-resourcetype Azure Arc kubernetes Microsoft.Kubernetes/connectedClusters ().
    • De ingebouwde rol Kubernetes Cluster - Azure Arc Onboarding is handig voor onboarding op schaal, omdat het de gedetailleerde machtigingen heeft die nodig zijn om clusters alleen te verbinden met Azure Arc. Deze rol heeft niet de machtigingen om andere clusters of andere Azure-resources bij te werken, te verwijderen of te wijzigen.
  • Een actief Kubernetes-cluster. Als u nog geen cluster hebt, kunt u een cluster maken met behulp van een van de volgende opties:

    • Kubernetes in Docker (KIND)

    • Een Kubernetes-cluster maken met Docker voor Mac of Windows

    • Zelf-beheerd Kubernetes-cluster met cluster-API

    • Als u een OpenShift-cluster wilt verbinden met Azure Arc, moet u de volgende opdracht slechts eenmaal in uw cluster uitvoeren voordat u az connectedk8s connect uitvoert:

      oc adm policy add-scc-to-user privileged system:serviceaccount:azure-arc:azure-arc-kube-aad-proxy-sa
      

    Notitie

    Het cluster moet ten minste één knooppunt van het besturingssysteem en architectuurtype linux/amd64 hebben. Clusters met alleen linux/arm64 knooppunten worden nog niet ondersteund.

  • Een kubeconfig bestand en context die naar uw cluster wijzen.

Voldoen aan netwerkvereisten

Belangrijk

Azure Arc agents moeten de volgende uitgaande URL's op https://:443 werken. Voor moet websockets zijn ingeschakeld voor uitgaande toegang op *.servicebus.windows.net de firewall en proxy.

Eindpunt (DNS) Beschrijving
https://management.azure.com (voor Azure Cloud), https://management.usgovcloudapi.net (voor Azure US Government) Vereist om de agent verbinding te laten maken met Azure en het cluster te registreren.
https://<region>.dp.kubernetesconfiguration.azure.com (voor Azure Cloud), https://<region>.dp.kubernetesconfiguration.azure.us (voor Azure US Government) Het eindpunt van de gegevensvlak voor de agent om de status te pushen en configuratiegegevens op te halen.
https://login.microsoftonline.com, login.windows.net (voor Azure Cloud), https://login.microsoftonline.us (voor Azure US Government) Vereist voor het ophalen en bijwerken Azure Resource Manager tokens.
https://mcr.microsoft.com, https://*.data.mcr.microsoft.com Vereist voor het pullen van containerafbeeldingen Azure Arc agents.
https://gbl.his.arc.azure.com (voor Azure Cloud), https://gbl.his.arc.azure.us (voor Azure US Government) Vereist om het regionale eindpunt op te halen voor het binnenhalen van door het systeem toegewezen beheerde identiteitscertificaten.
https://*.his.arc.azure.com (voor Azure Cloud), https://usgv.his.arc.azure.us (voor Azure US Government) Vereist voor het pullen van door het systeem toegewezen beheerde identiteitscertificaten.
*.servicebus.windows.net, guestnotificationservice.azure.com, *.guestnotificationservice.azure.com, sts.windows.net Voor Cluster Verbinding maken voor scenario's op basis van aangepaste locatie.
https://k8connecthelm.azureedge.net az connectedk8s connect gebruikt Helm 3 voor het implementeren Azure Arc agents op het Kubernetes-cluster. Dit eindpunt is nodig voor het downloaden van de Helm-client om de implementatie van de Helm-grafiek van de agent mogelijk te maken.

1. Providers registreren Azure Arc Kubernetes met ingeschakelde service

  1. Voer de volgende opdrachten in:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    
  2. Controleer het registratieproces. De registratie kan maximaal 10 minuten duren.

    az provider show -n Microsoft.Kubernetes -o table
    az provider show -n Microsoft.KubernetesConfiguration -o table
    az provider show -n Microsoft.ExtendedLocation -o table
    

    Na de registratie ziet u dat de RegistrationState status van deze naamruimten wordt gewijzigd in Registered .

2. Een resourcegroep maken

Voer de volgende opdracht uit:

az group create --name AzureArcTest --location EastUS --output table

Uitvoer:

Location    Name
----------  ------------
eastus      AzureArcTest

3. Verbinding maken kubernetes-cluster maken

Voer de volgende opdracht uit:

az connectedk8s connect --name AzureArcTest1 --resource-group AzureArcTest

Notitie

Als u bent aangemeld bij Azure CLI met behulp van een service-principal, moet er een extra parameter worden ingesteld voor het inschakelen van de functie voor aangepaste locatie in het cluster.

Uitvoer:

Helm release deployment succeeded

    {
      "aadProfile": {
        "clientAppId": "",
        "serverAppId": "",
        "tenantId": ""
      },
      "agentPublicKeyCertificate": "xxxxxxxxxxxxxxxxxxx",
      "agentVersion": null,
      "connectivityStatus": "Connecting",
      "distribution": "gke",
      "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1",
      "identity": {
        "principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "type": "SystemAssigned"
      },
      "infrastructure": "gcp",
      "kubernetesVersion": null,
      "lastConnectivityTime": null,
      "location": "eastus",
      "managedIdentityCertificateExpirationTime": null,
      "name": "AzureArcTest1",
      "offering": null,
      "provisioningState": "Succeeded",
      "resourceGroup": "AzureArcTest",
      "tags": {},
      "totalCoreCount": null,
      "totalNodeCount": null,
      "type": "Microsoft.Kubernetes/connectedClusters"
    }

Tip

Met de bovenstaande opdracht zonder de opgegeven locatieparameter wordt Azure Arc Kubernetes-resource gemaakt op dezelfde locatie als de resourcegroep. Als u de Azure Arc Kubernetes-resource op een andere locatie wilt maken, geeft u of op --location <region> bij het uitvoeren van de -l <region> az connectedk8s connect opdracht.

4a. Verbinding maken een uitgaande proxyserver gebruiken

Als uw cluster zich achter een uitgaande proxyserver, moeten Azure CLI en de kubernetes-agents met Azure Arc-ondersteuning hun aanvragen doorverzenden via de uitgaande proxyserver.

  1. Stel de omgevingsvariabelen in die azure CLI nodig heeft om de uitgaande proxyserver te gebruiken:

    export HTTP_PROXY=<proxy-server-ip-address>:<port>
    export HTTPS_PROXY=<proxy-server-ip-address>:<port>
    export NO_PROXY=<cluster-apiserver-ip-address>:<port>
    
  2. Voer de verbindingsopdracht uit met de opgegeven proxyparameters:

    az connectedk8s connect --name <cluster-name> --resource-group <resource-group> --proxy-https https://<proxy-server-ip-address>:<port> --proxy-http http://<proxy-server-ip-address>:<port> --proxy-skip-range <excludedIP>,<excludedCIDR> --proxy-cert <path-to-cert-file>
    

    Notitie

    • Sommige netwerkaanvragen, zoals aanvragen met in-cluster service-naar-service-communicatie, moeten worden gescheiden van het verkeer dat via de proxyserver wordt doorgeleid voor uitgaande communicatie. De parameter kan worden gebruikt om het CIDR-bereik en de eindpunten op een door komma's gescheiden manier op te geven, zodat communicatie van de agents naar deze eindpunten niet via de uitgaande --proxy-skip-range proxy gaat. Het CIDR-bereik van de services in het cluster moet minimaal worden opgegeven als waarde voor deze parameter. Stel bijvoorbeeld dat een lijst met services retourneert waarin alle kubectl get svc -A services ClusterIP-waarden in het bereik 10.0.0.0/16 hebben. Vervolgens is de waarde die moet worden --proxy-skip-range opgegeven voor 10.0.0.0/16,kubernetes.default.svc,.svc.cluster.local,.svc .
    • --proxy-http, --proxy-https en worden verwacht voor de meeste uitgaande --proxy-skip-range proxyomgevingen. --proxy-cert is alleen vereist als u vertrouwde certificaten die worden verwacht door de proxy, moet injecteren in het vertrouwde certificaatopslag van agentpods.
    • De uitgaande proxy moet worden geconfigureerd om websocket-verbindingen toe te staan.

5. Clusterverbinding controleren

Voer de volgende opdracht uit:

az connectedk8s list --resource-group AzureArcTest --output table

Uitvoer:

Name           Location    ResourceGroup
-------------  ----------  ---------------
AzureArcTest1  eastus      AzureArcTest

Notitie

Na het onboarden van het cluster duurt het ongeveer 5 tot 10 minuten voordat de metagegevens van het cluster (clusterversie, agentversie, aantal knooppunten, enzovoort) worden weergegeven op de overzichtspagina van de Kubernetes-resource met Azure Arc-functie in Azure Portal.

6. De Azure Arc voor Kubernetes weergeven

Azure Arc kubernetes met ingeschakelde functie implementeert een aantal operators in de azure-arc naamruimte.

  1. Bekijk deze implementaties en pods met behulp van:

    kubectl get deployments,pods -n azure-arc
    
  2. Controleer of alle pods een status Running hebben.

    Uitvoer:

    
     NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
     deployment.apps/cluster-metadata-operator   1/1     1            1           13d
     deployment.apps/clusterconnect-agent        1/1     1            1           13d
     deployment.apps/clusteridentityoperator     1/1     1            1           13d
     deployment.apps/config-agent                1/1     1            1           13d
     deployment.apps/controller-manager          1/1     1            1           13d
     deployment.apps/extension-manager           1/1     1            1           13d
     deployment.apps/flux-logs-agent             1/1     1            1           13d
     deployment.apps/kube-aad-proxy              1/1     1            1           13d
     deployment.apps/metrics-agent               1/1     1            1           13d
     deployment.apps/resource-sync-agent         1/1     1            1           13d
    
     NAME                                            READY   STATUS    RESTARTS   AGE
     pod/cluster-metadata-operator-9568b899c-2stjn   2/2     Running   0          13d
     pod/clusterconnect-agent-576758886d-vggmv       3/3     Running   0          13d
     pod/clusteridentityoperator-6f59466c87-mm96j    2/2     Running   0          13d
     pod/config-agent-7cbd6cb89f-9fdnt               2/2     Running   0          13d
     pod/controller-manager-df6d56db5-kxmfj          2/2     Running   0          13d
     pod/extension-manager-58c94c5b89-c6q72          2/2     Running   0          13d
     pod/flux-logs-agent-6db9687fcb-rmxww            1/1     Running   0          13d
     pod/kube-aad-proxy-67b87b9f55-bthqv             2/2     Running   0          13d
     pod/metrics-agent-575c565fd9-k5j2t              2/2     Running   0          13d
     pod/resource-sync-agent-6bbd8bcd86-x5bk5        2/2     Running   0          13d
     

Een conceptueel overzicht van deze agents is hier beschikbaar.

7. Resources ops schonen

U kunt de Azure Arc Kubernetes-resource, alle bijbehorende configuratieresources en eventuele agents die op het cluster worden uitgevoerd, verwijderen met behulp van Azure CLI met behulp van de volgende opdracht:

az connectedk8s delete --name AzureArcTest1 --resource-group AzureArcTest

Notitie

Als u de Kubernetes-resource Azure Arc ingeschakeld verwijdert met behulp van Azure Portal, worden alle bijbehorende configuratieresources verwijderd, maar worden er geen agents verwijderd die op het cluster worden uitgevoerd. De best practice is om de kubernetes-resource Azure Arc te verwijderen met in plaats az connectedk8s delete van Azure Portal.

Volgende stappen

Ga naar het volgende artikel voor meer informatie over het implementeren van configuraties in uw verbonden Kubernetes-cluster met behulp van GitOps.