Definieren von wiederverwendbaren Updatestrategien mithilfe von Azure Kubernetes Fleet Manager

Gilt für: ✔️ Flottenmanager ✔️ Flottenmanager mit Hubcluster

Administratoren können die Reihenfolge der Updates für flottenverwaltete Cluster steuern, indem sie eine Reihe von Phasen und Gruppen definieren. Sie können konfigurieren, wann Genehmigungen und Pausen innerhalb dieser Phasen und Gruppen auftreten sollen. Die gesamte Konfiguration kann als Updatestrategie gespeichert werden, die unabhängig von Updateausführungen oder automatischen Upgrades verwaltet werden kann, sodass Strategien nach Bedarf wiederverwendet werden können.

In diesem Artikel wird beschrieben, wie Sie Updatestrategien mithilfe von Gruppen und Stufen definieren.

Ein Diagramm mit einer beispielhaften Updatestrategie mit zwei Updatephasen. Jede Updatephase enthält zwei Updategruppen. Jede Updategruppe enthält zwei Mitgliedercluster.

Voraussetzungen

  • Lesen Sie die konzeptionelle Übersicht über Flottenupdates, die eine Erläuterung von Updateausführungen, Phasen, Gruppen und Strategien enthält, auf die in diesem Handbuch verwiesen wird.

  • Sie müssen eine Flottenressource mit einem oder mehreren Mitgliedsclustern haben. Falls nicht, folgen Sie dem Schnellstart, um eine Flottenressource zu erstellen und Azure Kubernetes Service-Cluster (AKS) als Mitglieder aufzunehmen.

  • Legen Sie die folgenden Umgebungsvariablen fest:

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export CLUSTERID=<aks-cluster-resource-id>
    export STRATEGY=<strategy-name>
    
  • Wenn Sie den Azure CLI Anweisungen in diesem Artikel folgen, installieren Sie die neueste Version der Azure CLI. Informationen zum Ausführen einer Installation oder eines Upgrades finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle.

  • Sie benötigen auch die fleet Azure CLI Erweiterung. Führen Sie zum Installieren den folgenden Befehl aus:

    az extension add --name fleet
    

    Führen Sie den Befehl az extension update aus, um auf die neueste Version der veröffentlichten Erweiterung zu aktualisieren:

    az extension update --name fleet
    
  • Installieren und konfigurieren Sie Terraform.

  • Installieren Sie die aktuelle Version der Azure CLI. Informationen zum Ausführen einer Installation oder eines Upgrades finden Sie unter Installieren der Azure-Befehlszeilenschnittstelle. Sie verwenden die Azure CLI, um die Updatestrategie zu überprüfen, die Terraform erstellt.

  • Sie benötigen auch die fleet Azure CLI Erweiterung. Führen Sie zum Installieren den folgenden Befehl aus:

    az extension add --name fleet
    

    Führen Sie den az extension update Befehl aus, um auf die neueste Version der Erweiterung zu aktualisieren.

    az extension update --name fleet
    
  • Das in diesem Artikel verwendete Terraform-Beispiel erstellt eine eigene Ressourcengruppe und einen Azure Kubernetes Fleet Manager ohne Hubcluster. Es fügt keine AKS-Cluster als Bestandsmitglieder hinzu. Die Updatestrategie des Beispiels verweist auf die Namen der Updategruppen group-1, group-2und group-3. Damit die Strategie auf echte Updateläufe angewendet wird, weisen Sie vorhandenen Fleet-Memberclustern diesen Updategruppennamen zu, oder bearbeiten Sie die Blöcke des Beispiels group , um Ihren eigenen Updategruppennamen zu entsprechen.

Auswählen von Clustern für Ihre Strategie

