Wdrażanie rozszerzeń klastra Kubernetes z obsługą usługi Azure Arc i zarządzanie nimi

Wystąpienia rozszerzeń można tworzyć w klastrze Kubernetes z obsługą usługi Arc, ustawiając wymagane i opcjonalne parametry, w tym opcje związane z aktualizacjami i konfiguracjami. Można również wyświetlać, wyświetlać, aktualizować i usuwać wystąpienia rozszerzeń.

Przed rozpoczęciem zapoznaj się z koncepcyjnym omówieniem rozszerzeń klastra Kubernetes z obsługą usługi Arc i przejrzyj listę aktualnie dostępnych rozszerzeń.

Wymagania wstępne

  • Najnowsza wersja interfejsu wiersza polecenia platformy Azure.

  • Najnowsze wersje rozszerzeń interfejsu connectedk8s wiersza polecenia platformy Azure.k8s-extension Zainstaluj te rozszerzenia, uruchamiając następujące polecenia:

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

    connectedk8s Jeśli rozszerzenia i k8s-extension są już zainstalowane, upewnij się, że zostały zaktualizowane do najnowszej wersji przy użyciu następujących poleceń:

    az extension update --name connectedk8s
    az extension update --name k8s-extension
    
  • Istniejący połączony klaster Kubernetes z włączoną usługą Azure Arc z co najmniej jednym węzłem systemu operacyjnego i typu linux/amd64architektury. W przypadku wdrażania platformy Flux (GitOps) można użyć klastra opartego na architekturze ARM64 bez węzła linux/amd64 .

Tworzenie wystąpienia rozszerzenia

Aby utworzyć nowe wystąpienie rozszerzenia, użyj polecenia k8s-extension create, przekazując wartości wymaganych parametrów.

W tym przykładzie utworzono wystąpienie rozszerzenia Szczegółowe informacje kontenera usługi Azure Monitor w klastrze Kubernetes z obsługą usługi 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

Wyjście:

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

Uwaga

Usługa nie może przechowywać poufnych informacji przez ponad 48 godzin. Jeśli agenci platformy Kubernetes z włączoną usługą Azure Arc nie mają łączności sieciowej przez ponad 48 godzin i nie mogą określić, czy utworzyć rozszerzenie w klastrze, rozszerzenie przechodzi do Failed stanu. W takim przypadku należy uruchomić k8s-extension create ponownie, aby utworzyć nowy zasób platformy Azure rozszerzenia.

Szczegółowe informacje kontenera usługi Azure Monitor to jednotonowe rozszerzenie (tylko jedno wymagane dla klastra). Przed zainstalowaniem tych samych rozszerzeń należy wyczyścić wszystkie poprzednie instalacje pakietu Helm dla kontenera usługi Azure Monitor Szczegółowe informacje (bez rozszerzeń). Postępuj zgodnie z instrukcjami dotyczącymi usuwania wykresu Helm przed uruchomieniem polecenia az k8s-extension create.

Parametry wymagane

Podczas tworzenia az k8s-extension create wystąpienia rozszerzenia wymagane są następujące parametry.

Nazwa parametru opis
--name Nazwa wystąpienia rozszerzenia
--extension-type Typ rozszerzenia, które chcesz zainstalować w klastrze. Na przykład: Microsoft.AzureMonitor.Containers, microsoft.azuredefender.kubernetes
--scope Zakres instalacji rozszerzenia: cluster lub namespace
--cluster-name Nazwa zasobu Kubernetes z obsługą usługi Azure Arc, na którym ma zostać utworzone wystąpienie rozszerzenia
--resource-group Grupa zasobów zawierająca zasób Kubernetes z włączoną usługą Azure Arc
--cluster-type Typ klastra, na którym ma zostać utworzone wystąpienie rozszerzenia. W przypadku większości scenariuszy użyj polecenia connectedClusters, który odpowiada klastrom Kubernetes z obsługą usługi Azure Arc.

Parametry opcjonalne

Użyj co najmniej jednego z tych opcjonalnych parametrów zgodnie z potrzebami dla Twoich scenariuszy wraz z wymaganymi parametrami.

Uwaga

Możesz automatycznie uaktualnić wystąpienie rozszerzenia do najnowszych wersji pomocniczych i poprawek, ustawiając auto-upgrade-minor-versiontruewartość , lub zamiast tego możesz ręcznie ustawić wersję wystąpienia rozszerzenia przy użyciu parametru --version . Zalecamy włączenie automatycznych uaktualnień dla wersji pomocniczych i poprawek, aby zawsze mieć najnowsze poprawki zabezpieczeń i możliwości.

