VM-Erweiterungen durch Erstellen von Erweiterungsrichtlinien installieren

In diesem Dokument wird beschrieben, wie Sie VM-Erweiterungsrichtlinien erstellen, mit denen Sie Erweiterungen automatisch auf einer Flotte von Compute Engine-VMs installieren und verwalten können. Durch das Definieren einer Richtlinie können Sie dafür sorgen, dass bestimmte Erweiterungen auf allen VMs installiert und verwaltet werden, die von Ihnen angegebene Kriterien wie VM-Labels erfüllen.

Hinweise

Erforderliche IAM-Rollen

Um die Berechtigung zum Erstellen einer Erweiterungsrichtlinie zu erhalten, bitten Sie Ihren Administrator, Ihnen die IAM-Rolle VM Extension Policy Admin (roles/compute.vmExtensionPolicyAdmin) zuzuweisen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigung compute.vmExtensionPolicies.create, die zum Erstellen einer Erweiterungsrichtlinie erforderlich ist.

Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen zu IAM-Rollen und ‑Berechtigungen in Compute Engine finden Sie unter Compute Engine-Rollen und ‑Berechtigungen.

Richtlinienpriorität und Konfliktlösung

Wenn mehrere Richtlinien für dieselbe VM gelten, verwendet der VM Extension Manager die Richtlinienpriorität, um Konflikte zu lösen.

Wenn zwei Richtlinien für dieselbe Erweiterung in Konflikt stehen, hat die Richtlinie mit der höheren Priorität Vorrang. Die Prioritätswerte reichen von 0 bis 65.535, wobei eine niedrigere Zahl eine höhere Priorität bedeutet. Die Standardpriorität ist 1.000. Wenn mehrere Richtlinien dieselbe Priorität haben, wendet der VM Extension Manager die zuletzt aktualisierte Richtlinie auf die VMs an. Wenn Sie eine Richtlinie löschen, wird die Erweiterung nicht entfernt, wenn eine Richtlinie mit niedrigerer Priorität weiterhin auf die VM angewendet wird.

Globale VM-Erweiterungsrichtlinie erstellen

Sie können eine globale VM-Erweiterungsrichtlinie erstellen, um Erweiterungen gemäß einem Roll-out-Plan auf VMs in mehreren Zonen in Ihrem Projekt zu installieren. Eine globale VM-Erweiterungsrichtlinie wird nicht direkt auf VMs angewendet. Stattdessen erstellt VM Extension Manager im Rahmen des Rollouts der Richtlinie Richtlinien in jeder Zone basierend auf dem Rollout-Plan. Mit diesen Richtlinien wird dann die Installation von Erweiterungen auf VMs in den jeweiligen Zonen verwaltet.

Sie können globale Erweiterungsrichtlinien entweder mit der gcloud CLI oder mit der Methode globalVmExtensionPolicies.insert erstellen.

Roll-out-Pläne

Globale VM-Erweiterungsrichtlinien verwenden Rollout-Pläne, um die Bereitstellung von Erweiterungen an verschiedenen Standorten zu verwalten. Sie können einen der vordefinierten Rollout-Pläne verwenden oder einen benutzerdefinierten Rollout-Plan erstellen.

Vordefinierte Roll-out-Pläne

  • slow_rollout: Die Richtlinie wird über fünf Tage hinweg eingeführt. Der langsame Rollout ist der Standard-Rolloutplan.
  • fast_rollout: Die Richtlinie wird sofort für alle Zonen eingeführt.

Benutzerdefinierte Einführungspläne

Sie können benutzerdefinierte Rollout-Pläne mit der Methode rolloutPlans.insert erstellen. Im folgenden JSON wird beispielsweise ein Rollout-Plan namens test-rollout-plan definiert, der auf zwei Zonen ausgerichtet ist:

{
  "name": "test-rollout-plan",
  "waves": [
    {
      "selectors": [
        {
          "locationSelector": {
            "includedLocations": [
              "us-central1-a",
              "us-west1-a"
            ]
          }
        }
      ],
      "validation": {
        "type": "time",
        "timeBasedValidationMetadata": {
          "waitDuration": "0s"
        }
      },
      "orchestrationOptions": {
        "maxConcurrentResourcesPerLocation": "10",
        "maxConcurrentLocations": "10"
      }
    }
  ]
}