Es gibt zwei Möglichkeiten, um auszuwählen, welche Cluster in jeder Phase und Gruppe Ihrer Updatestrategie enthalten sind, um die Updatesequenz zu steuern:

  • Mitgliedsbezeichnungen (empfohlen):Weisen Sie jedem Flottenmitglied Bezeichnungen zu und verwenden memberSelector Sie diese Bezeichnungen, um Mitglieder auszuwählen. Jedes Mitglied kann mehrere Labels haben.
  • Aktualisieren von Gruppen: Weisen Sie jedem Flottenmitglied eine Updategruppe zu, und definieren Sie dann Gruppen in Ihrer Strategie, die diesen Gruppennamen entsprechen. Jedes Mitglied kann nur zu einer Gruppe gehören.

Erstellt eine Updatestrategie mithilfe von Mitgliedsauswahlen (Vorschau)

Verwenden Sie Mitgliedsbezeichnungen, um Cluster in Ihren Aktualisierungsstrategien auszuwählen. Sie bieten mehr Flexibilität. Konzeptionelle Details finden Sie unter "Gruppencluster mit Mitgliedsbezeichnungen".

Important

Azure Kubernetes Fleet Manager-Vorschaufunktionen sind auf Self-Service-, Opt-In-Basis verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. Vorschauversionen von Azure Kubernetes Fleet Manager sind auf Best-Effort-Basis teilweise durch den Kundensupport abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen.

Etiketten auf Mitglieds-Clustern anwenden

Bezeichnungen anwenden, wenn Mitglieds-Cluster dem Netzwerk hinzugefügt werden

Verwenden Sie den az fleet member create Befehl, um Bezeichnungen auf Ihre Flottenmitglieder anzuwenden. Im folgenden Beispiel werden zwei Labels auf den Mitglieds-Cluster angewendet: env=staging und tier=frontend.

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --labels "env=staging tier=frontend"

Anwenden von Etiketten auf ein bestehendes Flottenmitglied

Verwenden Sie den az fleet member update Befehl, um Bezeichnungen auf Ihre Flottenmitglieder anzuwenden.

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --labels "env=staging tier=frontend"

Erstellen einer Updatestrategie

Eine Updatestrategie besteht aus einer oder mehreren Phasen, in denen eine Phase eine oder mehrere Updategruppen enthalten kann.

Hinweis

Eine Azure Portalerfahrung wird vor der allgemeinen Verfügbarkeit dieser Funktion verfügbar sein.

  1. Erstellen Sie eine JSON-Datei, um die Phasen und Gruppen für die Updateausführung zu definieren. Phasen werden sequenziell in der Reihenfolge ausgeführt, in der sie in der JSON-Datei angezeigt werden. Gruppen laufen in jeder Phase parallel ab. Die folgende Beispieldatei (example-labels-strategy.json) definiert eine Strategie mit zwei Stufen, memberSelector die zum Auswählen von Clustern anhand ihrer Bezeichnungen verwendet wird und optionale maxConcurrency Einstellungen enthält:

    • Die staging Phase verwendet eine Stufenebene memberSelector , um alle Cluster mit der Bezeichnung env=staging auszuwählen und eine implizite Gruppe zu erstellen.
    • Die production-Phase verwendet ein Stufen-memberSelector, um alle Cluster mit dem Label env=production vorzufiltern, und definiert dann zwei Gruppen, von denen jede ihren eigenen memberSelector hat, um Cluster nach dem tier-Label auszuwählen.

    Wenn memberSelector für eine Gruppe festgelegt wird, wird das Feld der Gruppe name nur als Anzeigebezeichner für Statusberichterstattung und Protokollierung verwendet und nicht mehr für die Aktualisierung der gruppenbasierten Auswahl von Flottenmitgliedern verwendet.

    {
        "stages": [
            {
                "name": "staging",
                "memberSelector": { "byLabel": "env=staging" },
                "maxConcurrency": "1",
                "afterStageWaitInSeconds": 600
            },
            {
                "name": "production",
                "memberSelector": { "byLabel": "env=production" },
                "maxConcurrency": "4",
                "groups": [
                    {
                        "name": "frontend",
                        "memberSelector": { "byLabel": "tier=frontend" },
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "backend",
                        "memberSelector": { "byLabel": "tier=backend" },
                        "maxConcurrency": "3"
                    }
                ]
            }
        ]
    }
    

