Distribuire e gestire le estensioni del cluster Kubernetes abilitate per Azure Arc

È possibile creare istanze di estensione in un cluster Kubernetes abilitato per Arc, impostando parametri obbligatori e facoltativi, incluse le opzioni correlate agli aggiornamenti e alle configurazioni. È anche possibile visualizzare, elencare, aggiornare ed eliminare istanze di estensione.

Prima di iniziare, leggere la panoramica concettuale delle estensioni del cluster Kubernetes abilitate per Arc ed esaminare l'elenco delle estensioni attualmente disponibili.

Prerequisiti

  • Versione più recente dell'interfaccia della riga di comando di Azure.

  • Le versioni più recenti delle estensioni dell'interfaccia della connectedk8s riga di comando di Azure e k8s-extension . Installare queste estensioni eseguendo i comandi seguenti:

    az extension add --name connectedk8s
    az extension add --name k8s-extension
    

    Se le connectedk8s estensioni e k8s-extension sono già installate, assicurarsi che siano aggiornate alla versione più recente usando i comandi seguenti:

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • Un cluster connesso Kubernetes abilitato per Azure Arc esistente, con almeno un nodo del sistema operativo e del tipo di linux/amd64architettura . Se si distribuisce Flux (GitOps), è possibile usare un cluster basato su ARM64 senza un linux/amd64 nodo.

Creare un'istanza dell'estensione

Per creare una nuova istanza di estensione, usare k8s-extension create, passando i valori per i parametri obbligatori.

Questo esempio crea un'istanza dell'estensione Azure Monitor Container Insights in un cluster Kubernetes abilitato per Azure Arc:

az k8s-extension create --name azuremonitor-containers  --extension-type Microsoft.AzureMonitor.Containers --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Output:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Pending",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": null,
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

Nota

Il servizio non è in grado di conservare le informazioni riservate per più di 48 ore. Se gli agenti Kubernetes abilitati per Azure Arc non hanno connettività di rete per più di 48 ore e non possono determinare se creare un'estensione nel cluster, l'estensione passa allo Failed stato. In questo caso, sarà necessario eseguire k8s-extension create di nuovo per creare una nuova risorsa di Azure di estensione.

Azure Monitor Container Insights è un'estensione singleton (necessaria una sola per ogni cluster). Prima di installare le stesse estensioni, è necessario pulire le installazioni precedenti del grafico Helm di Azure Monitor Container Insights (senza estensioni). Seguire le istruzioni per eliminare il grafico Helm prima di eseguire az k8s-extension create.

Parametri obbligatori

Quando si usa az k8s-extension create per creare un'istanza di estensione, sono necessari i parametri seguenti.

Nome parametro Descrizione
--name Nome dell'istanza dell'estensione
--extension-type Tipo di estensione da installare nel cluster. Ad esempio: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes
--scope Ambito dell'installazione per l'estensione: cluster o namespace
--cluster-name Nome della risorsa Kubernetes abilitata per Azure Arc in cui deve essere creata l'istanza dell'estensione
--resource-group Gruppo di risorse contenente la risorsa Kubernetes abilitata per Azure Arc
--cluster-type Tipo di cluster in cui deve essere creata l'istanza dell'estensione. Per la maggior parte degli scenari, usare connectedClusters, che corrisponde ai cluster Kubernetes abilitati per Azure Arc.

Parametri facoltativi

Usare uno o più di questi parametri facoltativi in base alle esigenze per gli scenari, insieme ai parametri necessari.

Nota

È possibile scegliere di aggiornare automaticamente l'istanza dell'estensione alle versioni secondarie e patch più recenti impostando auto-upgrade-minor-versiontruesu oppure è possibile impostare manualmente la versione dell'istanza dell'estensione usando il --version parametro . È consigliabile abilitare gli aggiornamenti automatici per versioni secondarie e patch in modo da avere sempre le patch e le funzionalità di sicurezza più recenti.

Poiché gli aggiornamenti delle versioni principali possono includere modifiche di rilievo, gli aggiornamenti automatici per le nuove versioni principali di un'istanza di estensione non sono supportati. È possibile scegliere quando aggiornare manualmente le istanze dell'estensione a una nuova versione principale.

