Bereitstellen und Verwalten Azure Arc-fähiger Kubernetes-Clustererweiterungen

Sie können Erweiterungsinstanzen in einem Kubernetes-Cluster mit Arc-Unterstützung erstellen und erforderliche und optionale Parameter festlegen, einschließlich Optionen für Updates und Konfigurationen. Sie können Erweiterungsinstanzen anzeigen, auflisten, aktualisieren und löschen.

Bevor Sie beginnen, lesen Sie den konzeptionellen Überblick über Kubernetes-Clustererweiterungen mit Arc-Unterstützung und überprüfen Sie die Liste der derzeit verfügbaren Erweiterungen.

Voraussetzungen

  • Die neueste Version von Azure CLI.

  • Die neuesten Versionen der connectedk8s und k8s-extension Azure CLI-Erweiterungen. Installieren Sie diese Erweiterungen, indem Sie die folgenden Befehle ausführen:

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

    Wenn die Erweiterungen connectedk8s und k8s-extension bereits installiert sind, aktualisieren Sie sie mit dem folgenden Befehl auf die neueste Version:

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • Ein bestehender Cluster mit Azure Arc-Unterstützung, der mit Kubernetes verbunden ist, mit mindestens einem Knoten des Betriebssystems und des Architekturtyps linux/amd64. Wenn Sie Flux (GitOps) einsetzen, können Sie einen ARM64-basierten Cluster ohne einen linux/amd64-Knoten verwenden.

Erstellen einer Erweiterungsinstanz

Um eine neue Erweiterungsinstanz zu erstellen, verwenden Sie k8s-extension create und übergeben Sie Werte für die erforderlichen Parameter.

Dieses Beispiel erstellt eine Erweiterungsinstanz für Azure Monitor Container Insights in Ihrem Kubernetes-Cluster mit Azure Arc-Unterstützung:

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

Ausgabe:

{
  "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"
}

Hinweis

Der Dienst kann vertrauliche Informationen nicht für mehr als 48 Stunden aufbewahren. Wenn Kubernetes-Agents mit Azure Arc-Unterstützung für mehr als 48 Stunden nicht über Netzwerkkonnektivität verfügen und nicht bestimmen können, ob eine Erweiterung auf dem Cluster erstellt werden soll, geht die Erweiterung in den Status Failed über. Sobald das erfolgt, müssen Sie k8s-extension create erneut ausführen, um eine neue Erweiterungs-Azure-Ressource zu erstellen.

Azure Monitor Container Insights ist eine Singleton-Erweiterung (nur eine pro Cluster erforderlich). Sie müssen alle vorherigen Helm-Diagramminstallationen von Azure Monitor Container Insights (ohne Erweiterungen) bereinigen, bevor Sie die gleichen über Erweiterungen installieren. Befolgen Sie die Anweisungen zum Löschen des Helm-Diagramms vor der Ausführung von az k8s-extension create.

Erforderliche Parameter

Die folgenden Parameter sind erforderlich, wenn Sie az k8s-extension create zum Erstellen einer Erweiterungsinstanz verwenden.

Parametername BESCHREIBUNG
--name Name der Erweiterungsinstanz
--extension-type Der Typ der Erweiterung, die Sie auf dem Cluster installieren möchten. Beispiel: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes
--scope Umfang der Installation für die Erweiterung – cluster oder namespace
--cluster-name Name der Azure Arc-fähigen Kubernetes-Ressource, auf der die Erweiterungsinstanz erstellt werden soll
--resource-group Die Ressourcengruppe, in der die Azure Arc-fähige Kubernetes-Ressource enthalten ist
--cluster-type Der Clustertyp, auf dem die Erweiterungsinstanz erstellt werden soll. Verwenden Sie für die meisten Szenarien connectedClusters, was Kubernetes-Cluster mit Azure Arc-Unterstützung entspricht.

Optionale Parameter

Verwenden Sie einen oder mehrere dieser optionalen Parameter je nach Bedarf für Ihre Szenarien, zusammen mit den erforderlichen Parametern.

Hinweis

Sie können Ihre Erweiterungsinstanz automatisch auf die neuesten Neben- und Patchversionen aktualisieren, indem Sie auto-upgrade-minor-version auf true setzen, oder Sie können die Version der Erweiterungsinstanz stattdessen manuell mit dem Parameter --version festlegen. Wir empfehlen, automatische Upgrades für Neben- und Patchversionen zu aktivieren, damit Sie immer über die neuesten Sicherheitspatches und Funktionen verfügen.

Da Upgrades von Hauptversionen Änderungen beinhalten können, werden automatische Upgrades für neue Hauptversionen einer Erweiterungsinstanz nicht unterstützt. Sie können wählen, wann Erweiterungsinstanzen manuell auf eine neue Hauptversion aktualisiert werden sollen.