Hinweis

Das maxConcurrency Feld ist optional und steuert, wie viele Cluster gleichzeitig auf Stufe oder Gruppenebene aktualisiert werden können. Verwenden Sie einen größeren Wert, um Cluster in der gesamten Flotte schneller zu aktualisieren, oder einen kleineren Wert für einen kontrollierteren Rollout, der den Explosionsradius begrenzt, falls Probleme auftreten.

Wenn eine Phase memberSelector ohne Gruppen verwendet wird (wie staging), bilden alle übereinstimmenden Mitglieder eine einzelne implizite Gruppe und die Phase steuert die Parallelität direkt mit maxConcurrency. Wenn Gruppen definiert sind (z production. B.), fungiert die Stufenebene maxConcurrency als allgemeine Obergrenze für alle Gruppen.

In diesem Beispiel legt die Phase stagingmaxConcurrency auf "1" fest, sodass Staging-Cluster nacheinander aktualisiert werden. In der production Phase sind bis zu "4" Cluster gleichzeitig zulässig, wobei die frontend und backend Gruppen jeweils auf "3" beschränkt sind.

Werte können eine feste ganze Zahl (z "3". B. ) oder ein Prozentsatz (z. B "50%". ) sein. Wenn diese Angabe weggelassen wird, wendet das System Standardwerte an. Ausführliche Informationen zur Auflösung dieser Werte und deren Obergrenzen finden Sie unter "Maximale Parallelität (Vorschau)".

  1. Erstellen Sie eine neue Updatestrategie mithilfe des Befehls az fleet updatestrategy create, wobei das --stages Flag auf den Namen Ihrer JSON-Datei festgelegt ist.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-labels-strategy.json
    

Erstellen einer Updatestrategie mithilfe von Updategruppen

Sie können Cluster in Updatestrategien auswählen, indem Sie sie einer einzelnen Updategruppe zuweisen. Definieren Sie eine Updatestrategie, die diese Updategruppen Phasen zuweist. Innerhalb einer Updatephase werden Updates parallel auf jede Updategruppe angewendet. Innerhalb einer Updategruppe werden Mitgliedercluster sequenziell aktualisiert.

Hinweis

Ein Flottenmitglied kann nur Teil einer Updategruppe sein, aber einer Updategruppe können mehrere Flottenmitglieder zugewiesen sein. Eine Aktualisierungsgruppe selbst ist kein separater Ressourcentyp. Updategruppen sind nur Zeichenfolgen, die Verweise von den Flottenmitgliedern darstellen. Wenn also alle Flottenmitglieder mit Verweisen auf eine gemeinsame Updategruppe gelöscht werden, ist diese spezifische Updategruppe nicht mehr vorhanden.

Zuweisen von Clustern zum Aktualisieren von Gruppen

Zuweisen zur Gruppe beim Hinzufügen eines Mitgliedsclusters zur Flotte

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure Kubernetes Fleet Manager-Ressource.

  2. Wählen Sie im Dienstmenü unter EinstellungenMitgliedscluster>Hinzufügen aus.

    Screenshot der Azure-Portalseite für Azure Kubernetes Fleet Manager zum Hinzufügen von Mitgliedsclustern.

  3. Wählen Sie den Cluster aus, den Sie hinzufügen möchten, und wählen Sie dann Weiter: Überprüfen + Hinzufügen aus.

  4. Geben Sie den Namen der Updategruppe ein, der Sie den Cluster zuweisen möchten, und wählen Sie dann Hinzufügen aus.

    Screenshot der Azure-Portalseite für Azure Kubernetes Fleet Manager – Überprüfung und Hinzufügen von Schritten für Membercluster.

Weisen Sie einem Mitgliedercluster eine Updategruppe zu, wenn Sie den Mitgliedscluster zur Flotte hinzufügen, indem Sie den Befehl az fleet member create verwenden, wobei der Parameter --update-group auf den Namen der Updategruppe festgelegt ist.

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --update-group group-1a