Sie können diesen benutzerdefinierten Rollout-Plan dann beim Erstellen einer globalen Richtlinie verwenden, wie in Beispiel 2 gezeigt.

Globale Richtlinie erstellen

Verwenden Sie den Befehl gcloud beta compute global-vm-extension-policies create, um eine globale Richtlinie für VM-Erweiterungen zu erstellen:

  gcloud beta compute global-vm-extension-policies create POLICY_NAME 
--description="DESCRIPTION"
--extensions=EXTENSION_NAME_1,EXTENSION_NAME_2
--version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2
--config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2
--inclusion-labels=KEY_1=VALUE_1
--priority=PRIORITY
--rollout-predefined-plan=ROLLOUT_PLAN
--rollout-conflict-behavior=ROLLOUT_CONFLICT_BEHAVIOR

Ersetzen Sie Folgendes:

  • POLICY_NAME: Ein Name für die VM-Erweiterungsrichtlinie.
  • DESCRIPTION: eine optionale Beschreibung der Richtlinie.
  • EXTENSION_NAME_1,EXTENSION_NAME_2: Eine durch Kommas getrennte Liste von Erweiterungen, die der Richtlinie hinzugefügt werden sollen. Sie müssen mindestens eine Erweiterung angeben. Gültige Werte für die Erweiterungen sind:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, wobei der Schlüssel der Name der Erweiterung und der Wert die Version der Erweiterung ist. Wenn Sie keine Version für eine Erweiterung angeben, verwendet VM Extension Manager die neueste verfügbare Version und führt automatisch ein Upgrade durch, wenn neue Versionen verfügbar werden.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, wobei der Schlüssel der Name der Erweiterung und der Wert der Pfad zur Konfigurationsdatei für diese Erweiterung ist. Diese Datei befindet sich auf der VM, auf der Sie den Befehl gcloud ausführen, nicht auf der VM, auf der Sie die Erweiterung installieren.

    Alternativ können Sie die Konfiguration als Inline-String angeben. Verwenden Sie dazu das Flag --config anstelle von --config-from-file, z. B. EXTENSION_NAME_1="CONFIG_1". Sie können entweder --config-from-file oder --config verwenden, aber nicht beides im selben Befehl.

  • KEY_1=VALUE_1: Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, die Einschlusslabels für einen Selektor definieren. VMs müssen alle angegebenen Labels in einem Selektor haben, damit sie als Ziel infrage kommen. Wenn Sie --inclusion-labels mehrmals angeben, richtet sich die Richtlinie an VMs, die einen beliebigen der angegebenen Selektoren entsprechen (logisches ODER). Wenn Sie dieses Flag weglassen, gilt die Richtlinie für alle VMs in Ihrem Projekt in allen Zonen.

  • PRIORITY: Eine Ganzzahl, die die Priorität der Richtlinie definiert. Größere Zahlen stehen für eine höhere Priorität. Der Standardwert ist 0. Wenn mehrere Richtlinien dieselbe Priorität haben, wird die Richtlinie, die zuletzt aktualisiert wurde, auf die VMs angewendet.

  • ROLLOUT_PLAN: Geben Sie slow_rollout oder fast_rollout an. Wenn Sie einen benutzerdefinierten Einführungsplan verwenden möchten, verwenden Sie das Flag --rollout-custom-plan anstelle von --rollout-predefined-plan und geben Sie den Namen des Plans an, z. B.:

      --rollout-custom-plan=projects/PROJECT_NUMBER/locations/global/rolloutPlans/ROLLOUT_PLAN_NAME
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: Das Projekt, in dem der Roll-out-Plan definiert ist.
    • ROLLOUT_PLAN_NAME: Der Name des benutzerdefinierten Roll-out-Plans, den Sie definiert haben. Wenn kein Flag für den Roll-out-Plan angegeben ist, wird slow_rollout verwendet.
  • ROLLOUT_CONFLICT_BEHAVIOR: Gibt das Verhalten an, wenn ein Konflikt zwischen einer zonalen und einer globalen Richtlinie erkannt wird. Folgende Werte sind möglich:

    • "" (leerer String): Der zonale Richtlinienwert wird verwendet.
    • overwrite: Die globale Richtlinie überschreibt die zonale Richtlinie.

      Weitere Informationen finden Sie unter Flag --rollout-conflict-behavior.

    Beispiel 1

    Mit dem folgenden Befehl wird eine Richtlinie mit dem Namen global-test-extension-policy erstellt, mit der die Erweiterung ops-agent für das Projekt test-project installiert wird. Das Flag --config-from-file gibt den Pfad zu einer lokalen Datei mit einer YAML-Konfiguration für den Ops-Agenten an und --rollout-predefined-plan gibt den slow_rollout-Plan an.

    gcloud beta compute global-vm-extension-policies create global-test-extension-policy \
        --project=test-project \
        --extensions=ops-agent \
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
        --rollout-predefined-plan=slow_rollout

    Beispiel 2

    Mit dem folgenden Befehl wird eine Richtlinie namens global-test-extension-policy-2 erstellt, mit der die Erweiterung ops-agent für das Projekt test-project auf VMs mit dem Label env=prod installiert wird. Die Richtlinienpriorität ist auf 500 festgelegt und das Flag --config-from-file gibt den Pfad zu einer lokalen Datei mit einer YAML-Konfiguration für den Ops-Agent an. Das Flag --rollout-custom-plan gibt einen benutzerdefinierten Roll-out-Plan an.

     gcloud beta compute global-vm-extension-policies create global-test-extension-policy-2 \
        --project=test-project \
        --extensions=ops-agent \
        --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
        --priority=500 \
        --inclusion-labels=env=prod \
        --rollout-custom-plan=projects/12345678/locations/global/rolloutPlans/test-rollout-plan

