Kubernetes-clusterextensies met Azure Arc implementeren en beheren

U kunt extensie-exemplaren maken in een Kubernetes-cluster met Arc, vereiste en optionele parameters instellen, waaronder opties voor updates en configuraties. U kunt ook extensie-exemplaren weergeven, weergeven, bijwerken en verwijderen.

Lees voordat u begint het conceptuele overzicht van Kubernetes-clusterextensies met Arc en bekijk de lijst met momenteel beschikbare extensies.

Vereisten

  • De nieuwste versie van Azure CLI.

  • De nieuwste versies van de connectedk8s en k8s-extension Azure CLI-extensies. Installeer deze extensies door de volgende opdrachten uit te voeren:

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

    Als de connectedk8s extensies k8s-extension al zijn geïnstalleerd, controleert u of ze zijn bijgewerkt naar de nieuwste versie met behulp van de volgende opdrachten:

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • Een bestaand met Azure Arc verbonden Kubernetes-cluster, met ten minste één knooppunt van het besturingssysteem en het architectuurtype linux/amd64. Als u Flux (GitOps) implementeert, kunt u een OP ARM64 gebaseerd cluster zonder linux/amd64 knooppunt gebruiken.

Extensie-exemplaar maken

Als u een nieuw extensie-exemplaar wilt maken, gebruikt k8s-extension createu waarden door te geven voor de vereiste parameters.

In dit voorbeeld wordt een Azure Monitor Container Insights-extensie-exemplaar gemaakt op een Kubernetes-cluster met 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

Uitvoer:

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

Notitie

De service kan gevoelige informatie langer dan 48 uur niet bewaren. Als Kubernetes-agents met Azure Arc langer dan 48 uur geen netwerkverbinding hebben en niet kan bepalen of er een extensie in het cluster moet worden gemaakt, wordt de extensie overgezet naar Failed de status. Zodra dat gebeurt, moet u opnieuw worden uitgevoerd k8s-extension create om een nieuwe azure-extensieresource te maken.

Azure Monitor Container Insights is een singleton-extensie (slechts één vereist per cluster). U moet eventuele eerdere Helm-grafiekinstallaties van Azure Monitor Container Insights (zonder extensies) opschonen voordat u hetzelfde installeert via extensies. Volg de instructies voor het verwijderen van de Helm-grafiek voordat u deze uitvoert az k8s-extension create.

Vereiste parameters

De volgende parameters zijn vereist wanneer u az k8s-extension create een extensie-exemplaar maakt.

Parameternaam Beschrijving
--name Naam van het extensie-exemplaar
--extension-type Het type extensie dat u wilt installeren op het cluster. Bijvoorbeeld: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes
--scope Bereik van installatie voor de extensie: cluster of namespace
--cluster-name Naam van de Kubernetes-resource met Azure Arc waarop het extensie-exemplaar moet worden gemaakt
--resource-group De resourcegroep met de Kubernetes-resource met Azure Arc
--cluster-type Het clustertype waarop het extensie-exemplaar moet worden gemaakt. Gebruik voor de meeste scenario's, connectedClustersdie overeenkomt met Kubernetes-clusters met Azure Arc.

Optionele parameters

Gebruik een of meer van deze optionele parameters indien nodig voor uw scenario's, samen met de vereiste parameters.

Notitie

U kunt ervoor kiezen om uw extensie-exemplaar automatisch te upgraden naar de meest recente secundaire en patchversies door in te truestellen auto-upgrade-minor-version op , of u kunt in plaats daarvan de versie van het extensie-exemplaar handmatig instellen met behulp van de --version parameter. Het is raadzaam om automatische upgrades in te schakelen voor secundaire en patchversies, zodat u altijd over de nieuwste beveiligingspatches en -mogelijkheden beschikt.

Omdat upgrades van primaire versies belangrijke wijzigingen kunnen bevatten, worden automatische upgrades voor nieuwe primaire versies van een extensie-exemplaar niet ondersteund. U kunt kiezen wanneer u extensie-exemplaren handmatig wilt upgraden naar een nieuwe primaire versie.