Zuweisen eines vorhandenen Flottenmitglieds zu einer Updategruppe

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure Kubernetes Fleet Manager-Ressource.

  2. Wählen Sie im Dienstmenü unter Einstellungen die Option Mitgliedscluster aus.

  3. Wählen Sie die Cluster aus, den/die Sie einer Updategruppe zuweisen möchten, und wählen Sie dann Updategruppe zuweisen aus.

    Screenshot: Seite im Azure-Portal zum Zuweisen von vorhandenen Mitgliedsclustern zu einer Gruppe.

  4. Geben Sie den Namen der Updategruppe ein, der Sie den Cluster zuweisen möchten, und wählen Sie dann Zuweisen aus.

    Screenshot: Seite im Azure-Portal für Mitgliedscluster, auf der das Formular zum Aktualisieren der Gruppe eines Mitgliedsclusters angezeigt wird.

Weisen Sie ein vorhandenes Flottenmitglied einer Updategruppe mithilfe des Befehls az fleet member update zu, wobei das --update-group Flag auf den Namen der Updategruppe festgelegt ist.

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --update-group group-1

Erstellen einer Updatestrategie

Eine Updatestrategie besteht aus einer oder mehreren Phasen, in denen eine Phase eine oder mehrere Updategruppen enthalten kann.

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure Kubernetes Fleet Manager-Ressource.

  2. Wählen Sie im Dienstmenü unter EinstellungenMulticlusterupdate>Strategien und dann Erstellen aus.

  3. Geben Sie einen Namen für den Server ein.

  4. Wenn Sie die Seite zum ersten Mal anzeigen, wird ein Erklärungsdiagramm zur Updatestrategie angezeigt, das ihnen dabei helfen kann, zu visualisieren, wie Strategien funktionieren.

    Screenshot: Erstellung einer Updatestrategie im Azure-Portal

  5. Wählen Sie Phase erstellen aus, und geben Sie Folgendes ein:

    • Der Phasenname - die Stufe benennen - muss für alle Phasennamen in der Strategie eindeutig sein.
    • (Optional) Phasengenehmigungen – Wählen Sie diese Option aus, wenn Sie vor dem Start dieser Phase oder nach Abschluss einer Genehmigung auf eine Genehmigung warten möchten. Weitere Informationen finden Sie unter Hinzufügen von Genehmigungen zum Aktualisieren von Gruppen und Phasen.
    • (Optional) Nach der Phase anhalten: Wählen Sie diese Option aus, wenn Sie eine Pause definieren möchten, bevor Sie zur nächsten Phase wechseln.
    • (Optional) Pausedauer – Wählen Sie eine vordefinierte Dauer aus, oder geben Sie einen benutzerdefinierten Wert in Sekunden ein.

    Screenshot des Azure-Portals mit der Erstellung der Azure Kubernetes Fleet Manager-Updatestrategiephase.

  6. Weisen Sie der Phase eine oder mehrere Aktualisierungsgruppe zu, und wählen Sie dann Erstellen aus.

    Hinweis

    Die maximale Anzahl von Updategruppen in jeder Updatephase beträgt 50.

    Screenshot des Azure-Portals mit der Erstellung der Updatestrategiephase von Azure Kubernetes Fleet Manager und dem Auswählen von Updategruppen, die einbezogen werden sollen.