Zonale VM-Erweiterungsrichtlinie erstellen

Verwenden Sie eine der folgenden Methoden, um eine zonale VM-Erweiterungsrichtlinie zu erstellen. Mit dieser zonalen Richtlinie wird festgelegt, welche Erweiterungen auf welchen VMs in einer bestimmten Zone installiert werden sollen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite VM-Erweiterungsrichtlinien auf.

    Zu VM-Erweiterungsrichtlinien

  2. Klicken Sie auf Erweiterungsrichtlinie erstellen.
  3. Geben Sie im Feld Name einen Namen für die Richtlinie ein.
  4. Optional: Geben Sie im Feld Beschreibung eine Beschreibung für die Richtlinie ein.
  5. Geben Sie im Feld Priorität eine Prioritätsnummer an, um Konflikte zwischen Richtlinien zu beheben. Niedrigere Zahlen bedeuten eine höhere Priorität. Der Standardwert ist 1.000.
  6. Wählen Sie in der Liste Zone die Zone aus, in der Sie diese Richtlinie anwenden möchten.
  7. Klicken Sie im Bereich Erweiterungen auf Erweiterung hinzufügen und gehen Sie für jede Erweiterung, die Sie auf den Ziel-VMs installieren möchten, so vor:
    1. Wählen Sie in der Liste Erweiterung eine Erweiterung aus. Weitere Informationen zu unterstützten Erweiterungen
    2. Geben Sie in der Liste Version die Versionsnummer der Erweiterung an. Lassen Sie das Feld leer, um die neueste Version auszuwählen.
      • Für den Ops-Agent können Sie die Version 2.58.0 oder höher angeben.
      • Lassen Sie das Feld für die Erweiterung für SAP und die Erweiterung für Compute-Arbeitslasten leer, um die aktuelle Version auszuwählen.
    3. Optional: Geben Sie im Feld Inhalt der Konfigurationsdatei Konfigurationsparameter für die Erweiterung ein.
  8. Wählen Sie im Abschnitt Ziel-VM-Instanzen die VMs für die Richtlinie aus. Wenn Sie VMs mit bestimmten Labels auswählen möchten, klicken Sie auf Labels hinzufügen und fügen Sie das Schlüssel/Wert-Paar hinzu.
  9. Klicken Sie auf Erstellen.

gcloud

Wenn Sie eine zonale VM-Erweiterungsrichtlinie erstellen und die Richtlinie auf VMs in einer bestimmten Zone anwenden möchten, verwenden Sie den Befehl gcloud beta compute zone-vm-extension-policies create:

gcloud beta compute zone-vm-extension-policies create POLICY_NAME \
    --zone=ZONE \
    --description="DESCRIPTION" \
    --extensions=EXTENSION_NAME_1,EXTENSION_NAME_2 \
    --version=EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2 \
    --config-from-file=EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2 \
    --inclusion-labels=KEY_1=VALUE_1 \
    --priority=PRIORITY

Ersetzen Sie Folgendes:

  • POLICY_NAME: Ein Name für die VM-Erweiterungsrichtlinie.
  • ZONE: die Zone, in der diese Richtlinie gilt.
  • DESCRIPTION: eine optionale Beschreibung der Richtlinie.
  • EXTENSION_NAME_1,EXTENSION_NAME_2: Eine durch Kommas getrennte Liste der Erweiterungen, die der Richtlinie hinzugefügt werden sollen. Sie müssen mindestens eine Erweiterung angeben. Gültige Werte für die Erweiterungen sind:
    • ops-agent
    • google-cloud-sap-extension
    • google-cloud-workload-extension
  • EXTENSION_NAME_1=VERSION_1,EXTENSION_NAME_2=VERSION_2: Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, wobei der Schlüssel der Name der Erweiterung und der Wert die Version der Erweiterung ist. Wenn Sie keine Version für eine Erweiterung angeben, verwendet VM Extension Manager die neueste verfügbare Version und führt automatisch ein Upgrade durch, wenn neue Versionen verfügbar werden.

  • EXTENSION_NAME_1=CONFIG_FILE_PATH_1,EXTENSION_NAME_2=CONFIG_FILE_PATH_2: eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, wobei der Schlüssel der Name der Erweiterung und der Wert der Pfad zur Konfigurationsdatei für diese Erweiterung ist. Dieser Pfad befindet sich auf der VM, auf der Sie den gcloud-Befehl ausführen, nicht auf der VM, auf der Sie die Erweiterung installieren.

    Alternativ können Sie die Konfiguration als Inline-String angeben. Verwenden Sie dazu das Flag --config anstelle von --config-from-file, z. B. EXTENSION_NAME_1="CONFIG_1". Sie können entweder --config-from-file oder --config verwenden, aber nicht beides im selben Befehl.

  • KEY_1=VALUE_1: Eine durch Kommas getrennte Liste von Schlüssel/Wert-Paaren, die Einschlusslabels für einen Selektor definieren. VMs müssen alle angegebenen Labels in einem Selektor haben, damit sie als Ziel infrage kommen. Wenn Sie --inclusion-labels mehrmals angeben, richtet sich die Richtlinie an VMs, die einen beliebigen der angegebenen Selektoren entsprechen (logisches ODER). Wenn Sie dieses Flag weglassen, gilt die Richtlinie für alle VMs in der angegebenen Zone.

  • PRIORITY: Eine Ganzzahl zwischen 0 und 65.535, die die Priorität der Richtlinie definiert. Niedrigere Zahlen bedeuten eine höhere Priorität. Der Standardwert ist 1.000.

    Der Befehl schlägt fehl, wenn in der Zone bereits eine Richtlinie mit dem angegebenen Namen vorhanden ist.

Beispiel 1

Mit dem folgenden Befehl wird eine Richtlinie mit dem Namen test-extension-policy erstellt, mit der die Erweiterung ops-agent in der Zone us-central1-f für das Projekt test-project installiert wird. Das Flag --config-from-file gibt den Pfad zu einer lokalen Datei mit einer YAML-Konfiguration für den Ops-Agent an.

gcloud beta compute zone-vm-extension-policies create test-extension-policy  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml"

Beispiel 2

Mit dem folgenden Befehl wird eine Richtlinie mit dem Namen test-extension-policy-2 erstellt, die die Erweiterung ops-agent in der Zone us-central1-f für das Projekt test-project auf VMs mit dem Label env=prod installiert. Die Richtlinienpriorität ist auf 500 festgelegt und das Flag --config-from-file gibt den Pfad zu einer lokalen Datei mit einer YAML-Konfiguration für den Ops-Agent an.

 gcloud beta compute zone-vm-extension-policies create test-extension-policy-2  \
    --project=test-project \
    --zone=us-central1-f \
    --extensions=ops-agent \
    --config-from-file=ops-agent="/usr/ops-agent-config.yaml" \
    --priority=500 \
    --inclusion-labels=env=prod

Nächste Schritte