Distribuire e gestire estensioni del cluster Kubernetes abilitate per Azure Arc
È possibile creare istanze di estensione in un cluster Kubernetes abilitate per Arc, impostando parametri obbligatori e facoltativi, incluse le opzioni correlate ad aggiornamenti e configurazioni. Inoltre è 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
connectedk8s
ek8s-extension
dell'interfaccia della riga di comando di Azure. Installare queste estensioni eseguendo i comandi di seguito riportati:az extension add --name connectedk8s az extension add --name k8s-extension
Se sono già state installate le estensioni
connectedk8s
ek8s-extension
, accertarsi che ne sia stato eseguito l'aggiornamento all’ultima versione usando il comando seguente:az extension update --name connectedk8s az extension update --name k8s-extension
Un cluster Kubernetes abilitato per Azure Arc esistente, con almeno un nodo del sistema operativo e del tipo
linux/amd64
di architettura. Se si distribuisce Flux (GitOps), è possibile usare un cluster basato su ARM64 senza un nodolinux/amd64
.- Se non è ancora stato connesso un cluster, usare la guida introduttiva.
- Aggiornare gli agenti all'ultima versione.
Creare un'istanza dell'estensione
Per creare una nuova istanza di estensione, utilizzare k8s-extension create
, passando i valori per i parametri richiesti.
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 sensibili 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 stato Failed
. Una volta che ciò si verifica, sarà necessario eseguire di nuovo k8s-extension create
per creare un'istanza di estensione aggiornata della risorsa di Azure.
Azure Monitor Container Insights è un'estensione singleton (ne viene richiesta una sola per ciascun 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 |
Il tipo di estensione che si desidera 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 |
Il 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 degli 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-version
su true
, oppure è possibile impostare manualmente la versione dell'istanza dell'estensione usando il parametro --version
. È consigliabile abilitare gli aggiornamenti automatici per le versioni secondarie e patch, in modo di poter disporre sempre delle patch e delle 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 parametro version , perché la versione verrà aggiornata in modo dinamico. Se impostato su false , l'estensione non verrà aggiornata automaticamente anche per le versioni della 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 possono essere passate all'estensione per controllarne le funzionalità. Vengono passate come coppie key=value separate 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 a un file JSON con coppie key=value 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 usando chiamate API GET o comandi az k8s-extension show . In genere vengono usate per passare impostazioni sensibili. Vengono passate come coppie key=value separate 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 a un file JSON con coppie key=value 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. |
--release-namespace |
Questo parametro indica lo spazio dei nomi in cui verrà creata la versione. Rilevanti solo se scope è impostato su cluster . |
--release-train |
Gli autori delle estensioni possono pubblicare versioni in diversi training di rilascio, quali Stable , Preview e 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. Rilevanti solo se scope è impostato su namespace . |
Mostrare i dettagli dell'estensione
Per visualizzare i dettagli di un'istanza di estensione attualmente installata, usare k8s-extension show
, inserendo 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
, inserendo 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 di estensione
Nota
Vedere la documentazione relativa al tipo di estensione specifico per comprendere le impostazioni appropriate 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
, inserendo 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'auto-upgrade-minor-version
impostazione di aggiornamento per un'istanza di estensione di Azure Machine Learning a 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 |
Il gruppo di risorse contenente il cluster |
--cluster-type |
Tipo di cluster in cui deve essere creata l'istanza dell'estensione. Per cluster Kubernetes abilitato 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 parametro version , perché la versione verrà aggiornata in modo dinamico. Se impostato su false , l'estensione non verrà aggiornata automaticamente anche per le versioni della 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 possono essere passate all'estensione per controllarne le funzionalità. Vengono passate come coppie key=value separate 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 al file JSON con coppie key=value 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 usando chiamate API GET o comandi az k8s-extension show . In genere vengono usate per passare impostazioni sensibili. Vengono passate come coppie key=value separate 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 siano specificate tutte le impostazioni protette. Se una di queste impostazioni viene omessa, tali impostazioni verranno considerate obsolete ed eliminate. |
--configuration-protected-settings-file |
Percorso a un file JSON con coppie key=value 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 delle estensioni possono pubblicare versioni in diversi training di rilascio, quali Stable , Preview e 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 auto-upgrade-minor-version
su 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 auto-upgrade-minor-version
su false, sarà necessario aggiornare manualmente l'estensione se si desidera 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 di estensione, usare k8s-extension update
e impostare il parametro version
per specificare una versione.
Questo esempio aggiorna un'istanza di 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
, inserendo 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
- Rivedere il riferimento sull'interfaccia della riga di comando az k8s-extension per un elenco completo dei comandi e dei parametri.
- Altre informazioni su funzionamento delle estensioni con i cluster Kubernetes abilitati per Arc.
- Rivedere le estensioni del cluster Kubernetes abilitate per Azure Arc attualmente disponibili.
- Richiesta supporto per la risoluzione degli errori delle estensioni.