Bereitstellung aktualisieren

Nachdem Sie eine Bereitstellung erstellt haben, können Sie sie aktualisieren, wenn sich Ihre Anwendung oder Ihr Dienst ändert. Deployment Manager bietet zwei Möglichkeiten, eine bestehende Bereitstellung zu aktualisieren:

  • Ressourcen von einer Bereitstellung entfernen oder hinzufügen.
  • Die Properties vorhandener Ressourcen in Ihrer Bereitstellung aktualisieren.

Eine einzige Aktualisierung kann jede Kombination dieser Änderungen umfassen. Ihre Aktualisierung kann beispielsweise Änderungen an den Properties bestehender Ressourcen vornehmen und gleichzeitig in der gleichen Anfrage neue Ressourcen hinzufügen.

  1. Nehmen Sie Änderungen an der Konfigurationsdatei vor oder erstellen Sie eine neue Konfigurationsdatei mit den gewünschten Änderungen.
  2. Wählen Sie optional Richtlinien für Ihre Aktualisierung oder die Standardrichtlinien aus.
  3. Stellen Sie die Aktualisierungsanfrage an Deployment Manager.

Nicht alle Aktualisierungen werden unterstützt. Mehr Informationen erhalten Sie unter Einschränkungen.

Vorbereitung

Einschränkungen

Im Folgenden werden bestimmte Einschränkungen des Deployment Manager-Dienstes für Aktualisierungen beschrieben:

  • Sie können nur dann eine Aktualisierung durchführen, wenn sie von einer zugrunde liegenden API unterstützt wird.

    Deployment Manager nutzt die APIs der jeweiligen Dienste, um Ihre Bereitstellungen zu erstellen und zu bearbeiten. Wenn eine API keine Methode für eine bestimmte Anfrage bietet, kann Deployment Manager diese Anfrage für Ihre Bereitstellung nicht ausführen. Es liegt an Ihnen, herauszufinden, ob Ihre Aktualisierung durchgeführt werden kann. Wenn eine Aktualisierung nicht möglich ist, weist Deployment Manager die gesamte Anfrage zurück.

    Sehen Sie sich die API-Dokumentation für den entsprechenden Cloud Platform-Dienst, dessen Ressourcen Sie in Ihrer Bereitstellung aktualisieren wollen, an, um herauszufinden, ob Ihre Anfrage von Deployment Manager verarbeitet werden kann. Beispielsweise finden Sie in der API-Referenz für BigQuery eine Liste der verfügbaren Methoden für Google BigQuery.

    In manchen Fällen haben APIs benutzerdefinierte Verben für die Aktualisierung ihrer Ressourcen. Beispielsweise bietet Compute Engine eine benutzerdefinierte Methode mit dem Namen setMetadata, mit der die Metadaten einer Instanz aktualisiert werden. Deployment Manager versucht diese benutzerdefinierten Verben zu verwenden, wenn Sie verfügbar sind.

  • Sie können nur änderbare Ressourcen bearbeiten.

    Manche Ressourcen sind nicht änderbar, sobald sie erstellt wurden und können daher nicht aktualisiert werden. Oftmals ist eine nicht änderbare Ressource an einer nicht vorhandenen update-Methode oder einem nicht vorhandenen benutzerdefinierten Verb zur Aktualisierung der Properties der Ressource erkennbar.

    Wenn Sie versuchen, eine nicht änderbare Ressource zu aktualisieren, wird Deployment Manager bei dem Versuch, Ihre Konfiguration vor der Bereitstellung zu validieren, die Anfrage zurückweisen.

  • Sie können für jede Bereitstellung nur eine Aktualisierung gleichzeitig durchführen.

    Eine Bereitstellung kann zur gleichen Zeit nicht mehrfach aktualisiert werden. Sie können mit keiner neuen Aktualisierung beginnen, falls eine gerade eine Aktualisierung durchgeführt wird, aber Sie können eine bestehende Aktualisierung anhalten, wenn Sie eine neue starten wollen.