Parametername Beschreibung
--auto-upgrade-minor-version Boolesche Eigenschaft, die bestimmt, ob die Nebenversion der Erweiterung automatisch aktualisiert wird. Die Standardeinstellung ist true. Wenn dieser Parameter auf true festgelegt ist, können Sie den version-Parameter nicht festlegen, da die Version dynamisch aktualisiert wird. Wenn diese Option auf false gesetzt ist, wird die Erweiterung nicht automatisch aktualisiert, auch nicht bei Patchversionen.
--version Version der zu installierenden Erweiterung (bestimmte Version, an die die Erweiterungsinstanz angeheftet wird). Darf nicht angegeben werden, wenn auto-upgrade-minor-version auf true gesetzt ist.
--configuration-settings Einstellungen, die an die Erweiterung übergeben werden können, um deren Funktionalität zu steuern. Sie werden als leerzeichengetrennte key=value-Paare nach dem Parameternamen übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-settings-file nicht im selben Befehl verwendet werden.
--configuration-settings-file Der Pfad zu einer JSON-Datei mit key=value-Paaren, die verwendet werden sollen, um Konfigurationseinstellungen an die Erweiterung zu übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-settings nicht im selben Befehl verwendet werden.
--configuration-protected-settings Einstellungen, die nicht mithilfe von GET-API-Aufrufen oder az k8s-extension show-Befehlen abgerufen werden können. Wird in der Regel verwendet, um vertrauliche Einstellungen zu übergeben. Sie werden als leerzeichengetrennte key=value-Paare nach dem Parameternamen übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-protected-settings-file nicht im selben Befehl verwendet werden.
--configuration-protected-settings-file Der Pfad zu einer JSON-Datei mit key=value-Paaren, die verwendet werden sollen, um vertrauliche Einstellungen an die Erweiterung zu übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-protected-settings nicht im selben Befehl verwendet werden.
--release-namespace Dieser Parameter gibt den Namespace an, in dem die Freigabe erstellt wird. Nur relevant, wenn scope auf cluster gesetzt ist.
--release-train Erweiterungsersteller können Versionen in unterschiedlichen Release Trains wie Stable, Preview usw. veröffentlichen. Wenn dieser Parameter nicht explizit festgelegt ist, wird Stable als Standard verwendet.
--target-namespace Das gibt den Namespace an, in dem die Freigabe erstellt wird. Die Berechtigung des für diese Erweiterungsinstanz erstellten Systemkontos wird auf diesen Namespace beschränkt. Nur relevant, wenn scope auf namespace gesetzt ist.

Erweiterungsdetails anzeigen

Zeigen Sie Details einer aktuell installierten Erweiterungsinstanz mit k8s-extension show an, wobei Sie Werte für die obligatorischen Parameter übergeben.

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

Ausgabe:

{
  "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"
}

Alle auf dem Cluster installierten Erweiterungen auflisten

Zeigen Sie eine Liste aller auf dem Cluster installierten Erweiterungen mit k8s-extension list an, wobei Sie Werte für die obligatorischen Parameter übergeben.

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

Ausgabe:

[
  {
    "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"
  }
]

Erweiterungsinstanz aktualisieren

Hinweis

Informationen zu den spezifischen Einstellungen in --configuration-settings und --configuration-protected-settings, die aktualisiert werden können, finden Sie in der Dokumentation für den spezifischen Erweiterungstyp. Bei --configuration-protected-settingswird erwartet, dass alle Einstellungen bereitgestellt werden, auch wenn nur eine Einstellung aktualisiert wird. Wenn einige Einstellungen weggelassen werden, werden diese Einstellungen als veraltet betrachtet und gelöscht.

Aktualisieren Sie eine vorhandene Erweiterungsinstanz mit k8s-extension update, indem Sie Werte für die obligatorischen und die optionalen Parameter übergeben. Die obligatorischen und optionalen Parameter unterscheiden sich geringfügig von denen, die zur Erstellung einer Erweiterungsinstanz verwendet werden.

In diesem Beispiel wird die Einstellung auto-upgrade-minor-version für eine Azure Machine Learning-Erweiterungsinstanz auf true aktualisiert:

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

Erforderliche Parameter für die Aktualisierung

Parametername BESCHREIBUNG
--name Name der Erweiterungsinstanz
--cluster-name Name des Clusters, auf dem die Erweiterungsinstanz angelegt werden soll
--resource-group Die Ressourcengruppe, die das Cluster enthält
--cluster-type Der Clustertyp, auf dem die Erweiterungsinstanz erstellt werden soll. Verwenden Sie connectedClusters für Kubernetes-Cluster mit Azure Arc-Unterstützung. Für AKS-Cluster nutzen Sie managedClusters.