Parameternaam Beschrijving
--auto-upgrade-minor-version Booleaanse eigenschap die bepaalt of de secundaire extensieversie automatisch wordt bijgewerkt. De standaardinstelling is true. Als deze parameter is ingesteld op true, kunt u de version parameter niet instellen, omdat de versie dynamisch wordt bijgewerkt. Als deze optie is ingesteld false, wordt de extensie niet automatisch bijgewerkt, zelfs voor patchversies.
--version Versie van de extensie die moet worden geïnstalleerd (specifieke versie waaraan het extensie-exemplaar moet worden vastgemaakt). Mag niet worden opgegeven indien auto-upgrade-minor-version ingesteld op true.
--configuration-settings Instellingen die kunnen worden doorgegeven aan de extensie om de functionaliteit ervan te beheren. Deze worden doorgegeven als door spaties gescheiden key=value paren na de parameternaam. Als deze parameter wordt gebruikt in de opdracht, --configuration-settings-file kan deze niet worden gebruikt in dezelfde opdracht.
--configuration-settings-file Pad naar een JSON-bestand met key=value paren die moeten worden gebruikt voor het doorgeven van configuratie-instellingen aan de extensie. Als deze parameter wordt gebruikt in de opdracht, --configuration-settings kan deze niet worden gebruikt in dezelfde opdracht.
--configuration-protected-settings Instellingen die niet kunnen worden opgehaald met GET API-aanroepen of az k8s-extension show opdrachten. Wordt meestal gebruikt om gevoelige instellingen door te geven. Deze worden doorgegeven als door spaties gescheiden key=value paren na de parameternaam. Als deze parameter wordt gebruikt in de opdracht, --configuration-protected-settings-file kan deze niet worden gebruikt in dezelfde opdracht.
--configuration-protected-settings-file Pad naar een JSON-bestand met key=value paren die moeten worden gebruikt voor het doorgeven van gevoelige instellingen in de extensie. Als deze parameter wordt gebruikt in de opdracht, --configuration-protected-settings kan deze niet worden gebruikt in dezelfde opdracht.
--release-namespace Deze parameter geeft de naamruimte aan waarin de release wordt gemaakt. Alleen relevant als scope deze is ingesteld op cluster.
--release-train Auteurs van extensies kunnen versies publiceren in verschillende releasetreinen, zoals Stable, Previewenzovoort. Als deze parameter niet expliciet is ingesteld, Stable wordt deze als standaard gebruikt.
--target-namespace Geeft de naamruimte aan waarin de release wordt gemaakt. De machtiging van het systeemaccount dat voor dit extensie-exemplaar is gemaakt, is beperkt tot deze naamruimte. Alleen relevant als scope deze is ingesteld op namespace.

Extensiedetails weergeven

Als u details van een momenteel geïnstalleerde extensie-exemplaar wilt weergeven, gebruikt k8s-extension showu waarden door te geven voor de verplichte parameters.

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

Uitvoer:

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

Lijst weergeven van alle extensies die op het cluster zijn geïnstalleerd

Als u een lijst wilt weergeven met alle extensies die op een cluster zijn geïnstalleerd, gebruikt k8s-extension listu waarden voor de verplichte parameters door te geven.

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

Uitvoer:

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

Extensie-exemplaar bijwerken

Notitie

Raadpleeg de documentatie voor het specifieke extensietype om inzicht te krijgen in de specifieke instellingen in --configuration-settings en --configuration-protected-settings die kunnen worden bijgewerkt. Alle --configuration-protected-settingsinstellingen worden naar verwachting opgegeven, zelfs als er slechts één instelling wordt bijgewerkt. Als een van deze instellingen wordt weggelaten, worden deze instellingen als verouderd beschouwd en verwijderd.

Als u een bestaand extensie-exemplaar wilt bijwerken, gebruikt k8s-extension updateu waarden door te geven voor de verplichte en optionele parameters. De verplichte en optionele parameters zijn iets anders dan de parameters die worden gebruikt om een extensie-exemplaar te maken.

In dit voorbeeld wordt de auto-upgrade-minor-version instelling voor een Azure Machine Learning-extensie-exemplaar bijgewerkt naar 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

Vereiste parameters voor update

Parameternaam Beschrijving
--name Naam van het extensie-exemplaar
--cluster-name Naam van het cluster waarop het extensie-exemplaar moet worden gemaakt
--resource-group De resourcegroep met het cluster
--cluster-type Het clustertype waarop het extensie-exemplaar moet worden gemaakt. Gebruik connectedClustersvoor Kubernetes-clusters met Azure Arc. Voor AKS-clusters gebruikt u managedClusters.