Änderungen an Ihrer Konfigurationsdatei

Wenn Sie eine bestehende Konfiguration gespeichert haben, können Sie Änderungen an der Konfiguration vornehmen und diese in Ihrer Aktualisierungsanfrage verwenden.

Wenn Sie keine bestehende Konfiguration gespeichert haben, können Sie eine neue Konfiguration erstellen und diese in Ihrer Aktualisierungsanfrage angeben. Informationen zum Erstellen einer Konfigurationsdatei finden Sie unter Konfigurationen.

Deployment Manager vergleicht die Konfiguration, die Sie in Ihrer Aktualisierung angegeben haben, mit dem bestehenden Manifest. Unterschiede werden dabei in Ihrer Bereitstellung aktualisiert.

Die folgende Tabelle zeigt beispielsweise zwei Konfigurationen: Eine beschreibt eine bestehende Bereitstellung und eine beschreibt den angestrebten aktualisierten Zustand der Bereitstellung. Sie geben die aktualisierte Konfiguration an und Deployment Manager untersucht die Unterschiede und führt entsprechend die Aktualisierung durch.

Die fett geschriebenen Teile dieses Beispiels sind die Unterschiede zwischen den Vorlagen: In diesem Beispiel wird eine bestehende Instanz-Ressource aktualisiert, um einige benutzerdefinierte Metadaten einzubeziehen und eine neue VM-Ressource zu der Bereitstellung hinzuzufügen.

Aktuelle Vorlage Aktualisierte Vorlage

resources:
- name: vm-created-by-cloud-config
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: machine-type-url
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: true
      initializeParams:
        diskName: disk-created-by-cloud-config
        sourceImage: image-url
    networkInterfaces:
    - network: network-url

resources:
- name: vm-created-by-cloud-config
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: machine-type-url
    disks:
    - deviceName: boot
      type: PERSISTENT
      boot: true
      initializeParams:
        diskName: disk-created-by-cloud-config
        sourceImage: image-url
    networkInterfaces:
    - network: network-url
    metadata:
      items:
      - key: 'foo'
        value: 'bar'
      - key: 'dev'
        value: 'vm'

- name: a-new-vm
  type: compute.v1.instance
  properties:
    zone: us-central1-a
    machineType: machine-type-url
      - deviceName: boot
      type: PERSISTENT
      boot: true
      autoDelete: false
      initializeParams:
        diskName: a-new-vm-disk
        sourceImage: image-url
    networkInterfaces:
    - network: network-url

(Optional) Aktualisierungsrichtlinien bestimmen

Bestimmen Sie, welche Aktualisierungsrichtlinien Sie verwenden wollen. Steuern Sie, wie Ihre Aktualisierungen angewandt werden, indem Sie die Aktualisierungsrichtlinien für jede Art der Aktualisierung wählen.

In den meisten Szenarien entsprechen die Standardrichtlinien Ihren Anforderungen. Daher ist es wahrscheinlich nicht nötig, explizit Richtlinien anzugeben und Deployment Manager nutzt die Standardrichtlinien. Die Standardrichtlinien für Aktualisierungen sind:

  • Standardrichtlinie für das Hinzufügen von Ressourcen ist CREATE_OR_ACQUIRE.
  • Standardrichtlinie für das Entfernen von Ressourcen ist DELETE.
  • Standardrichtlinie für Aktualisierungen ist UPDATE.

Mehr Informationen zu den einzelnen Richtlinien finden Sie in den Abschnitten unten.

Richtlinien für das Hinzufügen von Ressourcen

Wenn Sie Ressourcen hinzufügen, können Sie wählen, ob Sie neue Ressourcen erstellen wollen und diese zu einer Bereitstellung hinzufügen oder ob Sie eine bestehende Ressource beziehen wollen:

CREATE_OR_ACQUIRE[Standard] Deployment Manager ruft entweder die Ressource ab, wenn sie vorhanden ist, oder erstellt die Ressource, wenn sie noch nicht vorhanden ist. Um eine Ressource zu erhalten, sucht Deployment Manager nach einer vorhandenen Ressource, die Teil Ihres Projekts ist - ungeachtet dessen, ob sie ursprünglich von Deployment Manager erstellt wurde oder nicht. In Ihrer Vorlage müssen Sie noch die notwendigen Properties für diese Ressource angeben, so als ob Sie sie erstellen würden, und Deployment Manager nutzt diese Properties, um die zu beziehende Ressource zu finden.

ACQUIRE - Deployment Manager findet die bestehende Ressource und fügt Sie zu Ihrer Bereitstellung hinzu. Falls die Ressource nicht existiert, wird die Bereitstellung fehlschlagen. In Ihrer Konfiguration müssen Sie noch die notwendigen Properties für diese Ressource angeben, so als ob Sie sie erstellen würden, und Deployment Manager nutzt diese Properties, um die zu beziehende Ressource zu finden.

Sie können keine Ressourcen hinzufügen, die zu einem anderen GCP Console-Projekt gehören. Zudem sollten Sie keine Ressource hinzufügen, die bereits zu einer anderen Bereitstellung gehört, auch wenn Deployment Manager dies nicht verhindert.

Richtlinien für das Entfernen von Ressourcen

Geben Sie eine der folgenden Richtlinien zur Entfernung von Ressourcen an:

DELETE[Standard] Diese Richtlinie entfernt alle Verweise auf die Ressource aus der Bereitstellung und löscht die zugrunde liegende Ressource. Dies ist permanent und kann nicht rückgängig gemacht werden, aber Sie können sich dazu entscheiden, eine neue Ressource mit den gleichen Properties zu erstellen.

ABANDON - Dies entfernt alle Verweise auf die Ressource aus der Bereitstellung, löscht aber nicht die zugrunde liegende Ressource. Wenn Sie eine Instanz verwerfen, bedeutet das, dass sie aus der Bereitstellung entfernt wird. Die Instanz steht Ihnen aber noch zur Verfügung.

Richtlinien für die Aktualisierung einer bestehenden Ressource

Wenn eine UPDATE-Methode zur Aktualisierung von bestehenden Ressourcen vorhanden ist, wird Deployment Manager diese verwenden.

Wenn im Gegensatz dazu eine benutzerdefinierte Methode besteht, wird Deployment Manager diese verwenden. Beachten Sie, dass Deployment Manager nur benutzerdefinierte Methoden unterstützt, die das Verb set verwenden. Beispielsweise ist setMetadata() ein gültiges benutzerdefiniertes Verb, nicht aber addAccessConfigs().

(Optional) Vorschau einer benutzerdefinierten Konfiguration

Sie können sich mit dem Befehlszeilentool gcloud oder der API eine Vorschau der gewünschten Aktualisierung anzeigen lassen, bevor Sie Änderungen vornehmen. Der Deployment Manager-Dienst wird eine Vorschau der Konfiguration erstellen, indem er die gesamte Konfiguration expandiert und "shell"-Ressourcen erstellt.

Deployment Manager erstellt keine Instanzen von tatsächlichen Ressourcen, wenn Sie die Vorschau der Konfiguration anzeigen lassen. Dadurch haben Sie die Möglichkeit die Bereitstellung zu sehen, bevor Sie sich darauf festlegen.

gcloud

Stellen Sie mit dem Befehlszeilentool gcloud eine update-Anfrage mit dem --preview-Parameter:

gcloud deployment-manager deployments update example-deployment \
    --config configuration-file.yaml \
    --preview

API

In der API stellen Sie eine PUT()-Anfrage mit einer vorhandenen Bereitstellung und geben den Abfrageparameter preview=true an. Der Anfragetext muss die Felder intent, target und name enthalten. Die folgende API-Anfrage liefert eine Vorschau einer einfachen Aktualisierung:

PUT https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment?preview=true

{
 "target": {
  "config": {
   "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"
  }
 },
 "name": "example-deployment"
}

Nach der Vorschau der Bereitstellung können Sie sie die Konfiguration vollständig bereitstellen, indem Sie die gleiche update()-Anfrage nochmal stellen und dabei die Konfiguration und den preview-Abfrageparameter weglassen. Deployment Manager erinnert sich an Ihre letzte Vorschau und nutzt sie, um die Aktualisierung durchzuführen. Beispiel:

gcloud deployment-manager deployments update example-deployment

Weitere Informationen erhalten Sie im Abschnitt Die Aktualisierungsanfrage stellen.

Wenn Sie sich dazu entscheiden, die Aktualisierung nicht weiter durchzuführen, sollten Sie als Best Practice die aktuelle Vorschau abbrechen, bevor Sie eine weitere Anfrage bezüglich einer Aktualisierung oder Vorschau stellen.

Vorschau abbrechen

Nach Anzeige der Vorschau einer Aktualisierung müssen Sie sich entscheiden, ob Sie die Aktualisierung weiter durchführen wollen. Wenn Sie nicht fortfahren, sollten Sie die aktuelle Vorschau abbrechen, ehe Sie eine weitere Aktualisierungs- oder Vorschauanfrage stellen. Durch das Abbrechen einer Vorschau wird die Bereitstellung aus einem Vorschaustatus entfernt Eine Bereitstellung im Vorschaustatus lässt keine Aktualisierungen mit einer nicht übereinstimmenden Konfiguration zu.

Angenommen, Sie haben eine Bereitstellung mithilfe einer Konfiguration namens IhreMusterKonfiguration erstellt. Sie zeigen eine Vorschau der Konfiguration an und beschließen dann, eine Aktualisierung dieser Konfiguration durch eine andere Konfiguration namens IhreMusterKonfiguration-2 auszuführen. In diesem Fall überspringen Sie eine Vorschau auf diese neue Konfiguration. Da sich die Bereitstellung noch im Vorschaustatus befindet, können Sie die Aktualisierung nicht ausführen. Sie müssen zuerst die Vorschau abbrechen oder eine andere Vorschau mit IhreMusterKonfiguration-2 erstellen und dann mit der Aktualisierung fortfahren.

gcloud

Stellen Sie mit dem Befehlszeilentool gcloud eine deployments cancel-preview-Anfrage:

gcloud deployment-manager deployments cancel-preview my-first-deployment

API

In der API stellen Sie eine PUT()-Anfrage an die cancelPreview-Methode und geben die letzte Fingerabdruckeigenschaft an. Ein Fingerabdruck ist ein zufällig erzeugter Wert, der sich mit jeder Aktualisierungsanfrage ändert. Um widersprüchliche Änderungen zu vermeiden, sollten Sie den aktuellsten Fingerabdruck in Ihrer Anfrage angeben. Dadurch wird das optimistische Sperrverfahren genutzt, sodass nur eine Aktualisierung gleichzeitig durchgeführt werden kann.

Den aktuellsten Fingerabdruck einer Bereitstellung erhalten Sie, indem Sie die get()-Methode nutzen, um eine Bereitstellung abzurufen und nach dem Fingerabdruckwert zu suchen. Der Fingerabdruckwert sieht so aus:

"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="

Ihre cancelPreview()-Anfrage sieht so aus:

POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment/cancelPreview

{
 "fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
 }

Die Aktualisierungsanfrage stellen

So führen Sie die Aktualisierung durch:

gcloud

Verwenden Sie mit dem Befehlszeilentool gcloud den Unterbefehl deployments update, wobei Sie Ihre neue Konfiguration und optional Ihre Aktualisierungsrichtlinien angeben.

gcloud deployment-manager deployments update my-first-deployment \
    --config my-updated-config.yaml \
    --create-policy POLICY \
    --delete-policy POLICY

Wenn Sie zuvor eine Vorschau einer Konfiguration betrachtet haben, lassen Sie die Konfiguration weg. Deployment Manager verwendet dann die letzte Konfiguration, die als Vorschau angezeigt wurde, um die Aktualisierung durchzuführen.

gcloud deployment-manager deployments update my-first-deployment

API

In der API stellen Sie eine update-Anfrage und geben den letzten Fingerabdruckwert an. Ein Fingerabdruck ist ein zufällig erzeugter Wert, der sich mit jeder Aktualisierungsanfrage ändert. Um widersprüchliche Änderungen zu vermeiden, sollten Sie den aktuellsten Fingerabdruck in Ihrer Anfrage angeben. Dadurch wird das optimistische Sperrverfahren genutzt, sodass nur eine Aktualisierung gleichzeitig durchgeführt werden kann.

Den aktuellsten Fingerabdruck einer Bereitstellung erhalten Sie, indem Sie die get()-Methode nutzen, um eine Bereitstellung abzurufen und nach dem Fingerabdruckwert zu suchen. Der Fingerabdruckwert sieht so aus:

"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="

Geben Sie als nächstes den Fingerabdruckwert zusammen mit der neuen Konfiguration und den gewünschten Aktualisierungsrichtlinien in Ihrer Anfrage an. Wenn Sie zuvor eine Vorschau einer Konfiguration betrachtet haben, lassen Sie die Konfiguration weg und Deployment Manager verwendet die letzte Konfiguration, die als Vorschau angezeigt wurde, um die Aktualisierung durchzuführen.

PUT https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment?createPolicy=ACQUIRE&deletePolicy=ABANDON

{
 "target": {
  "config": {
   "content": "resources:\n- name: vm-created-by-cloud-config\n  type: compute.v1.instance\n  properties:\n    zone: us-central1-a\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n    disks:\n    - deviceName: boot\n      type: PERSISTENT\n      boot: true\n      autoDelete: true\n      initializeParams:\n        diskName: disk-created-by-cloud-config\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619\n    networkInterfaces:\n    - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default"
  }
 },
 "name": "example-deployment",
 "fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
}

Eine Aktualisierung anhalten

Sie können eine laufende Aktualisierung anhalten, indem Sie die Methode stop() verwenden. Dies bricht jeden weiteren Fortschritt einer bestimmten Aktualisierung ab, aber revidiert keine Änderungen, die bereits vorgenommen wurden.

Mehr Informationen über das Abbrechen einer Vorschau erhalten Sie im Abschnitt Eine Vorschau abbrechen.

gcloud

Stellen Sie mit dem Befehlszeilentool gcloud eine deployments stop-Anfrage:

gcloud deployment-manager deployments stop my-first-deployment

API

In der API stellen Sie eine POST()-Anfrage an die stop-Methode und geben die letzte Fingerabdruckeigenschaft an. Ein Fingerabdruck ist ein zufällig erzeugter Wert, der sich mit jeder Aktualisierungsanfrage ändert. Um widersprüchliche Änderungen zu vermeiden, sollten Sie den aktuellsten Fingerabdruck in Ihrer Anfrage angeben. Dadurch wird das optimistische Sperrverfahren genutzt, sodass nur eine Aktualisierung gleichzeitig durchgeführt werden kann.

Den aktuellsten Fingerabdruck einer Bereitstellung erhalten Sie, indem Sie die get()-Methode nutzen, um eine Bereitstellung abzurufen und nach dem Fingerabdruckwert zu suchen. Der Fingerabdruckwert sieht so aus:

"fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="

Ihre Anfrage sieht so aus:

POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment/stop

{
 "fingerprint": "nU2v7bzeA7gBBI8bdbtmFg=="
 }

Nächste Schritte

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Cloud Deployment Manager-Dokumentation