Optionale Parameter für die Aktualisierung

Parametername Beschreibung
--auto-upgrade-minor-version Boolesche Eigenschaft, die angibt, ob die Nebenversion der Erweiterung automatisch aktualisiert wird. Die Standardeinstellung ist true. Wenn dieser Parameter auf „true“ festgelegt ist, können Sie den version-Parameter nicht festlegen, da die Version dynamisch aktualisiert wird. Wenn diese Option auf false gesetzt ist, wird die Erweiterung nicht automatisch aktualisiert, auch nicht bei Patchversionen.
--version Version der zu installierenden Erweiterung (bestimmte Version, an die die Erweiterungsinstanz angeheftet wird). Muss nicht angegeben werden, wenn „auto-upgrade-minor-version“ auf true festgelegt ist.
--configuration-settings Einstellungen, die an die Erweiterung übergeben werden können, um deren Funktionalität zu steuern. Sie werden als leerzeichengetrennte key=value-Paare nach dem Parameternamen übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-settings-file nicht im selben Befehl verwendet werden. Nur die Einstellungen, die eine Aktualisierung erfordern, müssen angegeben werden. Die angegebenen Einstellungen werden durch die angegebenen Werte ersetzt.
--configuration-settings-file Der Pfad zur JSON-Datei mit key=value-Paaren, die verwendet werden sollen, um Konfigurationseinstellungen an die Erweiterung zu übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-settings nicht im selben Befehl verwendet werden.
--configuration-protected-settings Einstellungen, die nicht mithilfe von GET-API-Aufrufen oder az k8s-extension show-Befehlen abgerufen werden können. Wird in der Regel verwendet, um vertrauliche Einstellungen zu übergeben. Sie werden als leerzeichengetrennte key=value-Paare nach dem Parameternamen übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-protected-settings-file nicht im selben Befehl verwendet werden. Wenn Sie eine geschützte Einstellung aktualisieren, wird erwartet, dass alle geschützten Einstellungen angegeben werden. Wenn einige Einstellungen weggelassen werden, werden diese Einstellungen als veraltet betrachtet und gelöscht.
--configuration-protected-settings-file Der Pfad zu einer JSON-Datei mit key=value-Paaren, die verwendet werden sollen, um vertrauliche Einstellungen an die Erweiterung zu übergeben. Wenn dieser Parameter im Befehl verwendet wird, kann --configuration-protected-settings nicht im selben Befehl verwendet werden.
--scope Umfang der Installation für die Erweiterung – cluster oder namespace.
--release-train Erweiterungsersteller können Versionen in unterschiedlichen Release Trains wie Stable, Preview usw. veröffentlichen. Wenn dieser Parameter nicht explizit festgelegt ist, wird Stable als Standard verwendet.

Upgrade der Erweiterungsinstanz

Wie bereits erwähnt, wird die Erweiterung automatisch aktualisiert, wenn Sie auto-upgrade-minor-version auf „true“ setzen, wenn eine neue Nebenversion veröffentlicht wird. Für die meisten Szenarien empfiehlt es sich, automatische Upgrades zu aktivieren. Wenn Sie auto-upgrade-minor-version auf „false“ setzen, müssen Sie die Erweiterung manuell aktualisieren, wenn Sie eine neuere Version wünschen.

Manuelle Upgrades sind auch erforderlich, um eine neue Hauptinstanz einer Erweiterung zu erhalten. Sie können wählen, wann Sie ein Upgrade durchführen möchten, um unerwartete Änderungen bei Upgrades der Hauptversion zu vermeiden.

Um eine Erweiterungsinstanz manuell zu aktualisieren, verwenden Sie k8s-extension update und geben mit dem Parameter version eine Version an.

In diesem Beispiel wird eine Azure Machine Learning-Erweiterungsinstanz auf Version x.y.z aktualisiert:

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

Löschen der Erweiterungsinstanz

Löschen Sie eine Erweiterungsinstanz auf einem Cluster mit k8s-extension delete, wobei Sie Werte für die obligatorischen Parameter übergeben:

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

Hinweis

Die Azure-Ressource, die diese Erweiterung darstellt, wird sofort gelöscht. Die Helm-Freigabe auf dem Cluster, die dieser Erweiterung zugeordnet ist, wird nur gelöscht, wenn die auf dem Kubernetes-Cluster ausgeführten Agents über Netzwerkkonnektivität verfügen und wieder auf Azure-Dienste zugreifen können, um den gewünschten Status abzurufen.

Nächste Schritte