Nome parametro Descrizione
--auto-upgrade-minor-version Proprietà booleana che determina se la versione secondaria dell'estensione viene aggiornata automaticamente. L'impostazione predefinita è true. Se questo parametro è impostato su true, non è possibile impostare il version parametro, perché la versione verrà aggiornata in modo dinamico. Se impostato su false, l'estensione non verrà aggiornata automaticamente, anche per le versioni patch.
--version Versione dell'estensione da installare (versione specifica a cui aggiungere l'istanza dell'estensione). Non deve essere fornito se auto-upgrade-minor-version è impostato su true.
--configuration-settings Impostazioni che è possibile passare all'estensione per controllarne la funzionalità. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-settings-file non può essere usato nello stesso comando.
--configuration-settings-file Percorso di un file JSON con key=value coppie da usare per passare le impostazioni di configurazione nell'estensione. Se questo parametro viene usato nel comando , --configuration-settings non può essere usato nello stesso comando.
--configuration-protected-settings Impostazioni che non sono recuperabili tramite GET Chiamate API o az k8s-extension show comandi. In genere viene usato per passare impostazioni sensibili. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-protected-settings-file non può essere usato nello stesso comando.
--configuration-protected-settings-file Percorso di un file JSON con key=value coppie da usare per passare le impostazioni sensibili nell'estensione. Se questo parametro viene usato nel comando , --configuration-protected-settings non può essere usato nello stesso comando.
--release-namespace Questo parametro indica lo spazio dei nomi in cui verrà creata la versione. Rilevante solo se scope è impostato su cluster.
--release-train Gli autori di estensioni possono pubblicare versioni in diversi training di rilascio, ad Stableesempio , Previewe così via. Se questo parametro non è impostato in modo esplicito, Stable viene usato come predefinito.
--target-namespace Indica lo spazio dei nomi in cui verrà creata la versione. L'autorizzazione dell'account di sistema creato per questa istanza di estensione sarà limitata a questo spazio dei nomi. Rilevante solo se scope è impostato su namespace.

Visualizzare i dettagli dell'estensione

Per visualizzare i dettagli di un'istanza di estensione attualmente installata, usare k8s-extension show, passando i valori per i parametri obbligatori.

az k8s-extension show --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Output:

{
  "autoUpgradeMinorVersion": true,
  "configurationProtectedSettings": null,
  "configurationSettings": {
    "logAnalyticsWorkspaceResourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/defaultresourcegroup-eus/providers/microsoft.operationalinsights/workspaces/defaultworkspace-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-eus"
  },
  "creationTime": "2021-04-02T12:13:06.7534628+00:00",
  "errorInfo": {
    "code": null,
    "message": null
  },
  "extensionType": "microsoft.azuremonitor.containers",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/demo/providers/Microsoft.Kubernetes/connectedClusters/demo/providers/Microsoft.KubernetesConfiguration/extensions/azuremonitor-containers",
  "identity": null,
  "installState": "Installed",
  "lastModifiedTime": "2021-04-02T12:13:06.753463+00:00",
  "lastStatusTime": "2021-04-02T12:13:49.636+00:00",
  "name": "azuremonitor-containers",
  "releaseTrain": "Stable",
  "resourceGroup": "demo",
  "scope": {
    "cluster": {
      "releaseNamespace": "azuremonitor-containers"
    },
    "namespace": null
  },
  "statuses": [],
  "systemData": null,
  "type": "Microsoft.KubernetesConfiguration/extensions",
  "version": "2.8.2"
}

Elencare tutte le estensioni installate nel cluster

Per visualizzare un elenco di tutte le estensioni installate in un cluster, usare k8s-extension list, passando i valori per i parametri obbligatori.

az k8s-extension list --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Output:

[
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-15T02:26:03.5519523+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "Microsoft.AzureMonitor.Containers",
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/myExtInstanceName",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-15T02:48:45.6469664+00:00",
    "lastStatusTime": null,
    "name": "myExtInstanceName",
    "releaseTrain": "Stable",
    "resourceGroup": "myRG",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName1"
      }
    },
    "statuses": [],
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  },
  {
    "autoUpgradeMinorVersion": true,
    "creationTime": "2020-09-02T00:41:16.8005159+00:00",
    "errorInfo": {
      "code": null,
      "message": null
    },
    "extensionType": "microsoft.azuredefender.kubernetes",
    "id": "/subscriptions/0e849346-4343-582b-95a3-e40e6a648ae1/resourceGroups/myRg/providers/Microsoft.Kubernetes/connectedClusters/myCluster/providers/Microsoft.KubernetesConfiguration/extensions/defender",
    "identity": null,
    "installState": "Pending",
    "lastModifiedTime": "2020-09-02T00:41:16.8005162+00:00",
    "lastStatusTime": null,
    "name": "microsoft.azuredefender.kubernetes",
    "releaseTrain": "Stable",
    "resourceGroup": "myRg",
    "scope": {
      "cluster": {
        "releaseNamespace": "myExtInstanceName2"
      }
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": "0.1.0"
  }
]

Aggiornare l'istanza dell'estensione

Nota

Vedere la documentazione relativa al tipo di estensione specifico per comprendere le impostazioni specifiche in --configuration-settings e --configuration-protected-settings che possono essere aggiornate. Per --configuration-protected-settings, è previsto che vengano specificate tutte le impostazioni, anche se viene aggiornata una sola impostazione. Se una di queste impostazioni viene omessa, tali impostazioni verranno considerate obsolete ed eliminate.