Ponieważ uaktualnienia wersji głównych mogą obejmować zmiany powodujące niezgodność, automatyczne uaktualnienia nowych wersji głównych wystąpienia rozszerzenia nie są obsługiwane. Możesz wybrać, kiedy ręcznie uaktualnić wystąpienia rozszerzeń do nowej wersji głównej.

Nazwa parametru opis
--auto-upgrade-minor-version Właściwość logiczna określająca, czy wersja pomocnicza rozszerzenia jest automatycznie uaktualniana. Ustawienie domyślne to true. Jeśli ten parametr ma wartość , nie można ustawić trueparametru version , ponieważ wersja zostanie dynamicznie zaktualizowana. Jeśli zostanie ustawiona wartość false, rozszerzenie nie zostanie automatycznie uaktualnione, nawet w przypadku wersji poprawek.
--version Wersja rozszerzenia, które ma zostać zainstalowane (określona wersja, aby przypiąć wystąpienie rozszerzenia do). Nie można podać, jeśli auto-upgrade-minor-version ustawiono wartość true.
--configuration-settings Ustawienia, które można przekazać do rozszerzenia, aby kontrolować jego funkcjonalność. Są one przekazywane jako pary rozdzielane key=value spacjami po nazwie parametru. Jeśli ten parametr jest używany w poleceniu, --configuration-settings-file nie można go użyć w tym samym poleceniu.
--configuration-settings-file Ścieżka do pliku JSON z parami key=value , które mają być używane do przekazywania ustawień konfiguracji do rozszerzenia. Jeśli ten parametr jest używany w poleceniu, --configuration-settings nie można go użyć w tym samym poleceniu.
--configuration-protected-settings Ustawienia, których nie można pobrać przy użyciu GET Wywołania interfejsu API lub az k8s-extension show polecenia. Zazwyczaj używane do przekazywania poufnych ustawień. Są one przekazywane jako pary rozdzielane key=value spacjami po nazwie parametru. Jeśli ten parametr jest używany w poleceniu, --configuration-protected-settings-file nie można go użyć w tym samym poleceniu.
--configuration-protected-settings-file Ścieżka do pliku JSON z parami key=value , które mają być używane do przekazywania poufnych ustawień do rozszerzenia. Jeśli ten parametr jest używany w poleceniu, --configuration-protected-settings nie można go użyć w tym samym poleceniu.
--release-namespace Ten parametr wskazuje przestrzeń nazw, w której zostanie utworzona wersja. Istotne tylko wtedy, gdy scope jest ustawiona wartość cluster.
--release-train Autorzy rozszerzeń mogą publikować wersje w różnych pociągach wydaniach, takich jak Stable, Previewitp. Jeśli ten parametr nie zostanie jawnie ustawiony, Stable zostanie użyty jako domyślny.
--target-namespace Wskazuje przestrzeń nazw, w której zostanie utworzona wersja. Uprawnienie do konta systemowego utworzonego dla tego wystąpienia rozszerzenia będzie ograniczone do tej przestrzeni nazw. Istotne tylko wtedy, gdy scope jest ustawiona wartość namespace.

Pokaż szczegóły rozszerzenia

Aby wyświetlić szczegóły aktualnie zainstalowanego wystąpienia rozszerzenia, użyj polecenia k8s-extension show, przekazując wartości obowiązkowych parametrów.

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

Wyjście:

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

Wyświetlanie listy wszystkich rozszerzeń zainstalowanych w klastrze

Aby wyświetlić listę wszystkich rozszerzeń zainstalowanych w klastrze, użyj polecenia k8s-extension list, przekazując wartości dla parametrów obowiązkowych.

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

Wyjście:

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

Aktualizowanie wystąpienia rozszerzenia

Uwaga

Zapoznaj się z dokumentacją określonego typu rozszerzenia, aby zrozumieć określone ustawienia w --configuration-settings systemie i --configuration-protected-settings które można zaktualizować. W przypadku --configuration-protected-settingsopcji należy podać wszystkie ustawienia, nawet jeśli jest aktualizowane tylko jedno ustawienie. Jeśli którekolwiek z tych ustawień zostanie pominięte, te ustawienia zostaną uznane za przestarzałe i usunięte.

Aby zaktualizować istniejące wystąpienie rozszerzenia, użyj polecenia k8s-extension update, przekazując wartości dla parametrów obowiązkowych i opcjonalnych. Obowiązkowe i opcjonalne parametry są nieco inne niż parametry używane do tworzenia wystąpienia rozszerzenia.

W tym przykładzie zaktualizowano auto-upgrade-minor-version ustawienie wystąpienia rozszerzenia usługi Azure Machine Edukacja na 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

Wymagane parametry aktualizacji

