A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://cloud.google.com/compute/docs/instance-groups/configuring-stateful-metadata-in-migs below:

Configuring stateful metadata in MIGs | Compute Engine Documentation

Skip to main content Configuring stateful metadata in MIGs

Stay organized with collections Save and categorize content based on your preferences.

Instance metadata is useful for setting properties for and communicating with your applications through the metadata server. For example, you can use metadata to configure the identity of the virtual machine (VM) instance, environment variables, information about cluster architecture, or data range that a VM is responsible for.

By configuring stateful metadata in a managed instance group (MIG), you ensure that instance-specific metadata is preserved on managed instance autohealing, update, and recreate events.

Configure stateful metadata individually for VM instances in a MIG by setting it in per-instance configurations and applying the configuration. You can set a per-instance configuration on instance creation or against existing managed instances. After the per-instance configuration is applied, the MIG stores stateful metadata in the preserved state from configuration (preservedStateFromConfig) field of a managed instance.

Note: If a MIG's instance template and per-instance configuration define metadata with the same key and different values, the value from the per-instance configuration is used for the associated VM. Before you begin Limitations

A MIG with stateful metadata has the following limitations:

A MIG with stateful configuration—a stateful MIG—has the following limitations:

Set stateful metadata when manually creating instances in a MIG. This is useful for migrating a stateful application on standalone VMs to a stateful MIG and when creating stateful instances.

When you manually create an instance in a MIG and supply stateful metadata, the MIG performs the following tasks:

  1. Creates a managed instance from the instance template using the provided instance name.
  2. Creates a per-instance configuration with the provided stateful metadata and sets that metadata on the instance.
  3. Stores the stateful metadata in the preserved state from configuration (preservedStateFromConfig) of the associated managed instance.
gcloud

To create a managed instance with a custom name and to set stateful metadata on that VM, use the gcloud compute instance-groups managed create-instance command with the --stateful-metadata flag.

gcloud compute instance-groups managed create-instance NAME \
  --instance INSTANCE_NAME \
  --stateful-metadata KEY=VALUE[,KEY=VALUE,...]

Replace the following:

Example

You need to deploy a cluster of nodes, example-cluster, that can operate in one of two modes: active or standby. You set the mode individually for each VM in a cluster using metadata, for example: mode:active. You also configure how elaborate logging should be for each node, using a logging metadata key that can be set to basic or elaborate. The application on the node is configured using values from instance metadata.

To create an active node, node-12, with elaborate logging, you would run the following command:

gcloud compute instance-groups managed create-instance example-cluster \
  --instance node-12 \
  --stateful-metadata mode=active,logging=elaborate

The command creates a VM, node-12, in the example-cluster MIG and sets two metadata key-value pairs, mode:active and logging:elaborate, for the new instance.

Terraform

To create a managed instance with a custom name and to set stateful metadata on that VM, use the google_compute_per_instance_config resource.

The following sample uses a zonal MIG. If you don't have a zonal MIG yet, then create a zonal MIG with VMs confined to a single zone.

To learn how to apply or remove a Terraform configuration, see Basic Terraform commands.

REST

To create one or multiple managed instances in a MIG with custom VM names and to set stateful metadata individually on these VMs, use the instanceGroupManagers.createInstances method. For a regional MIG, use the regionInstanceGroupManagers.createInstances method.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/createInstances
{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "metadata": {
          "KEY" : "VALUE",
          ...
        }
      }
    },
    ...
  ]
}

Replace the following:

Example

You need to deploy a cluster of nodes, example-cluster, that can operate in one of two modes: active or standby. You set the mode individually for each VM in a cluster using metadata, for example: mode:active. You also configure how elaborate logging should be for each node, using a logging metadata key that can be set to basic or elaborate. The application on the node is configured using values from instance metadata.

To create an active node, node-12, with elaborate logging, execute the following method:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/createInstances

{
  "instance": [
    {
      "name": "node-12",
      "preservedState" : {
        "metadata": {
          "mode":"active",
          "logging":"elaborate"
        }
      }
    }
  ]
}

The method creates a VM, node-12, in the example-cluster MIG and sets two metadata key-value pairs, mode:active and logging:elaborate, for the new instance.

Set, modify, or remove stateful metadata for an existing instance in a MIG by setting it in an associated per-instance configuration and then applying the configuration by updating the instance.

gcloud

To configure stateful metadata individually for a VM instance in a MIG, set or remove stateful metadata in the associated per-instance configuration. If you apply the configuration to the instance at the same time (--update-instance), you can choose whether to keep the instance running, restart it, or recreate it. If you do not apply the configuration (--no-update-instance), your changes do not take effect until you recreate or update the instance.

If a per-instance configuration doesn't exist for a given instance, use the gcloud compute instance-groups managed instance-configs create command with one of the following flags:

gcloud compute instance-groups managed instance-configs create NAME \
  --instance INSTANCE_NAME \
  --stateful-metadata KEY=VALUE[,KEY=VALUE,...] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

If a per-instance configuration already exists for a given instance, use the gcloud compute instance-groups managed instance-configs update command with:

gcloud compute instance-groups managed instance-configs update NAME \
  --instance INSTANCE_NAME \
  [--stateful-metadata KEY=VALUE[,KEY=VALUE,...]] \
  [--remove-stateful-metadata KEY[,KEY,...]] \
  [--no-update-instance | --update-instance] \
  [--instance-update-minimal-action MINIMAL_ACTION]

Replace the following:

Example