Per aggiornare un'istanza di estensione esistente, usare k8s-extension update, passando i valori per i parametri obbligatori e facoltativi. I parametri obbligatori e facoltativi sono leggermente diversi da quelli usati per creare un'istanza di estensione.

Questo esempio aggiorna l'impostazione per un'istanza dell'estensione auto-upgrade-minor-version di Azure Machine Learning su true:

az k8s-extension update --name azureml --extension-type Microsoft.AzureML.Kubernetes --scope cluster --cluster-name <clusterName> --resource-group <resourceGroupName> --auto-upgrade-minor-version true --cluster-type managedClusters

Parametri obbligatori per l'aggiornamento

Nome parametro Descrizione
--name Nome dell'istanza dell'estensione
--cluster-name Nome del cluster in cui deve essere creata l'istanza dell'estensione
--resource-group Gruppo di risorse contenente il cluster
--cluster-type Tipo di cluster in cui deve essere creata l'istanza dell'estensione. Per i cluster Kubernetes abilitati per Azure Arc, usare connectedClusters. Per i cluster del servizio Azure Kubernetes, usare managedClusters.

Parametri facoltativi per l'aggiornamento

Nome parametro Descrizione
--auto-upgrade-minor-version Proprietà booleana che specifica se la versione secondaria dell'estensione viene aggiornata automaticamente. L'impostazione predefinita è true. Se questo parametro è impostato su true, non è possibile impostare il version parametro, perché la versione verrà aggiornata in modo dinamico. Se impostato su false, l'estensione non verrà aggiornata automaticamente, anche per le versioni patch.
--version Versione dell'estensione da installare (versione specifica a cui aggiungere l'istanza dell'estensione). Non deve essere fornito se l'aggiornamento automatico-versione secondaria è impostato su true.
--configuration-settings Impostazioni che è possibile passare all'estensione per controllarne la funzionalità. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-settings-file non può essere usato nello stesso comando. È necessario specificare solo le impostazioni che richiedono un aggiornamento. Le impostazioni specificate verranno sostituite con i valori specificati.
--configuration-settings-file Percorso del file JSON con key=value coppie da usare per passare le impostazioni di configurazione all'estensione. Se questo parametro viene usato nel comando , --configuration-settings non può essere usato nello stesso comando.
--configuration-protected-settings Impostazioni che non sono recuperabili tramite GET Chiamate API o az k8s-extension show comandi. In genere viene usato per passare impostazioni sensibili. Questi vengono passati come coppie separate key=value da spazi dopo il nome del parametro. Se questo parametro viene usato nel comando , --configuration-protected-settings-file non può essere usato nello stesso comando. Quando si aggiorna un'impostazione protetta, è previsto che vengano specificate tutte le impostazioni protette. Se una di queste impostazioni viene omessa, tali impostazioni verranno considerate obsolete ed eliminate.
--configuration-protected-settings-file Percorso di un file JSON con key=value coppie da usare per passare le impostazioni sensibili all'estensione. Se questo parametro viene usato nel comando , --configuration-protected-settings non può essere usato nello stesso comando.
--scope Ambito dell'installazione per l'estensione - cluster o namespace.
--release-train Gli autori di estensioni possono pubblicare versioni in diversi training di rilascio, ad Stableesempio , Previewe così via. Se questo parametro non è impostato in modo esplicito, Stable viene usato come predefinito.

Aggiornare l'istanza dell'estensione

Come indicato in precedenza, se si imposta su auto-upgrade-minor-version true, l'estensione verrà aggiornata automaticamente quando viene rilasciata una nuova versione secondaria. Per la maggior parte degli scenari, è consigliabile abilitare gli aggiornamenti automatici. Se si imposta su auto-upgrade-minor-version false, sarà necessario aggiornare manualmente l'estensione se si vuole una versione più recente.

Gli aggiornamenti manuali sono necessari anche per ottenere una nuova istanza principale di un'estensione. È possibile scegliere quando eseguire l'aggiornamento per evitare modifiche impreviste che causano interruzioni impreviste con aggiornamenti delle versioni principali.

Per aggiornare manualmente un'istanza dell'estensione, usare k8s-extension update e impostare il version parametro per specificare una versione.

Questo esempio aggiorna un'istanza dell'estensione di Azure Machine Learning alla versione x.y.z:

az k8s-extension update --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters --name azureml --version x.y.z

Eliminare l'istanza dell'estensione

Per eliminare un'istanza di estensione in un cluster, usare k8s-extension delete, passando i valori per i parametri obbligatori:

az k8s-extension delete --name azuremonitor-containers --cluster-name <clusterName> --resource-group <resourceGroupName> --cluster-type connectedClusters

Nota

La risorsa di Azure che rappresenta questa estensione viene eliminata immediatamente. La versione Helm nel cluster associato a questa estensione viene eliminata solo quando gli agenti in esecuzione nel cluster Kubernetes hanno connettività di rete e possono contattare nuovamente i servizi di Azure per recuperare lo stato desiderato.

Passaggi successivi