Nazwa parametru opis
--name Nazwa wystąpienia rozszerzenia
--cluster-name Nazwa klastra, na którym ma zostać utworzone wystąpienie rozszerzenia
--resource-group Grupa zasobów zawierająca klaster
--cluster-type Typ klastra, na którym ma zostać utworzone wystąpienie rozszerzenia. W przypadku klastrów Kubernetes z obsługą usługi Azure Arc użyj polecenia connectedClusters. W przypadku klastrów usługi AKS użyj polecenia managedClusters.

Opcjonalne parametry aktualizacji

Nazwa parametru opis
--auto-upgrade-minor-version Właściwość logiczna określająca, czy wersja pomocnicza rozszerzenia jest automatycznie uaktualniana. Ustawienie domyślne to true. Jeśli ten parametr ma wartość true, nie można ustawić parametru version , ponieważ wersja zostanie dynamicznie zaktualizowana. Jeśli zostanie ustawiona wartość false, rozszerzenie nie zostanie automatycznie uaktualnione, nawet w przypadku wersji poprawek.
--version Wersja rozszerzenia, które ma zostać zainstalowane (określona wersja, aby przypiąć wystąpienie rozszerzenia do). Nie można podać, jeśli dla opcji auto-upgrade-minor-version ustawiono wartość true.
--configuration-settings Ustawienia, które można przekazać do rozszerzenia, aby kontrolować jego funkcjonalność. Są one przekazywane jako pary rozdzielane key=value spacjami po nazwie parametru. Jeśli ten parametr jest używany w poleceniu, --configuration-settings-file nie można go użyć w tym samym poleceniu. Należy podać tylko ustawienia wymagające aktualizacji. Podane ustawienia zostaną zastąpione określonymi wartościami.
--configuration-settings-file Ścieżka do pliku JSON z parami key=value , które mają być używane do przekazywania ustawień konfiguracji do rozszerzenia. Jeśli ten parametr jest używany w poleceniu, --configuration-settings nie można go użyć w tym samym poleceniu.
--configuration-protected-settings Ustawienia, których nie można pobrać przy użyciu GET Wywołania interfejsu API lub az k8s-extension show polecenia. Zazwyczaj używane do przekazywania poufnych ustawień. Są one przekazywane jako pary rozdzielane key=value spacjami po nazwie parametru. Jeśli ten parametr jest używany w poleceniu, --configuration-protected-settings-file nie można go użyć w tym samym poleceniu. Podczas aktualizowania ustawienia chronionego należy określić wszystkie ustawienia chronione. Jeśli którekolwiek z tych ustawień zostanie pominięte, te ustawienia zostaną uznane za przestarzałe i usunięte.
--configuration-protected-settings-file Ścieżka do pliku JSON z parami key=value , które mają być używane do przekazywania poufnych ustawień do rozszerzenia. Jeśli ten parametr jest używany w poleceniu, --configuration-protected-settings nie można go użyć w tym samym poleceniu.
--scope Zakres instalacji rozszerzenia — cluster lub namespace.
--release-train Autorzy rozszerzeń mogą publikować wersje w różnych pociągach wydaniach, takich jak Stable, Previewitp. Jeśli ten parametr nie zostanie jawnie ustawiony, Stable zostanie użyty jako domyślny.

Uaktualnianie wystąpienia rozszerzenia

Jak wspomniano wcześniej, jeśli ustawiono auto-upgrade-minor-version wartość true, rozszerzenie zostanie automatycznie uaktualnione po wydaniu nowej wersji pomocniczej. W przypadku większości scenariuszy zalecamy włączenie automatycznych uaktualnień. Jeśli ustawisz auto-upgrade-minor-version wartość false, musisz ręcznie uaktualnić rozszerzenie, jeśli chcesz mieć nowszą wersję.

Uaktualnienia ręczne są również wymagane do uzyskania nowego wystąpienia głównego rozszerzenia. Możesz wybrać, kiedy przeprowadzić uaktualnienie, aby uniknąć nieoczekiwanych zmian powodujących niezgodność z uaktualnieniami wersji głównych.

Aby ręcznie uaktualnić wystąpienie rozszerzenia, użyj k8s-extension update parametru version i ustaw go, aby określić wersję.

W tym przykładzie zaktualizowano wystąpienie rozszerzenia usługi Azure Machine Edukacja do wersji x.y.z:

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

Usuwanie wystąpienia rozszerzenia

Aby usunąć wystąpienie rozszerzenia w klastrze, użyj polecenia k8s-extension delete, przekazując wartości dla parametrów obowiązkowych:

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

Uwaga

Zasób platformy Azure reprezentujący to rozszerzenie zostanie natychmiast usunięty. Wydanie programu Helm w klastrze skojarzonym z tym rozszerzeniem jest usuwane tylko wtedy, gdy agenci działający w klastrze Kubernetes mają łączność sieciową i mogą ponownie skontaktować się z usługami platformy Azure, aby pobrać żądany stan.

Następne kroki