Optionele parameters voor update

Parameternaam Beschrijving
--auto-upgrade-minor-version Booleaanse eigenschap die aangeeft of de secundaire extensieversie automatisch wordt bijgewerkt. De standaardinstelling is true. Als deze parameter is ingesteld op true, kunt u de version parameter niet instellen, omdat de versie dynamisch wordt bijgewerkt. Als deze optie is ingesteld false, wordt de extensie niet automatisch bijgewerkt, zelfs voor patchversies.
--version Versie van de extensie die moet worden geïnstalleerd (specifieke versie waaraan het extensie-exemplaar moet worden vastgemaakt). Mag niet worden opgegeven als de auto-upgrade-secundaire versie is ingesteld op true.
--configuration-settings Instellingen die kunnen worden doorgegeven aan de extensie om de functionaliteit ervan te beheren. Deze worden doorgegeven als door spaties gescheiden key=value paren na de parameternaam. Als deze parameter wordt gebruikt in de opdracht, --configuration-settings-file kan deze niet worden gebruikt in dezelfde opdracht. Alleen de instellingen waarvoor een update is vereist, moeten worden opgegeven. De opgegeven instellingen worden vervangen door de opgegeven waarden.
--configuration-settings-file Pad naar het JSON-bestand met key=value paren die moeten worden gebruikt voor het doorgeven van configuratie-instellingen aan de extensie. Als deze parameter wordt gebruikt in de opdracht, --configuration-settings kan deze niet worden gebruikt in dezelfde opdracht.
--configuration-protected-settings Instellingen die niet kunnen worden opgehaald met GET API-aanroepen of az k8s-extension show opdrachten. Wordt meestal gebruikt om gevoelige instellingen door te geven. Deze worden doorgegeven als door spaties gescheiden key=value paren na de parameternaam. Als deze parameter wordt gebruikt in de opdracht, --configuration-protected-settings-file kan deze niet worden gebruikt in dezelfde opdracht. Wanneer u een beveiligde instelling bijwerkt, worden naar verwachting alle beveiligde instellingen opgegeven. Als een van deze instellingen wordt weggelaten, worden deze instellingen als verouderd beschouwd en verwijderd.
--configuration-protected-settings-file Pad naar een JSON-bestand met key=value paren die moeten worden gebruikt voor het doorgeven van gevoelige instellingen aan de extensie. Als deze parameter wordt gebruikt in de opdracht, --configuration-protected-settings kan deze niet worden gebruikt in dezelfde opdracht.
--scope Bereik van installatie voor de extensie - cluster of namespace.
--release-train Auteurs van extensies kunnen versies publiceren in verschillende releasetreinen, zoals Stable, Previewenzovoort. Als deze parameter niet expliciet is ingesteld, Stable wordt deze als standaard gebruikt.

Upgrade-extensie-exemplaar

Zoals eerder is aangegeven auto-upgrade-minor-version , wordt de extensie automatisch bijgewerkt wanneer er een nieuwe secundaire versie wordt uitgebracht. Voor de meeste scenario's raden we u aan automatische upgrades in te schakelen. Als u deze optie instelt auto-upgrade-minor-version op false, moet u de extensie handmatig upgraden als u een nieuwere versie wilt.

Handmatige upgrades zijn ook vereist om een nieuw hoofdexemplaren van een extensie op te halen. U kunt kiezen wanneer u een upgrade wilt uitvoeren om onverwachte wijzigingen met belangrijke versie-upgrades te voorkomen.

Als u een extensie-exemplaar handmatig wilt upgraden, gebruikt k8s-extension update u de parameter en stelt u deze version in om een versie op te geven.

In dit voorbeeld wordt een Azure Machine Learning-extensie-exemplaar bijgewerkt naar versie x.y.z:

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

Extensie-exemplaar verwijderen

Als u een extensie-exemplaar in een cluster wilt verwijderen, gebruikt k8s-extension deleteu waarden door te geven voor de verplichte parameters:

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

Notitie

De Azure-resource die deze extensie vertegenwoordigt, wordt onmiddellijk verwijderd. De Helm-release op het cluster dat aan deze extensie is gekoppeld, wordt alleen verwijderd wanneer de agents die op het Kubernetes-cluster worden uitgevoerd, netwerkconnectiviteit hebben en contact kunnen opnemen met Azure-services om de gewenste status op te halen.

Volgende stappen