In diesem Szenario erstellen wir Phasen und Gruppen, um die Details zuzuordnen, die für den Azure-Portalprozess verwendet werden.

  1. Erstellen Sie eine JSON-Datei, um die Phasen und Gruppen für die Updateausführung zu definieren. Phasen werden sequenziell in der Reihenfolge ausgeführt, in der sie in der JSON-Datei angezeigt werden. Gruppen werden innerhalb jeder Phase parallel ausgeführt, daher ist die Sortierung nicht wichtig. Die folgende Beispieldatei (example-stages.json) definiert eine Strategie mit zwei Stufen und enthält optionale maxConcurrency und maxAllowedFailures Einstellungen:

    {
        "stages": [
            {
                "name": "stage-1",
                "maxConcurrency": "7",
                "maxAllowedFailures": "2",
                "groups": [
                    {
                        "name": "group-1",
                        "maxConcurrency": "3",
                        "maxAllowedFailures": "1"
                    },
                    {
                        "name": "group-2",
                        "maxConcurrency": "50%",
                        "maxAllowedFailures": "25%"
                    }
                ],
                "afterStageWaitInSeconds": 300
            },
            {
                "name": "stage-2",
                "maxConcurrency": "100%",
                "maxAllowedFailures": "0",
                "groups": [
                    {
                        "name": "group-3",
                        "maxConcurrency": "2",
                        "maxAllowedFailures": "0"
                    }
                ]
            }
        ]
    }
    

    maxConcurrency

    Das maxConcurrency Feld ist optional und steuert, wie viele Cluster gleichzeitig auf Stufe oder Gruppenebene aktualisiert werden können. Verwenden Sie einen größeren Wert, um Cluster in der gesamten Flotte schneller zu aktualisieren, oder einen kleineren Wert für einen kontrollierteren Rollout, der den Explosionsradius begrenzt, falls Probleme auftreten.

    In diesem Beispiel setzt stage-1maxConcurrency auf "7", wodurch bis zu "7" Cluster in dieser Phase gleichzeitig aktualisiert werden können. Innerhalb von stage-1 und group-1 wird die Gleichzeitigkeit auf "3" Cluster begrenzt, was bedeutet, dass bis zu "3" innerhalb dieser Gruppe gleichzeitig aktualisiert werden können. group-2 ermöglicht bis zu "50%" seinen Clustern gleichzeitig ein Upgrade (z. B. wenn die Gruppe vier Cluster enthält, kann bis zu 2 gleichzeitig aktualisiert werden).

    Werte können eine feste ganze Zahl (z "3". B. ) oder ein Prozentsatz (z. B "100%". ) sein. Wenn diese Angabe weggelassen wird, wendet das System Standardwerte an. Ausführliche Informationen zur Auflösung dieser Werte und deren Obergrenzen finden Sie unter "Maximale Parallelität (Vorschau)".

    maxAllowedFailures

    Das Feld maxAllowedFailures ist optional und steuert, wie viele Fehlschläge bei der Aktualisierung von Mitglieder-Clustern toleriert werden, bevor die Gruppe oder Stufe als fehlgeschlagen markiert wird. Standardmäßig (wenn nicht festgelegt oder "0") ein einzelner Fehler die gesamte Updateausführung beendet.

    Diese Einstellung wertet die Fehleranzahl nur aus. Sie erzwingt keine minimale Erfolgsquote. Eine Gruppe oder Phase kann daher auch mit Completed enden, selbst wenn einige oder alle Mitglieder ausgefallen sind, solange der Fehlerschwellenwert nicht überschritten war, als Fleet seine Planungsentscheidungen getroffen hat.

    In diesem Beispiel setzt stage-1maxAllowedFailures auf "2" und toleriert dabei bis zu zwei Ausfälle von Mitgliedern in der gesamten Phase. Innerhalb stage-1 toleriert group-1 den Ausfall von "1" und group-2 toleriert den Ausfall von "25%" seiner Mitglieder (z. B. wenn die Gruppe 4 Cluster enthält, wird der Ausfall von bis zu 1 Cluster toleriert). stage-2 legt maxAllowedFailures auf "0" fest, was bedeutet, dass jeder Fehler den Lauf sofort stoppt und dies häufig für Produktionsphasen nützlich ist.

    Bevorzugen Sie für die meisten Rollouts prozentbasierte Werte, da sie auf unterschiedlichen Gruppengrößen besser skaliert werden. Vermeiden Sie es, den Wert auf die Gesamtzahl der Mitglieder festzulegen, es sei denn, Sie möchten für dieses Segment absichtlich ein Verhalten, bei dem es praktisch „nie fehlschlägt“.

    Werte können eine feste ganze Zahl (z "3". B. ) oder ein Prozentsatz (z. B "25%". ) sein. Ausführliche Informationen dazu, wie diese Werte behoben werden, finden Sie unter Maximal zulässige Fehler (Vorschau).

  2. Erstellen Sie eine neue Updatestrategie mithilfe des Befehls az fleet updatestrategy create, wobei das --stages Flag auf den Namen Ihrer JSON-Datei festgelegt ist.

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-stages.json
    