You have a cluster of nodes, example-cluster, that can operate in one of two modes: active or standby. You set the mode individually for each VM in the cluster using metadata, for example: mode:active. You also configure how elaborate logging should be for each node, using a logging metadata key that can be set to basic or elaborate. The application on each node consumes the values from instance metadata.

The instance template defines mode:active and logging:basic metadata to be used as default for all instances. You have set logging:elaborate in a per-instance configuration for the node-12 VM in the cluster. Now, you want to switch node-12 to standby mode and switch logging to basic for this VM.

To switch the node-12 instance to standby and its logging to basic, run the following command:

gcloud compute instance-groups managed instance-configs update example-cluster \
  --instance node-12 \
  --stateful-metadata mode=standby \
  --remove-stateful-metadata logging

The command does the following:

  1. Sets mode:standby metadata in the per-instance configuration that is associated with the VM, node-12, in the example-cluster MIG.
  2. Removes logging:elaborate metadata from the per-instance configuration for the node-12 instance.
  3. Applies the per-instance configuration change to the node-12 VM:
  4. The change is applied to the VM immediately by default because the flag --no-update-instance is omitted.
  5. The VM keeps running during the update because the --instance-update-minimal-action flag is omitted and the least disruptive action is chosen for the update by default, in this case: refresh.
REST

To configure stateful metadata individually for existing VM instances in a MIG, set or remove the metadata in the associated per-instance configurations. Then update the instance to apply the configuration.

If per-instance configurations do not yet exist for the given instances, use the instanceGroupManagers.updatePerInstanceConfigs method with stateful metadata:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/updatePerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "metadata": {
          "KEY": "VALUE",
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}
Note: You can use the updatePerInstanceConfigs method to update existing per-instance configurations. In this case, the method fully replaces the specified per-instance configurations with the values you specify. It is safer to use the patchPerInstanceConfigs method to update existing per-instance configurations because patching keeps the omitted configuration unchanged and prevents the risk of accidental deletion of stateful items or reset of values to their defaults.

If per-instance configurations already exist for the given instances, use the instanceGroupManagers.patchPerInstanceConfigs method

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/NAME/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "INSTANCE_NAME",
      "preservedState" : {
        "metadata": {
          "KEY": "VALUE",
          ...
        }
      },
      "fingerprint: "FINGERPRINT"
    },
    ...
  ]
}

Replace the following:

The updatePerInstanceConfigs and patchPerInstanceConfigs methods update the specified per-instance configurations but do not apply the configuration updates to the associated VM instances. The changes are applied to a VM when you update or recreate the instance. To apply the changes to a VM, you can apply the update manually or use the Updater in proactive or opportunistic mode.

Example

You have a cluster of nodes, example-cluster, that can operate in one of two modes: active or standby. You set the mode individually for each VM in the cluster using metadata, for example: mode:active. You also configure how elaborate logging should be for each node, using a logging metadata key that can be set to basic or elaborate. The application on each node consumes the values from instance metadata.

The instance template defines mode:active and logging:basic metadata to be used as default for all instances. You have set logging:elaborate in a per-instance configuration for the node-12 VM in the cluster. Now, you want to switch node-12 to standby mode and switch logging to basic for this instance.

To switch the node-12 VM to standby and its logging to basic, patch the associated per-instance configuration by using the patchPerInstanceConfigs method:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/patchPerInstanceConfigs

{
  "perInstanceConfigs": [
    {
      "name": "node-12",
      "preservedState" : {
        "metadata": {
          "mode": "standby",
          "logging": null
        }
      }
    }
  ]
}

The method does the following:

  1. Sets mode:standby metadata in the per-instance configuration associated with the VM, node-12, in the example-cluster MIG.
  2. Removes logging:elaborate metadata from the per-instance configuration because the supplied value is null.

The configuration update is not yet applied to the node-12 VM instance. The configuration update will be applied when you next recreate or update the instance or if you use proactive auto-updating.

To apply the per-instance configuration update to the node-12 VM instance, call the instanceGroupManagers.applyUpdatesToInstances method for the instance:

POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-east1-c/instanceGroupManagers/example-cluster/applyUpdatesToInstances

{
  "instances": ["/zones/us-east1-c/instances/node-12"],
  "minimalAction": "NONE"
}

The method applies the updated per-instance configuration to the node-12 VM:

  1. Sets mode:standby metadata, according to the per-instance configuration.
  2. Sets logging:basic metadata from the instance template because the value for the logging key is no longer defined by the per-instance configuration.
  3. The VM keeps running during the update because minimalAction is set to NONE, which allows the MIG to use the least disruptive action required for the update. An instance metadata update requires the REFRESH action, which does not disrupt a running instance.
Feedback

We want to learn about your use cases, challenges, and feedback about stateful MIGs. Please share your feedback with our team at mig-discuss@google.com.

What's next

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-08-07 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[[["Instance metadata allows for setting properties and communicating with applications through the metadata server, such as configuring VM identity, environment variables, or cluster architecture."],["Stateful metadata in managed instance groups (MIGs) preserves instance-specific metadata during autohealing, updates, and recreate events, stored in the `preservedStateFromConfig` field."],["Stateful metadata can be set individually for VMs within a MIG using per-instance configurations, either during instance creation or on existing instances, with per-instance configurations taking priority over instance template settings."],["Modifications to stateful metadata for existing instances involve updating the per-instance configuration, which can then be applied to the instance with options to keep the instance running, restart, or recreate it."],["A MIG with stateful configuration can not be used with autoscaling, must use `RECREATE` for rolling updates, and proactive redistribution must be disabled for stateful regional MIGs."]]],[]]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4