Condividi tramite


Avvio rapido: distribuire l'estensione Arc del registro connesso (anteprima)

In questo avvio rapido si apprenderà come distribuire l'estensione Arc del registro connesso tramite l'esperienza utente dell'interfaccia della riga di comando con impostazioni di sicurezza predefinite per garantire una sicurezza e un'integrità operativa affidabili.

Il registro connesso è uno strumento fondamentale per i clienti perimetrali, consentendo una gestione efficiente e l'accesso ai carichi di lavoro in contenitori, sia in locale che in siti remoti. Grazie all'integrazione con Azure Arc, il servizio garantisce un'esperienza di gestione del ciclo di vita senza problemi e unificata per i carichi di lavoro in contenitori basati su Kubernetes. La distribuzione dell'estensione Arc del Registro di sistema connessa nei cluster Kubernetes abilitati per Arc semplifica la gestione e l'accesso di questi carichi di lavoro.

Prerequisiti

  • Configurare l'interfaccia della riga di comando di Azure per connettersi ad Azure e Kubernetes.

  • Creare o usare un Registro Azure Container (ACR) esistente con avvio rapido.

  • Configurare l'accesso e la comunicazione del firewall tra Registro Azure Container e il registro connesso abilitando gli endpoint dati dedicati.

  • Creare o usare un cluster Azure KubernetesService (AKS) esistente con questa esercitazione.

  • Configurare la connessione tra Kubernetescluster e Azure Arc seguendo l'avvio rapido.

  • Usare il comando k8s-extension per gestire Kubernetesextensions.

    az extension add --name k8s-extension
    
  • Registrare i provider di risorse di Azure necessari nella sottoscrizione e usare Kubernetes abilitato per Azure Arc:

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    

    Un provider di risorse di Azure è un set di operazioni REST che consentono la funzionalità per un servizio di Azure specifico.

  • Repository nel Registro Azure Container per la sincronizzazione con il registro connesso.

    az acr import --name myacrregistry --source mcr.microsoft.com/mcr/hello-world:latest --image hello-world:latest
    

    Il repository hello-world viene creato nel Registro Azure Container myacrregistry per la sincronizzazione con il registro connesso.

Distribuire l'estensione Arc del registro connesso con impostazioni sicure per impostazione predefinita

Una volta soddisfatti i prerequisiti, le condizioni e i componenti necessari, seguire l'approccio semplificato per distribuire in modo sicuro un'estensione del registro connesso in un cluster Kubernetes abilitato per Arc usando le seguenti impostazioni. Queste impostazioni definiscono la configurazione seguente con HTTPS, Sola lettura, Distribuzione attendibile e il servizio Gestore certificati. Seguire la procedura per una distribuzione di successo:

  1. Creare il registro connesso.
  2. Distribuire l'estensione Arc del registro connesso.
  3. Verificare la distribuzione dell'estensione del registro connesso.
  4. Distribuire un pod che usa un'immagine dal registro connesso.

Creare il registro connesso e eseguire la sincronizzazione con il Registro Azure Container

La creazione del registro connesso per la sincronizzazione con il Registro Azure Container è il passaggio fondamentale per la distribuzione dell'estensione Arc del registro connesso.

  1. Creare il registro connesso, che viene sincronizzato con il Registro Azure Container:

    Per creare un registro connesso myconnectedregistry che si sincronizzi con il Registro Azure Container myacrregistry nel gruppo di risorse myresourcegroup e nel repository hello-world, è possibile eseguire il comando az acr connected-registry create:

    az acr connected-registry create --registry myacrregistry \ 
    --name myconnectedregistry \
    --resource-group myresourcegroup \ 
    --repository "hello-world"
    
  • Il comando az acr connected-registry create crea il registro connesso con il repository specificato.
  • Il comando az acr connected-registry create sovrascrive le azioni se esiste la mappa dell'ambito di sincronizzazione denominata myscopemap e sovrascrive le proprietà se esiste il token di sincronizzazione denominato mysynctoken.
  • Il comando az acr connected-registry create convalida un endpoint dati dedicato durante la creazione del registro connesso e fornisce un comando per abilitare l'endpoint dati dedicato nel Registro Azure Container.

Distribuire l'estensione Arc del registro connesso nel cluster Kubernetes abilitato per Arc

Distribuendo l'estensione Arc connessa del registro connesso, è possibile sincronizzare le immagini del contenitore e altri artefatti OCI (Open Container Initiative) con il Registro Azure Container. La distribuzione consente di velocizzare l'accesso agli artefatti del registro e consente la creazione di scenari avanzati. La distribuzione dell'estensione garantisce una distribuzione sicura del trust tra il registro connesso e tutti i nodi client all'interno del cluster e installa il servizio cert-manager per la crittografia TLS (Transport Layer Security).

  1. Generare la stringa di connessione e il file JSON delle impostazioni protette

    Per una distribuzione sicura dell'estensione del registro connesso, generare la stringa di connessione, inclusa una nuova password, il protocollo di trasporto e creare il file di protected-settings-extension.json necessario per la distribuzione dell'estensione con il comando az acr connected-registry get-settings:

    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    echo "{\"connectionString\":\"$(az acr connected-registry get-settings \
    --name myconnectedregistry \
    --registry myacrregistry \
    --parent-protocol https \
    --generate-password 1 \
    --query ACR_REGISTRY_CONNECTION_STRING \
    --output tsv \
    --yes | tr -d '\r')\" }" > settings.json

Nota

I comandi cat e echo creano il file protected-settings-extension.json con i dettagli della stringa di connessione, inserendo il contenuto della stringa di connessione nel file protected-settings-extension.json, un passaggio necessario per la distribuzione dell'estensione. Il comando az acr connected-registry get-settings genera la stringa di connessione, inclusa la creazione di una nuova password e la specifica del protocollo di trasporto.

  1. Distribuire l'estensione del registro connesso

    Distribuire l'estensione del registro connesso con i dettagli di configurazione specificati usando il comando az k8s-extension create:

  az k8s-extension create --cluster-name myarck8scluster \ 
  --cluster-type connectedClusters \
  --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \
  --name myconnectedregistry \
  --resource-group myresourcegroup \ 
  --config service.clusterIP=192.100.100.1 \ 
  --config-protected-file protected-settings-extension.json  
  • Il comando az k8s-extension create distribuisce l'estensione del registro connesso in Kubernetescluster con i parametri di configurazione specificati e il file di impostazioni protette.
  • Garantisce una distribuzione sicura del trust tra il registro connesso e tutti i nodi client all'interno del cluster e installa il servizio cert-manager per la crittografia TLS (Transport Layer Security).
  • Il clusterIP deve essere compreso nell'intervallo IP della subnet del cluster del servizio Azure Kubernetes. Il parametro service.clusterIP specifica l'indirizzo IP del servizio di registro connesso all'interno del cluster. È essenziale impostare service.clusterIP all'interno dell'intervallo di indirizzi IP di servizio validi per Kubernetescluster. Assicurarsi che l'indirizzo IP specificato per service.clusterIP rientri nell'intervallo IP del servizio designato definito durante la configurazione iniziale del cluster, in genere presente nelle impostazioni di rete del cluster. Se service.clusterIP non rientra in questo intervallo, deve essere aggiornato a un indirizzo IP compreso nell'intervallo valido e non attualmente in uso da un altro servizio.

Verificare la distribuzione dell'estensione del registro connesso

Per verificare la distribuzione dell'estensione del registro connesso in Kubernetescluster abilitato per Arc, seguire questa procedura:

  1. Verificare lo stato della distribuzione

    Eseguire il comando az k8s-extension show per controllare lo stato della distribuzione dell'estensione del registro connesso:

  az k8s-extension show --name myconnectedregistry \ 
  --cluster-name myarck8scluster \
  --resource-group myresourcegroup \
  --cluster-type connectedClusters

Output esempio

    {
    "aksAssignedIdentity": null,
    "autoUpgradeMinorVersion": true,
    "configurationProtectedSettings": {
      "connectionString": ""
    },
    "configurationSettings": {
      "pvc.storageClassName": "standard",
      "pvc.storageRequest": "250Gi",
      "service.clusterIP": "[your service cluster ip]"
    },
    "currentVersion": "0.11.0",
    "customLocationSettings": null,
    "errorInfo": null,
    "extensionType": "microsoft.containerregistry.connectedregistry",
    "id": "/subscriptions/[your subscription id]/resourceGroups/[your resource group name]/providers/Microsoft.Kubernetes/connectedClusters/[your arc cluster name]/providers/Microsoft.KubernetesConfiguration/extensions/[your extension name]",
    "identity": {
      "principalId": "[identity principal id]",
      "tenantId": null,
      "type": "SystemAssigned"
    },
    "isSystemExtension": false,
    "name": "[your extension name]",
    "packageUri": null,
    "plan": null,
    "provisioningState": "Succeeded",
    "releaseTrain": "preview",
    "resourceGroup": "[your resource group]",
    "scope": {
      "cluster": {
        "releaseNamespace": "connected-registry"
      },
      "namespace": null
    },
    "statuses": [],
    "systemData": {
      "createdAt": "2024-07-12T18:17:51.364427+00:00",
      "createdBy": null,
      "createdByType": null,
      "lastModifiedAt": "2024-07-12T18:22:42.156799+00:00",
      "lastModifiedBy": null,
      "lastModifiedByType": null
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": null
  }
  1. Verificare lo stato e lo stato del registro connesso

    Per ogni registro connesso, è possibile visualizzare lo stato e le informazioni del registro connesso usando il comando az acr connected-registry list:

        az acr connected-registry list --registry myacrregistry \
        --output table
    

Output esempio

    | NAME | MODE | CONNECTION STATE | PARENT | LOGIN SERVER | LAST SYNC(UTC) |
    |------|------|------------------|--------|--------------|----------------|
    | myconnectedregistry | ReadWrite | online | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
    | myreadonlyacr | ReadOnly | offline | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
  1. Verificare i dettagli specifici del registro connesso

    Per i dettagli su un registro connesso specifico, usare comando az acr connected-registry show:

  az acr connected-registry show --registry myacrregistry \
  --name myreadonlyacr \ 
  --output table

Output esempio

   | NAME                | MODE      | CONNECTION STATE | PARENT        | LOGIN SERVER             | LAST SYNC(UTC)      | SYNC SCHEDULE | SYNC WINDOW       |
   | ------------------- | --------- | ---------------- | ------------- | ------------------------ | ------------------- | ------------- | ----------------- |
   | myconnectedregistry | ReadWrite | online           | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 | 0 0 * * *     | 00:00:00-23:59:59 |
  • Il comando az k8s-extension show verifica lo stato della distribuzione dell'estensione.
  • Il comando fornisce anche dettagli sullo stato della connessione del registro connesso, sull'ultima sincronizzazione, sulla finestra di sincronizzazione, sulla pianificazione della sincronizzazione e altro ancora.

Distribuire un pod che usa un'immagine dal registro connesso

Per distribuire un pod che usa un'immagine dal registro connesso all'interno del cluster, l'operazione deve essere eseguita dall'interno del nodo del cluster stesso. Seguire questa procedura:

  1. Creare un segreto nel cluster per l'autenticazione con il registro connesso:

Eseguire il comando kubectl create secret docker-registry per creare un segreto nel cluster per l'autenticazione con il registro connesso:

kubectl create secret docker-registry regcred --docker-server=192.100.100.1 --docker-username=mytoken --docker-password=mypassword
  1. Distribuire il pod che usa l'immagine desiderata dal registro connesso usando il valore dell'indirizzo service.clusterIP 192.100.100.1 del registro connesso e il nome dell'immagine hello-world con tag latest:

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-world-deployment
      labels:
        app: hello-world
    spec:
      selector:
        matchLabels:
          app: hello-world
      replicas: 1
      template:
        metadata:
          labels:
            app: hello-world
        spec:
          imagePullSecrets:
            - name: regcred
          containers:
            - name: hello-world
              image: 192.100.100.1/hello-world:latest
    EOF
    

Pulire le risorse

Eliminando l'estensione del registro connesso distribuita, si rimuovono i pod del registro connesso corrispondenti e le impostazioni di configurazione.

  1. Eliminare l'estensione del registro connessa

    Eseguire il comando az k8s-extension delete per eliminare l'estensione del registro connesso:

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    

Eliminando il registro connesso distribuito, si rimuove l'istanza cloud del registro connesso e i relativi dettagli di configurazione.

  1. Eliminare il registro connesso

    Eseguire il comando az acr connected-registry delete per eliminare il registro connesso:

    az acr connected-registry delete --registry myacrregistry \
    --name myconnectedregistry \
    --resource-group myresourcegroup 
    

Passaggi successivi