Das Terraform-Beispiel in diesem Abschnitt erstellt dieselbe Form einer zweistufigen Strategie, die im vorherigen Azure CLI-Beispiel gezeigt wurde: stage-1 enthält group-1 und group-2, die parallel aktualisiert werden; darauf folgt eine Wartezeit von 300 Sekunden, und anschließend aktualisiert stage-2group-3. Im Gegensatz zum CLI-JSON-Beispiel setzt das Beispiel maxConcurrency oder maxAllowedFailures weder für eine Stufe noch für eine Gruppe, sodass Fleet seine Standardwerte verwendet. Um diese Einstellungen hinzuzufügen, erweitern Sie die Blöcke group und stage in azurerm_kubernetes_fleet_update_strategy mit den entsprechenden main.tf-Argumenten.

Überprüfen Sie den Terraform-Code

Hinweis

Der Beispielcode für diesen Artikel befindet sich im Azure Terraform-GitHub-Repository. Zeigen Sie die Protokolldatei an, die die Testergebnisse aus den aktuellen und früheren Versionen von Terraform enthält.

Sehen Sie weitere Artikel und Beispielcode, die zeigen, wie Terraform zur Verwaltung von Azure-Ressourcen verwendet wird.

  1. Erstellen Sie ein Verzeichnis, um den Terraform-Beispielcode zu testen, und machen Sie es zum aktuellen Verzeichnis.

  2. Erstellen Sie eine Datei namens providers.tf, und fügen Sie den folgenden Code ein:

    terraform {
      required_version = ">= 1.9.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.77"
        }
        random = {
          source  = "hashicorp/random"
          version = "~> 3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  3. Erstellen Sie eine Datei namens variables.tf, und fügen Sie den folgenden Code ein:

    variable "location" {
      type        = string
      description = "Azure region where the resource group and Fleet Manager are created."
      default     = "eastus"
    }
    
    variable "resource_group_name" {
      type        = string
      description = "Name of the resource group. If null, a unique name is generated."
      default     = null
    }
    
    variable "fleet_name" {
      type        = string
      description = "Name of the Azure Kubernetes Fleet Manager. If null, a unique name is generated."
      default     = null
    }
    
    variable "update_strategy_name" {
      type        = string
      description = "Name of the Fleet update strategy."
      default     = "example-update-strategy"
    }
    
    variable "tags" {
      type        = map(string)
      description = "Tags to apply to created resources."
      default = {
        environment = "demo"
        managed_by  = "terraform"
      }
    }
    
  4. Erstellen Sie eine Datei namens main.tf, und fügen Sie den folgenden Code ein:

    resource "random_string" "suffix" {
      length  = 6
      lower   = true
      numeric = true
      special = false
      upper   = false
    }
    
    locals {
      resource_group_name = coalesce(var.resource_group_name, "rg-fleet-update-strategy-${random_string.suffix.result}")
      fleet_name          = coalesce(var.fleet_name, "fleet-update-strategy-${random_string.suffix.result}")
    }
    
    resource "azurerm_resource_group" "example" {
      name     = local.resource_group_name
      location = var.location
      tags     = var.tags
    }
    
    resource "azurerm_kubernetes_fleet_manager" "example" {
      name                = local.fleet_name
      location            = azurerm_resource_group.example.location
      resource_group_name = azurerm_resource_group.example.name
      tags                = var.tags
    }
    
    resource "azurerm_kubernetes_fleet_update_strategy" "example" {
      name                        = var.update_strategy_name
      kubernetes_fleet_manager_id = azurerm_kubernetes_fleet_manager.example.id
    
      stage {
        name = "stage-1"
    
        group {
          name = "group-1"
        }
    
        group {
          name = "group-2"
        }
    
        after_stage_wait_in_seconds = 300
      }
    
      stage {
        name = "stage-2"
    
        group {
          name = "group-3"
        }
      }
    }
    
  5. Erstellen Sie eine Datei namens outputs.tf, und fügen Sie den folgenden Code ein:

    output "resource_group_name" {
      description = "Name of the created resource group."
      value       = azurerm_resource_group.example.name
    }
    
    output "fleet_manager_id" {
      description = "Resource ID of the Azure Kubernetes Fleet Manager."
      value       = azurerm_kubernetes_fleet_manager.example.id
    }
    
    output "fleet_manager_name" {
      description = "Name of the Azure Kubernetes Fleet Manager."
      value       = azurerm_kubernetes_fleet_manager.example.name
    }
    
    output "update_strategy_id" {
      description = "Resource ID of the Fleet update strategy."
      value       = azurerm_kubernetes_fleet_update_strategy.example.id
    }
    
  6. Kopieren Sie die Beispieldatei terraform.tfvars nach terraform.tfvars.example in demselben Verzeichnis, und bearbeiten Sie dann die Werte für die Azure-Region, den Namen der Ressourcengruppe, den Fleetnamen, den Namen der Aktualisierungsstrategie und die Tags, die Sie verwenden möchten.

    cp terraform.tfvars.example terraform.tfvars
    

Initialisieren, Überprüfen und Anwenden der Konfiguration

Führen Sie terraform init aus, um die Terraform-Bereitstellung zu initialisieren. Mit diesem Befehl werden die Azure Anbieter heruntergeladen, die zum Verwalten Ihrer Azure Ressourcen erforderlich sind.

terraform init

Führen Sie terraform fmt aus, um die Konfigurationsdateien konsistent zu formatieren.

terraform fmt

Führen Sie terraform validate , um zu bestätigen, dass die Konfigurationsdateien syntaktisch gültig sind.

terraform validate

Führen Sie terraform plan aus, um einen Ausführungsplan zu erstellen.

terraform plan -out main.tfplan

Führen Sie terraform apply aus, um den Ausführungsplan auf Ihre Cloudinfrastruktur anzuwenden.

terraform apply main.tfplan

Überprüfen Sie die Updatestrategie

Rufen Sie die Namen der Ressourcengruppe und des Flottenmanagers aus den Terraform-Ausgaben ab, und extrahieren Sie den Strategienamen aus der update_strategy_id Ausgabe.

resource_group_name=$(terraform output -raw resource_group_name)
fleet_manager_name=$(terraform output -raw fleet_manager_name)
update_strategy_name=$(terraform output -raw update_strategy_id | awk -F'/' '{print $NF}')

Zeigen Sie die Phasen und Gruppen der Strategie mithilfe des az fleet updatestrategy show Befehls an.

az fleet updatestrategy show \
  --resource-group $resource_group_name \
  --fleet-name $fleet_manager_name \
  --name $update_strategy_name

Das Array der Befehlsausgabe stages zeigt stage-1 mit group-1 und group-2 sowie einem afterStageWaitInSeconds-Wert von 300, gefolgt von stage-2 mit group-3, was der in main.tf definierten Strategie entspricht.

Bereinigen von Ressourcen

Führen Sie terraform plan mit dem Schalter -destroy aus, um einen Ausführungsplan zum Zerstören zu erstellen.

terraform plan -destroy -out main.destroy.tfplan

Führen Sie terraform apply aus, um den Destroy-Plan anzuwenden.

terraform apply main.destroy.tfplan

Warning

Dieser Befehl löscht die Updatestrategie, den Azure Kubernetes Fleet Manager und die von diesem Beispiel erstellte Ressourcengruppe, nicht nur die Strategie. Vergewissern Sie sich, dass die Ressourcengruppe keine anderen Ressourcen enthält, die Sie beibehalten möchten, bevor Sie diesen Befehl ausführen.

Nächste Schritte

Sie können eine Updatestrategie als Teil eines manuellen Updatelaufs oder eines Profils für automatische Upgrades verwenden. Siehe: