> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EC2 Auto Scaling

> AWS EC2 Auto Scaling. Keeps a set number of EC2 instances running across Availability Zones, replacing unhealthy ones and resizing the group on policy or schedule.

**On this page**

* [Coverage by target cloud](#coverage-by-target-cloud)
* [How the targets compare](#how-the-targets-compare)
  * [Max adaptation](#max-adaptation)
  * [Infrastructure-only adaptation](#infrastructure-only-adaptation)
* [On Google Cloud](#on-google-cloud)
* [On Azure](#on-azure)
* [On OCI](#on-oci)
* [On Private Kubernetes](#on-private-kubernetes)

## Coverage by target cloud

| Target             | Available |
| ------------------ | --------- |
| Google Cloud       | ✓         |
| Azure              | ✓         |
| OCI                | ✓         |
| Private Kubernetes | ✓         |

## How the targets compare

Each row compares a capability of EC2 Auto Scaling with its adaptation on each target.
A dash means this row is not stated for that target.

### Max adaptation

| Capability                                     | EC2 Auto Scaling                                                       | OCI                                                                                                                           | Private Kubernetes                                                                                                                    |
| ---------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Fleet size · desired replicas                  | desired\_capacity                                                      | desired replica count; readiness follows allocation and health                                                                | desired replica count; readiness follows allocation and health                                                                        |
| Autoscaling bounds · min / max                 | min\_size / max\_size                                                  | the autoscaling configuration's bounds                                                                                        | the horizontal pod autoscaler's bounds                                                                                                |
| Per-instance configuration · instance settings | launch template / launch configuration / mixed-instances policy        | the standalone-instance mapping                                                                                               | the standalone-instance mapping                                                                                                       |
| Zonal spread · multi-AZ                        | vpc\_zone\_identifier                                                  | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones. | Zone spread requires nodes with zone topology labels, scheduling rules that use them, and schedulable capacity in each selected zone. |
| Fleet orchestration · AWS orchestration APIs   | lifecycle hooks / instance refresh / warm pools / on-demand-spot split | AWS orchestration APIs not reproduced; native provisioning rollout is target-specific                                         | AWS orchestration APIs not reproduced; native provisioning rollout is target-specific                                                 |
| API coverage                                   | full                                                                   | high                                                                                                                          | high                                                                                                                                  |

### Infrastructure-only adaptation

| Capability                                     | EC2 Auto Scaling                                                       | Google Cloud                                                                                                                  | Azure                                                                                                                         | OCI                                                                                                                           | Private Kubernetes                                                                                                                    |
| ---------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| Fleet size · desired replicas                  | desired\_capacity                                                      | desired replica count; readiness follows allocation and health                                                                | desired replica count; readiness follows allocation and health                                                                | desired replica count; readiness follows allocation and health                                                                | desired replica count; readiness follows allocation and health                                                                        |
| Autoscaling bounds · min / max                 | min\_size / max\_size                                                  | the regional autoscaler's bounds                                                                                              | the autoscale setting's bounds                                                                                                | the autoscaling configuration's bounds                                                                                        | the horizontal pod autoscaler's bounds                                                                                                |
| Per-instance configuration · instance settings | launch template / launch configuration / mixed-instances policy        | the standalone-instance mapping                                                                                               | the standalone-instance mapping                                                                                               | the standalone-instance mapping                                                                                               | the standalone-instance mapping                                                                                                       |
| Zonal spread · multi-AZ                        | vpc\_zone\_identifier                                                  | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones. | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones. | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones. | Zone spread requires nodes with zone topology labels, scheduling rules that use them, and schedulable capacity in each selected zone. |
| Fleet orchestration · AWS orchestration APIs   | lifecycle hooks / instance refresh / warm pools / on-demand-spot split | AWS orchestration APIs not reproduced; native provisioning rollout is target-specific                                         | AWS orchestration APIs not reproduced; native provisioning rollout is target-specific                                         | AWS orchestration APIs not reproduced; native provisioning rollout is target-specific                                         | AWS orchestration APIs not reproduced; native provisioning rollout is target-specific                                                 |
| API coverage                                   | full                                                                   | high                                                                                                                          | high                                                                                                                          | high                                                                                                                          | high                                                                                                                                  |

## On Google Cloud

| Operation                                                                            | Area                | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                         |
| ------------------------------------------------------------------------------------ | ------------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Scaling policy (target-tracking / step)                                              | Autoscaling         | Partial      | Most usage   | A supported metric-driven policy maps to the regional autoscaler's utilization targets or threshold rules. Review translated thresholds: metric definitions, evaluation windows, cooldowns and scaling timing follow the target autoscaler. Custom or ASG-specific metrics need a supported target trigger; size bounds alone do not create a scaling policy. |
| min\_size / max\_size                                                                | Autoscaling         | Supported    | Common       | Map to the regional autoscaler's bounds on desired capacity; min==max fixes the desired count. These bounds do not guarantee ready capacity or cap temporary replicas during replacement.                                                                                                                                                                     |
| SetDesiredCapacity / runtime scaling-policy mutations                                | Control plane       | Out of scope | Full surface | SetDesiredCapacity and runtime scaling-policy changes are outside this mapping. Set size and bounds through infrastructure-as-code or the owning service's supported lifecycle configuration. The runtime group API separately supports discovery and deletion.                                                                                               |
| Fleet provisioning (aws\_autoscaling\_group)                                         | Fleet lifecycle     | Supported    | Common       | your aws\_autoscaling\_group compiles to a Google Compute Engine regional managed instance group, one managed group whose instances use the same configuration                                                                                                                                                                                                |
| Lifecycle hooks / instance refresh / warm pools / mixed-instances distribution       | Fleet orchestration | Out of scope | Full surface | The AWS StartInstanceRefresh API, lifecycle hooks, warm pools and on-demand/Spot distribution are outside this mapping. Target-native rolling replacement during provisioning is separate and follows the target's documented update policy where supported.                                                                                                  |
| desired\_capacity                                                                    | Fleet sizing        | Supported    | Common       | Sets the desired number of replicas using the same launch configuration. Running and ready capacity converge as allocation, scheduling and health checks complete.                                                                                                                                                                                            |
| Instance blueprint (launch template / launch configuration / mixed-instances policy) | Instance definition | Supported    | Common       | the ASG's instance definition (sourced from a launch template, a legacy launch configuration, or a mixed-instances policy) uses the same instance mapping as a standalone Compute Engine instance, so every replica inherits the disk, subnet, security groups, identity, and metadata of a single instance                                                   |
| Instance metadata + identity on every replica                                        | Metadata + identity | Supported    | Most usage   | each replica gets the same read-only instance-metadata (IMDS) API and workload identity as a standalone instance, so per-replica service discovery and credential lookups keep working                                                                                                                                                                        |
| Multi-AZ placement (vpc\_zone\_identifier)                                           | Placement           | Supported    | Most usage   | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones.                                                                                                                                                                                                                                 |

#### How it works

On AWS an `aws_autoscaling_group` packs the fleet and its instance blueprint into one resource. On Google Cloud that same fleet compiles to **three resources**: a `google_compute_instance_template` (the immutable blueprint) feeds versions into a `google_compute_region_instance_group_manager`, the **regional MIG** that runs the replicas, and a separate `google_compute_region_autoscaler` holds the size bounds and the scaling metric and drives the MIG.

`desired_capacity` becomes the MIG's desired `target_size`. Ready capacity follows allocation, startup and health checks. `min_size` and `max_size` become the autoscaler's `min_replicas`/`max_replicas`. Because the MIG is regional, it spreads its replicas across the zones of the region on its own and recreates any replica that fails a health check, so the multi-AZ resilience the ASG was deployed for is preserved by the MIG itself.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjE0IiB2aWV3Qm94PSIwIDAgODM2IDIxNCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBHb29nbGUgQ2xvdWQgdGhlIEF1dG8gU2NhbGluZyBncm91cCBtYXBzIHRvIGFuIGltbXV0YWJsZSBpbnN0YW5jZSB0ZW1wbGF0ZSwgYSByZWdpb25hbCBtYW5hZ2VkIGluc3RhbmNlIGdyb3VwIHdpdGggYSBkZXNpcmVkIHJlcGxpY2EgY291bnQsIGFuZCBhIHNlcGFyYXRlIGF1dG9zY2FsZXIgZm9yIGEgZGVjbGFyZWQgc2NhbGluZyBwb2xpY3kuIFJ1bm5pbmcgYW5kIHJlYWR5IHJlcGxpY2FzIGRlcGVuZCBvbiBjYXBhY2l0eSBhbGxvY2F0aW9uIGFuZCBoZWFsdGggY2hlY2tzIGFjcm9zcyB0aGUgc2VsZWN0ZWQgem9uZXMuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImdjcGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjIwIiB5PSIyNCIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+T04gR09PR0xFIENMT1VEIMK3IFRIUkVFIFJFU09VUkNFUzwvdGV4dD4KPHJlY3QgeD0iMjAiIHk9IjU4IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjEwOSIgeT0iODYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZV90ZW1wbGF0ZTwvdGV4dD4KPHRleHQgeD0iMTA5IiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPmJsdWVwcmludCDCtyBpbW11dGFibGU8L3RleHQ+Cjx0ZXh0IHg9IjEwOSIgeT0iMTI2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5tYWNoaW5lIMK3IGltYWdlPC90ZXh0Pgo8dGV4dCB4PSIxMDkiIHk9IjE0MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+ZGlzayDCtyBuZXR3b3JrIMK3IFNBPC90ZXh0Pgo8bGluZSB4MT0iMTk4IiB5MT0iMTA0IiB4Mj0iMjUwIiB5Mj0iMTA0IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2djcGFoKSIvPgo8dGV4dCB4PSIyMjQiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij52ZXJzaW9uPC90ZXh0Pgo8cmVjdCB4PSIyNTQiIHk9IjQ0IiB3aWR0aD0iMzI4IiBoZWlnaHQ9IjE0MCIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjQxOCIgeT0iNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTJweCI+cmVnaW9uYWwgTUlHPC90ZXh0Pgo8dGV4dCB4PSI0MTgiIHk9Ijg4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6OS41cHgiPnRhcmdldF9zaXplIMK3IHNwcmVhZCBhY3Jvc3MgdGhlIHJlZ2lvbidzIHpvbmVzPC90ZXh0Pgo8cmVjdCB4PSIyNjgiIHk9IjEwNCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjYyIiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+CjxyZWN0IHg9IjM3MCIgeT0iMTA0IiB3aWR0aD0iOTYiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iNDcyIiB5PSIxMDQiIHdpZHRoPSI5NiIgaGVpZ2h0PSI2MiIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8dGV4dCB4PSIzMTYiIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPnJlcGxpY2E8L3RleHQ+Cjx0ZXh0IHg9IjQxOCIgeT0iMTMyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEwLjVweCI+cmVwbGljYTwvdGV4dD4KPHRleHQgeD0iNTIwIiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTAuNXB4Ij5yZXBsaWNhPC90ZXh0Pgo8dGV4dCB4PSIzMTYiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+em9uZSBhPC90ZXh0Pgo8dGV4dCB4PSI0MTgiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+em9uZSBiPC90ZXh0Pgo8dGV4dCB4PSI1MjAiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+em9uZSBjPC90ZXh0Pgo8bGluZSB4MT0iNjI4IiB5MT0iMTA0IiB4Mj0iNTg2IiB5Mj0iMTA0IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2djcGFoKSIvPgo8dGV4dCB4PSI2MDciIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij50YXJnZXRzPC90ZXh0Pgo8cmVjdCB4PSI2MzIiIHk9IjU4IiB3aWR0aD0iMTg0IiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjcyNCIgeT0iODYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTAuNXB4Ij5yZWdpb25fYXV0b3NjYWxlcjwvdGV4dD4KPHRleHQgeD0iNzI0IiB5PSIxMDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPm1pbiDihpQgbWF4IHJlcGxpY2FzPC90ZXh0Pgo8dGV4dCB4PSI3MjQiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+Y3B1IC8gTEIgdXRpbGl6YXRpb248L3RleHQ+Cjx0ZXh0IHg9IjcyNCIgeT0iMTQyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5zZXBhcmF0ZSByZXNvdXJjZTwvdGV4dD4KPC9zdmc+" alt="On Google Cloud the Auto Scaling group maps to an immutable instance template, a regional managed instance group with a desired replica count, and a separate autoscaler for a declared scaling policy. Running and ready replicas depend on capacity allocation and health checks across the selected zones." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjE0IiB2aWV3Qm94PSIwIDAgODM2IDIxNCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBHb29nbGUgQ2xvdWQgdGhlIEF1dG8gU2NhbGluZyBncm91cCBtYXBzIHRvIGFuIGltbXV0YWJsZSBpbnN0YW5jZSB0ZW1wbGF0ZSwgYSByZWdpb25hbCBtYW5hZ2VkIGluc3RhbmNlIGdyb3VwIHdpdGggYSBkZXNpcmVkIHJlcGxpY2EgY291bnQsIGFuZCBhIHNlcGFyYXRlIGF1dG9zY2FsZXIgZm9yIGEgZGVjbGFyZWQgc2NhbGluZyBwb2xpY3kuIFJ1bm5pbmcgYW5kIHJlYWR5IHJlcGxpY2FzIGRlcGVuZCBvbiBjYXBhY2l0eSBhbGxvY2F0aW9uIGFuZCBoZWFsdGggY2hlY2tzIGFjcm9zcyB0aGUgc2VsZWN0ZWQgem9uZXMuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImdjcGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjIwIiB5PSIyNCIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPk9OIEdPT0dMRSBDTE9VRCDCtyBUSFJFRSBSRVNPVVJDRVM8L3RleHQ+CjxyZWN0IHg9IjIwIiB5PSI1OCIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIxMDQiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSIxMDkiIHk9Ijg2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwLjVweCI+aW5zdGFuY2VfdGVtcGxhdGU8L3RleHQ+Cjx0ZXh0IHg9IjEwOSIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5ibHVlcHJpbnQgwrcgaW1tdXRhYmxlPC90ZXh0Pgo8dGV4dCB4PSIxMDkiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bWFjaGluZSDCtyBpbWFnZTwvdGV4dD4KPHRleHQgeD0iMTA5IiB5PSIxNDIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmRpc2sgwrcgbmV0d29yayDCtyBTQTwvdGV4dD4KPGxpbmUgeDE9IjE5OCIgeTE9IjEwNCIgeDI9IjI1MCIgeTI9IjEwNCIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNnY3BhaCkiLz4KPHRleHQgeD0iMjI0IiB5PSI5NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+dmVyc2lvbjwvdGV4dD4KPHJlY3QgeD0iMjU0IiB5PSI0NCIgd2lkdGg9IjMyOCIgaGVpZ2h0PSIxNDAiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI0MTgiIHk9IjcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEycHgiPnJlZ2lvbmFsIE1JRzwvdGV4dD4KPHRleHQgeD0iNDE4IiB5PSI4OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjkuNXB4Ij50YXJnZXRfc2l6ZSDCtyBzcHJlYWQgYWNyb3NzIHRoZSByZWdpb24ncyB6b25lczwvdGV4dD4KPHJlY3QgeD0iMjY4IiB5PSIxMDQiIHdpZHRoPSI5NiIgaGVpZ2h0PSI2MiIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8cmVjdCB4PSIzNzAiIHk9IjEwNCIgd2lkdGg9Ijk2IiBoZWlnaHQ9IjYyIiByeD0iOCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjQ3MiIgeT0iMTA0IiB3aWR0aD0iOTYiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHRleHQgeD0iMzE2IiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5yZXBsaWNhPC90ZXh0Pgo8dGV4dCB4PSI0MTgiIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMC41cHgiPnJlcGxpY2E8L3RleHQ+Cjx0ZXh0IHg9IjUyMCIgeT0iMTMyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEwLjVweCI+cmVwbGljYTwvdGV4dD4KPHRleHQgeD0iMzE2IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPnpvbmUgYTwvdGV4dD4KPHRleHQgeD0iNDE4IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPnpvbmUgYjwvdGV4dD4KPHRleHQgeD0iNTIwIiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPnpvbmUgYzwvdGV4dD4KPGxpbmUgeDE9IjYyOCIgeTE9IjEwNCIgeDI9IjU4NiIgeTI9IjEwNCIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNnY3BhaCkiLz4KPHRleHQgeD0iNjA3IiB5PSI5NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+dGFyZ2V0czwvdGV4dD4KPHJlY3QgeD0iNjMyIiB5PSI1OCIgd2lkdGg9IjE4NCIgaGVpZ2h0PSIxMDQiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI3MjQiIHk9Ijg2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwLjVweCI+cmVnaW9uX2F1dG9zY2FsZXI8L3RleHQ+Cjx0ZXh0IHg9IjcyNCIgeT0iMTA2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5taW4g4oaUIG1heCByZXBsaWNhczwvdGV4dD4KPHRleHQgeD0iNzI0IiB5PSIxMjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmNwdSAvIExCIHV0aWxpemF0aW9uPC90ZXh0Pgo8dGV4dCB4PSI3MjQiIHk9IjE0MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+c2VwYXJhdGUgcmVzb3VyY2U8L3RleHQ+Cjwvc3ZnPg==" alt="On Google Cloud the Auto Scaling group maps to an immutable instance template, a regional managed instance group with a desired replica count, and a separate autoscaler for a declared scaling policy. Running and ready replicas depend on capacity allocation and health checks across the selected zones." />
</div>

<p className="t9-caption">On Google Cloud the ASG splits into three resources: a standalone instance template, the regional MIG that runs the replicas, and a separate regional autoscaler that drives the MIG's size.</p>

#### The instance template

Google Cloud stores the instance settings in a **separate, immutable template**. The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) compiles to a standalone `google_compute_instance_template` that defines the machine type, the translated boot image, disks, network placement, and the workload identity (service account). The MIG references it by version.

Because instance templates are immutable, a change to the blueprint is a new template plus a rolling replacement driven by the MIG's update policy, never an in-place edit of a running instance. Every replica the MIG brings up boots from that template through the same instance mapping as a standalone Compute Engine VM, so each is a full instance with its own disks, subnet, security rules, identity, and read-only metadata surface.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgbWFwcyB0byBvbmUgaW1tdXRhYmxlIGdvb2dsZV9jb21wdXRlX2luc3RhbmNlX3RlbXBsYXRlIGhvbGRpbmcgdGhlIG1hY2hpbmUgdHlwZSwgYm9vdCBpbWFnZSwgZGlza3MsIG5ldHdvcmssIGFuZCBzZXJ2aWNlLWFjY291bnQgaWRlbnRpdHkuIFRoZSByZWdpb25hbCBNSUcgcmVmZXJlbmNlcyBhIHRlbXBsYXRlIHZlcnNpb24gYW5kIHN0YW1wcyBldmVyeSByZXBsaWNhIGZyb20gaXQ7IGJlY2F1c2UgdGhlIHRlbXBsYXRlIGlzIGltbXV0YWJsZSwgY2hhbmdpbmcgdGhlIGJsdWVwcmludCBpcyBhIG5ldyB0ZW1wbGF0ZSB2ZXJzaW9uIHBsdXMgYSByb2xsaW5nIHJlcGxhY2VtZW50LCBuZXZlciBhbiBpbi1wbGFjZSBlZGl0LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJnY3BibGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyMCIgeT0iMjQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkFTRyBJTlNUQU5DRSBERUZJTklUSU9OIOKGkiBPTkUgSU1NVVRBQkxFIFRFTVBMQVRFPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIyMDYiIGhlaWdodD0iMTMyIiByeD0iMTIiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIxMjMiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjEwcHgiPkFTRyBpbnN0YW5jZSBkZWZpbml0aW9uPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iNzQiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiLz4KPHRleHQgeD0iMTIzIiB5PSI5MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIHRlbXBsYXRlPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTA2IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIi8+Cjx0ZXh0IHg9IjEyMyIgeT0iMTIzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OTsgZm9udC1zaXplOjkuNXB4Ij5sYXVuY2ggY29uZmlndXJhdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEzOCIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIvPgo8dGV4dCB4PSIxMjMiIHk9IjE1NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZvbnQtc2l6ZTo5LjVweCI+bWl4ZWQtaW5zdGFuY2VzIHBvbGljeTwvdGV4dD4KPGxpbmUgeDE9IjIyOCIgeTE9IjEwNiIgeDI9IjI3NCIgeTI9IjEwNiIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNnY3BibGFoKSIvPgo8dGV4dCB4PSIyNTEiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5tYXBzPC90ZXh0Pgo8cmVjdCB4PSIyNzgiIHk9IjQwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjEzMiIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjQyOCIgeT0iNjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZV90ZW1wbGF0ZTwvdGV4dD4KPHRleHQgeD0iNDI4IiB5PSI4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+c3RhbmRhbG9uZSDCtyBpbW11dGFibGU8L3RleHQ+CjxyZWN0IHg9IjI5MiIgeT0iOTQiIHdpZHRoPSIyNzIiIGhlaWdodD0iNjYiIHJ4PSI4IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHRleHQgeD0iNDI4IiB5PSIxMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+bWFjaGluZSB0eXBlIMK3IGJvb3QgaW1hZ2U8L3RleHQ+Cjx0ZXh0IHg9IjQyOCIgeT0iMTMyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjEwcHgiPmRpc2tzIMK3IHN1Ym5ldCDCtyBmaXJld2FsbDwvdGV4dD4KPHRleHQgeD0iNDI4IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+c2VydmljZSBhY2NvdW50IChpZGVudGl0eSk8L3RleHQ+CjxsaW5lIHgxPSI1NzgiIHkxPSIxMDYiIHgyPSI2MjQiIHkyPSIxMDYiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjZ2NwYmxhaCkiLz4KPHRleHQgeD0iNjAxIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+YnkgdmVyc2lvbjwvdGV4dD4KPHJlY3QgeD0iNjI4IiB5PSI1MiIgd2lkdGg9IjE4OCIgaGVpZ2h0PSIxMDgiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI3MjIiIHk9IjgyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEwLjVweCI+cmVnaW9uYWwgTUlHPC90ZXh0Pgo8dGV4dCB4PSI3MjIiIHk9IjEwMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+c3RhbXBzIGVhY2ggcmVwbGljYTwvdGV4dD4KPHRleHQgeD0iNzIyIiB5PSIxMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPmZyb20gdGhlIHRlbXBsYXRlIHZlcnNpb248L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTM4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5hIGZ1bGwgQ29tcHV0ZSBFbmdpbmUgVk08L3RleHQ+Cjwvc3ZnPg==" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) maps to one immutable google_compute_instance_template holding the machine type, boot image, disks, network, and service-account identity. The regional MIG references a template version and stamps every replica from it; because the template is immutable, changing the blueprint is a new template version plus a rolling replacement, never an in-place edit." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgbWFwcyB0byBvbmUgaW1tdXRhYmxlIGdvb2dsZV9jb21wdXRlX2luc3RhbmNlX3RlbXBsYXRlIGhvbGRpbmcgdGhlIG1hY2hpbmUgdHlwZSwgYm9vdCBpbWFnZSwgZGlza3MsIG5ldHdvcmssIGFuZCBzZXJ2aWNlLWFjY291bnQgaWRlbnRpdHkuIFRoZSByZWdpb25hbCBNSUcgcmVmZXJlbmNlcyBhIHRlbXBsYXRlIHZlcnNpb24gYW5kIHN0YW1wcyBldmVyeSByZXBsaWNhIGZyb20gaXQ7IGJlY2F1c2UgdGhlIHRlbXBsYXRlIGlzIGltbXV0YWJsZSwgY2hhbmdpbmcgdGhlIGJsdWVwcmludCBpcyBhIG5ldyB0ZW1wbGF0ZSB2ZXJzaW9uIHBsdXMgYSByb2xsaW5nIHJlcGxhY2VtZW50LCBuZXZlciBhbiBpbi1wbGFjZSBlZGl0LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJnY3BibGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyMCIgeT0iMjQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5BU0cgSU5TVEFOQ0UgREVGSU5JVElPTiDihpIgT05FIElNTVVUQUJMRSBURU1QTEFURTwvdGV4dD4KPHJlY3QgeD0iMjAiIHk9IjQwIiB3aWR0aD0iMjA2IiBoZWlnaHQ9IjEzMiIgcng9IjEyIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iMTIzIiB5PSI2MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZToxMHB4Ij5BU0cgaW5zdGFuY2UgZGVmaW5pdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9Ijc0IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2Ii8+Cjx0ZXh0IHg9IjEyMyIgeT0iOTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmxhdW5jaCB0ZW1wbGF0ZTwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEwNiIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIvPgo8dGV4dCB4PSIxMjMiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIGNvbmZpZ3VyYXRpb248L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSIxMzgiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiLz4KPHRleHQgeD0iMTIzIiB5PSIxNTUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPm1peGVkLWluc3RhbmNlcyBwb2xpY3k8L3RleHQ+CjxsaW5lIHgxPSIyMjgiIHkxPSIxMDYiIHgyPSIyNzQiIHkyPSIxMDYiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjZ2NwYmxhaCkiLz4KPHRleHQgeD0iMjUxIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+bWFwczwvdGV4dD4KPHJlY3QgeD0iMjc4IiB5PSI0MCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIxMzIiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI0MjgiIHk9IjY0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwLjVweCI+aW5zdGFuY2VfdGVtcGxhdGU8L3RleHQ+Cjx0ZXh0IHg9IjQyOCIgeT0iODIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnN0YW5kYWxvbmUgwrcgaW1tdXRhYmxlPC90ZXh0Pgo8cmVjdCB4PSIyOTIiIHk9Ijk0IiB3aWR0aD0iMjcyIiBoZWlnaHQ9IjY2IiByeD0iOCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+Cjx0ZXh0IHg9IjQyOCIgeT0iMTE0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjEwcHgiPm1hY2hpbmUgdHlwZSDCtyBib290IGltYWdlPC90ZXh0Pgo8dGV4dCB4PSI0MjgiIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZToxMHB4Ij5kaXNrcyDCtyBzdWJuZXQgwrcgZmlyZXdhbGw8L3RleHQ+Cjx0ZXh0IHg9IjQyOCIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjEwcHgiPnNlcnZpY2UgYWNjb3VudCAoaWRlbnRpdHkpPC90ZXh0Pgo8bGluZSB4MT0iNTc4IiB5MT0iMTA2IiB4Mj0iNjI0IiB5Mj0iMTA2IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2djcGJsYWgpIi8+Cjx0ZXh0IHg9IjYwMSIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPmJ5IHZlcnNpb248L3RleHQ+CjxyZWN0IHg9IjYyOCIgeT0iNTIiIHdpZHRoPSIxODgiIGhlaWdodD0iMTA4IiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNzIyIiB5PSI4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMC41cHgiPnJlZ2lvbmFsIE1JRzwvdGV4dD4KPHRleHQgeD0iNzIyIiB5PSIxMDIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnN0YW1wcyBlYWNoIHJlcGxpY2E8L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTIyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5mcm9tIHRoZSB0ZW1wbGF0ZSB2ZXJzaW9uPC90ZXh0Pgo8dGV4dCB4PSI3MjIiIHk9IjEzOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+YSBmdWxsIENvbXB1dGUgRW5naW5lIFZNPC90ZXh0Pgo8L3N2Zz4=" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) maps to one immutable google_compute_instance_template holding the machine type, boot image, disks, network, and service-account identity. The regional MIG references a template version and stamps every replica from it; because the template is immutable, changing the blueprint is a new template version plus a rolling replacement, never an in-place edit." />
</div>

<p className="t9-caption">The ASG's instance definition maps to one standalone, immutable instance template; the MIG references a version of it and stamps every replica from that version.</p>

#### The regional autoscaler

Scaling lives on a separate `google_compute_region_autoscaler` that targets the MIG; it is not a field on the fleet. Its `autoscaling_policy` holds the `min_replicas`/`max_replicas` bounds and the trigger. A CPU- or load-balancing-utilization target-tracking policy retains its utilization target; evaluation windows and scale-out and scale-in timing follow Google's autoscaler. A fixed `min_size == max_size` becomes a fixed-size MIG the autoscaler never resizes.

* **Separate autoscaler resource:** `min_size`/`max_size` live on the region autoscaler that targets the MIG, not on the fleet body.
* **CPU / LB utilization maps over:** the utilization target is preserved; scaling timing follows Google's autoscaler.
* **Custom-metric autoscaling:** the autoscaler also supports a custom Cloud Monitoring metric, so a policy on a supported custom metric maps directly; an ASG-specific metric with no equivalent narrows to the nearest supported trigger.

△ Auto Scaling differences

* **Some custom metrics use a different trigger.** CPU and load-balancing utilization become target-tracking; a policy on a custom metric maps where the autoscaler has an equivalent Cloud Monitoring metric, otherwise it is narrowed to the nearest supported trigger rather than reproduced exactly.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTcyIiB2aWV3Qm94PSIwIDAgODM2IDE3MiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTY2FsaW5nIGxpdmVzIG9uIGEgc2VwYXJhdGUgZ29vZ2xlX2NvbXB1dGVfcmVnaW9uX2F1dG9zY2FsZXIgdGhhdCB0YXJnZXRzIHRoZSBNSUcuIEl0cyBhdXRvc2NhbGluZ19wb2xpY3kgaG9sZHMgdGhlIG1pbiBhbmQgbWF4IHJlcGxpY2EgYm91bmRzIGFuZCB0aGUgdHJpZ2dlciAoYSBDUFUtdXRpbGl6YXRpb24gb3IgbG9hZC1iYWxhbmNpbmctdXRpbGl6YXRpb24gdGFyZ2V0LCBvciBhIGN1c3RvbSBtZXRyaWMpLCBhbmQgaXQgcmVzaXplcyB0aGUgTUlHJ3MgdGFyZ2V0X3NpemUgYmV0d2VlbiB0aGUgYm91bmRzLiBJdCBpcyBub3QgYSBmaWVsZCBvbiB0aGUgZmxlZXQuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImdjcGFzYWgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjIwIiB5PSIyNCIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+U0NBTElORyBJUyBBIFNFUEFSQVRFIFJFR0lPTkFMIEFVVE9TQ0FMRVI8L3RleHQ+CjxyZWN0IHg9IjIwIiB5PSI0MiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIxMTgiIHJ4PSIxMyIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIxNzAiIHk9IjY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExcHgiPnJlZ2lvbmFsIE1JRzwvdGV4dD4KPHRleHQgeD0iMTcwIiB5PSI4NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+dGFyZ2V0X3NpemUgPSBOPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTAyIiB3aWR0aD0iODYiIGhlaWdodD0iNDQiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iMTI3IiB5PSIxMDIiIHdpZHRoPSI4NiIgaGVpZ2h0PSI0NCIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8cmVjdCB4PSIyMjAiIHk9IjEwMiIgd2lkdGg9Ijg2IiBoZWlnaHQ9IjQ0IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9Ijc3IiB5PSIxMjkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OS41cHgiPnJlcGxpY2E8L3RleHQ+Cjx0ZXh0IHg9IjE3MCIgeT0iMTI5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjkuNXB4Ij5yZXBsaWNhPC90ZXh0Pgo8dGV4dCB4PSIyNjMiIHk9IjEyOSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZTo5LjVweCI+cmVwbGljYTwvdGV4dD4KPGxpbmUgeDE9IjUxMiIgeTE9IjEwMSIgeDI9IjMyNCIgeTI9IjEwMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNnY3Bhc2FoKSIvPgo8dGV4dCB4PSI0MTgiIHk9IjkzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5yZXNpemVzPC90ZXh0Pgo8cmVjdCB4PSI1MTYiIHk9IjQyIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjExOCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjY2NiIgeT0iNjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTBweCI+cmVnaW9uX2F1dG9zY2FsZXI8L3RleHQ+Cjx0ZXh0IHg9IjY2NiIgeT0iODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPmF1dG9zY2FsaW5nX3BvbGljeTwvdGV4dD4KPHRleHQgeD0iNjY2IiB5PSIxMDQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPm1pbl9yZXBsaWNhcyDihpQgbWF4X3JlcGxpY2FzPC90ZXh0Pgo8dGV4dCB4PSI2NjYiIHk9IjEyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+Y3B1IC8gbG9hZC1iYWxhbmNpbmcgdXRpbGl6YXRpb248L3RleHQ+Cjx0ZXh0IHg9IjY2NiIgeT0iMTQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5vciBhIGN1c3RvbSBtZXRyaWM8L3RleHQ+Cjwvc3ZnPg==" alt="Scaling lives on a separate google_compute_region_autoscaler that targets the MIG. Its autoscaling_policy holds the min and max replica bounds and the trigger (a CPU-utilization or load-balancing-utilization target, or a custom metric), and it resizes the MIG's target_size between the bounds. It is not a field on the fleet." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTcyIiB2aWV3Qm94PSIwIDAgODM2IDE3MiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTY2FsaW5nIGxpdmVzIG9uIGEgc2VwYXJhdGUgZ29vZ2xlX2NvbXB1dGVfcmVnaW9uX2F1dG9zY2FsZXIgdGhhdCB0YXJnZXRzIHRoZSBNSUcuIEl0cyBhdXRvc2NhbGluZ19wb2xpY3kgaG9sZHMgdGhlIG1pbiBhbmQgbWF4IHJlcGxpY2EgYm91bmRzIGFuZCB0aGUgdHJpZ2dlciAoYSBDUFUtdXRpbGl6YXRpb24gb3IgbG9hZC1iYWxhbmNpbmctdXRpbGl6YXRpb24gdGFyZ2V0LCBvciBhIGN1c3RvbSBtZXRyaWMpLCBhbmQgaXQgcmVzaXplcyB0aGUgTUlHJ3MgdGFyZ2V0X3NpemUgYmV0d2VlbiB0aGUgYm91bmRzLiBJdCBpcyBub3QgYSBmaWVsZCBvbiB0aGUgZmxlZXQuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImdjcGFzYWgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjYuNSIgbWFya2VySGVpZ2h0PSI2LjUiIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjIwIiB5PSIyNCIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPlNDQUxJTkcgSVMgQSBTRVBBUkFURSBSRUdJT05BTCBBVVRPU0NBTEVSPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDIiIHdpZHRoPSIzMDAiIGhlaWdodD0iMTE4IiByeD0iMTMiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMTcwIiB5PSI2OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMXB4Ij5yZWdpb25hbCBNSUc8L3RleHQ+Cjx0ZXh0IHg9IjE3MCIgeT0iODYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnRhcmdldF9zaXplID0gTjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEwMiIgd2lkdGg9Ijg2IiBoZWlnaHQ9IjQ0IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjEyNyIgeT0iMTAyIiB3aWR0aD0iODYiIGhlaWdodD0iNDQiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHJlY3QgeD0iMjIwIiB5PSIxMDIiIHdpZHRoPSI4NiIgaGVpZ2h0PSI0NCIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSI3NyIgeT0iMTI5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjkuNXB4Ij5yZXBsaWNhPC90ZXh0Pgo8dGV4dCB4PSIxNzAiIHk9IjEyOSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZTo5LjVweCI+cmVwbGljYTwvdGV4dD4KPHRleHQgeD0iMjYzIiB5PSIxMjkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6OS41cHgiPnJlcGxpY2E8L3RleHQ+CjxsaW5lIHgxPSI1MTIiIHkxPSIxMDEiIHgyPSIzMjQiIHkyPSIxMDEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjZ2NwYXNhaCkiLz4KPHRleHQgeD0iNDE4IiB5PSI5MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+cmVzaXplczwvdGV4dD4KPHJlY3QgeD0iNTE2IiB5PSI0MiIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIxMTgiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI2NjYiIHk9IjY2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPnJlZ2lvbl9hdXRvc2NhbGVyPC90ZXh0Pgo8dGV4dCB4PSI2NjYiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5hdXRvc2NhbGluZ19wb2xpY3k8L3RleHQ+Cjx0ZXh0IHg9IjY2NiIgeT0iMTA0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5taW5fcmVwbGljYXMg4oaUIG1heF9yZXBsaWNhczwvdGV4dD4KPHRleHQgeD0iNjY2IiB5PSIxMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmNwdSAvIGxvYWQtYmFsYW5jaW5nIHV0aWxpemF0aW9uPC90ZXh0Pgo8dGV4dCB4PSI2NjYiIHk9IjE0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+b3IgYSBjdXN0b20gbWV0cmljPC90ZXh0Pgo8L3N2Zz4=" alt="Scaling lives on a separate google_compute_region_autoscaler that targets the MIG. Its autoscaling_policy holds the min and max replica bounds and the trigger (a CPU-utilization or load-balancing-utilization target, or a custom metric), and it resizes the MIG's target_size between the bounds. It is not a field on the fleet." />
</div>

<p className="t9-caption">Scaling is a separate regional autoscaler that targets the MIG: it holds the min/max bounds and the trigger and resizes the MIG, rather than being a field on the fleet.</p>

#### Placement, health checks, and self-healing

Because the MIG is **regional**, it spreads its replicas across the region's zones on its own: the ASG's multi-subnet `vpc_zone_identifier` maps to the MIG's `distribution_policy_zones`, so replicas are distributed across the selected target zones.

Self-healing comes across too. The ASG's health-check-driven replacement maps to the MIG's `auto_healing_policies`: a health check plus an `initial_delay_sec`, and a replica that fails the check is recreated from the current template version. An application health check (an ELB or target-group health check on the ASG) maps to a Compute Engine health check the MIG uses the same way: it replaces a replica that is running but failing its check, not only one that has stopped.

* **Regional zonal spread:** `vpc_zone_identifier` maps to `distribution_policy_zones`; the MIG spreads replicas across the region's zones.
* **Autohealing on a health check:** `auto_healing_policies` recreates a replica that fails its health check, the same intent as the ASG's health-check replacement.
* **Application health survives:** an ELB/target-group health check maps to a Compute Engine health check the MIG autohealing acts on, so a running-but-unhealthy replica is replaced, and not only a stopped one.

#### Updates, lifecycle hooks, and warm pools

The MIG supports rolling replacement. Other Auto Scaling group features have the following limits.

* **Rolling replacement holds:** a template update can use the MIG's `update_policy` for proactive rolling replacement. This provisioning behavior does not implement the AWS StartInstanceRefresh API.
* **Spot is a template field, not a mix:** a replica can run as a Spot VM through the template's provisioning model, but the ASG's mixed-instances distribution (multiple instance types with an on-demand/spot allocation strategy) has no MIG analog; a MIG runs one machine type.
* **Lifecycle hooks: no analog:** the ASG's launch/terminate lifecycle hooks (pause an instance for a custom action) have no MIG equivalent.
* **Warm pools: no analog:** there is no pre-initialized, stopped-replica pool on the MIG.

△ Auto Scaling differences

* **Lifecycle hooks and warm pools are not reproduced:** these ASG orchestration mechanisms have no MIG analog; the fleet's size, autoscaling, and rolling replacement are preserved, that orchestration is not.
* **Mixed-instances distribution narrows to one machine type.** Spot is set per replica, but the on-demand/spot allocation across multiple instance types has no equivalent; size the template for the machine type the fleet should run.

#### Limitations

The fleet shape, the template, the regional zonal spread, and health-check autohealing map directly. Two considerations frame how the running fleet behaves after cutover.

△ Auto Scaling differences

* **Declare scaling changes in infrastructure code:** runtime `SetDesiredCapacity` and scaling-policy mutations are outside this mapping. Unsupported infrastructure settings can be reported during the build; unsupported SDK requests return an error when called.
* **Sizing decisions belong to the autoscaler.** Tensor9 provisions the MIG, its bounds, and its scaling policy at build time; when the platform actually adds or removes a replica is the region autoscaler's decision, evaluated on Google Cloud's own metrics and cadence, not something Tensor9 sizes at runtime.

#### Other considerations

Plan persistent storage, instance costs, and updates before deployment.

* **Instances are replaced, not repaired:** health-check autohealing recreates an unhealthy VM, so any state that must survive lives on attached persistent disks or an object store, not the instance's boot disk.
* **Runtime scaling is Google Cloud's decision:** the build provisions the MIG, its bounds, and its policy; the region autoscaler decides when to add or remove a replica on Google Cloud's own metrics and cadence.
* **Costs depend on the running instances.** VM charges follow actual running replicas, including temporary replacement capacity, plus storage, networking and other target charges. Desired-capacity bounds are not an enforced spending cap.
* **A template change uses the target update policy:** a new instance-template version can roll replacement replicas through the MIG's update policy. Batch sizes and health gates follow Google Cloud's controls, not the AWS StartInstanceRefresh API.

#### Fleet lifecycle and runtime management

A launch template or launch configuration describes each fleet member. The Auto Scaling group supplies desired, minimum and maximum counts; scaling and health policies determine when those members change. The fleet mapping creates the target template, group and relevant autoscaler, instead of treating the template as a standalone VM.

Maximum adaptation exposes DescribeAutoScalingGroups, DescribeAutoScalingInstances and DeleteAutoScalingGroup over managed group state. Desired capacity and scaling-policy changes use the owning service's lifecycle configuration or infrastructure-as-code. When a higher-level service such as EKS owns the physical node pool, its reconciler remains responsible for that pool: the Auto Scaling adapter reads and changes the logical group without introducing a second controller for the same physical resource.

The describe calls report the adapter's managed groups and members. InService and Pending describe whether a member's configuration has converged. HealthStatus is reported as Healthy; it does not report native probe results or establish application health. Check the owning service and the target's health checks before relying on a member to serve traffic. DeleteAutoScalingGroup records a deletion request. A group with nonzero desired capacity or members requires ForceDelete=true; physical teardown completes asynchronously through its owner. Rolling replacement, application health and zone distribution still depend on the selected target.

## On Azure

| Operation                                                                            | Area                | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                       |
| ------------------------------------------------------------------------------------ | ------------------- | ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Scaling policy (target-tracking / step)                                              | Autoscaling         | Partial      | Most usage   | A supported metric-driven policy maps to the autoscale setting's utilization targets or threshold rules. Review translated thresholds: metric definitions, evaluation windows, cooldowns and scaling timing follow the target autoscaler. Custom or ASG-specific metrics need a supported target trigger; size bounds alone do not create a scaling policy. |
| min\_size / max\_size                                                                | Autoscaling         | Supported    | Common       | Map to the autoscale setting's bounds on desired capacity; min==max fixes the desired count. These bounds do not guarantee ready capacity or cap temporary replicas during replacement.                                                                                                                                                                     |
| SetDesiredCapacity / runtime scaling-policy mutations                                | Control plane       | Out of scope | Full surface | SetDesiredCapacity and runtime scaling-policy changes are outside this mapping. Set size and bounds through infrastructure-as-code or the owning service's supported lifecycle configuration. The runtime group API separately supports discovery and deletion.                                                                                             |
| Fleet provisioning (aws\_autoscaling\_group)                                         | Fleet lifecycle     | Supported    | Common       | your aws\_autoscaling\_group compiles to an Azure Virtual Machine Scale Set, one managed group whose instances use the same configuration                                                                                                                                                                                                                   |
| Lifecycle hooks / instance refresh / warm pools / mixed-instances distribution       | Fleet orchestration | Out of scope | Full surface | The AWS StartInstanceRefresh API, lifecycle hooks, warm pools and on-demand/Spot distribution are outside this mapping. Target-native rolling replacement during provisioning is separate and follows the target's documented update policy where supported.                                                                                                |
| desired\_capacity                                                                    | Fleet sizing        | Supported    | Common       | Sets the desired number of replicas using the same launch configuration. Running and ready capacity converge as allocation, scheduling and health checks complete.                                                                                                                                                                                          |
| Instance blueprint (launch template / launch configuration / mixed-instances policy) | Instance definition | Supported    | Common       | the ASG's instance definition (sourced from a launch template, a legacy launch configuration, or a mixed-instances policy) uses the same instance mapping as a standalone Azure Virtual Machine, so every replica inherits the disk, subnet, security groups, identity, and metadata of a single instance                                                   |
| Instance metadata + identity on every replica                                        | Metadata + identity | Supported    | Most usage   | each replica gets the same read-only instance-metadata (IMDS) API and workload identity as a standalone instance, so per-replica service discovery and credential lookups keep working                                                                                                                                                                      |
| Multi-AZ placement (vpc\_zone\_identifier)                                           | Placement           | Supported    | Most usage   | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones.                                                                                                                                                                                                                               |

#### How it works

On Azure, Tensor9 translates the Auto Scaling group into a **Virtual Machine Scale Set**. The scale set contains the VM configuration: the `sku` (machine size), the source image, the OS and data disks, the network interface, and the managed identity, alongside the `instances` count.

`desired_capacity` becomes the scale set's desired instance count. Ready capacity follows allocation, startup and health checks. The ASG's zonal spread lands as the scale set's `zones`. Scaling is handled by a separate `azurerm_monitor_autoscale_setting` that targets the scale set; Azure keeps the sizing policy in its own resource rather than on the fleet.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjI2IiB2aWV3Qm94PSIwIDAgODM2IDIyNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBenVyZSB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIG1hcHMgdG8gYSBWaXJ0dWFsIE1hY2hpbmUgU2NhbGUgU2V0IHdpdGggYW4gaW5saW5lIFZNIGNvbmZpZ3VyYXRpb24gYW5kIGEgZGVzaXJlZCBpbnN0YW5jZSBjb3VudCBhY3Jvc3Mgc2VsZWN0ZWQgem9uZXMuIEEgZGVjbGFyZWQgc2NhbGluZyBwb2xpY3kgdXNlcyBhIHNlcGFyYXRlIGF1dG9zY2FsZSBzZXR0aW5nIHdpdGggbWV0cmljLWRyaXZlbiBydWxlcy4gUnVubmluZyBhbmQgcmVhZHkgaW5zdGFuY2VzIGRlcGVuZCBvbiBhbGxvY2F0aW9uIGFuZCBoZWFsdGggY2hlY2tzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJhemFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjIwIiB5PSIyNCIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6IzA0Nzg1NyI+T04gQVpVUkUgwrcgQkxVRVBSSU5UIElOTElORSArIEEgU0VQQVJBVEUgQVVUT1NDQUxFIFNFVFRJTkc8L3RleHQ+CjxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjUyMCIgaGVpZ2h0PSIxNzIiIHJ4PSIxMyIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIyODAiIHk9IjY2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEycHgiPlZpcnR1YWwgTWFjaGluZSBTY2FsZSBTZXQ8L3RleHQ+Cjx0ZXh0IHg9IjI4MCIgeT0iODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo5LjVweCI+ZGVzaXJlZCBpbnN0YW5jZXMgPSBOIMK3IHNlbGVjdGVkIGF2YWlsYWJpbGl0eSB6b25lczwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9Ijk2IiB3aWR0aD0iNDkyIiBoZWlnaHQ9IjMwIiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjI4MCIgeT0iMTE1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTBweCI+Vk0gbW9kZWwgKGlubGluZSkgwrcgc2t1IMK3IGltYWdlIMK3IG5pYyDCtyBpZGVudGl0eTwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjE0MCIgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1OCIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8cmVjdCB4PSIyMDUiIHk9IjE0MCIgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1OCIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8cmVjdCB4PSIzNzYiIHk9IjE0MCIgd2lkdGg9IjE1MCIgaGVpZ2h0PSI1OCIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8dGV4dCB4PSIxMDkiIHk9IjE2NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSIyODAiIHk9IjE2NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSI0NTEiIHk9IjE2NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSIxMDkiIHk9IjE4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+em9uZSBhPC90ZXh0Pgo8dGV4dCB4PSIyODAiIHk9IjE4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+em9uZSBiPC90ZXh0Pgo8dGV4dCB4PSI0NTEiIHk9IjE4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+em9uZSBjPC90ZXh0Pgo8bGluZSB4MT0iNTk2IiB5MT0iMTI2IiB4Mj0iNTQ0IiB5Mj0iMTI2IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI2F6YWgpIi8+Cjx0ZXh0IHg9IjU3MCIgeT0iMTE4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij50YXJnZXRzPC90ZXh0Pgo8cmVjdCB4PSI2MDAiIHk9Ijc0IiB3aWR0aD0iMjE2IiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjcwOCIgeT0iMTAyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjkuNXB4Ij5tb25pdG9yX2F1dG9zY2FsZV9zZXR0aW5nPC90ZXh0Pgo8dGV4dCB4PSI3MDgiIHk9IjEyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+Y2FwYWNpdHkgbWluIOKGlCBtYXg8L3RleHQ+Cjx0ZXh0IHg9IjcwOCIgeT0iMTQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5tZXRyaWMgcnVsZXMgwrcgc2NhbGUtb3V0IC8gaW48L3RleHQ+Cjx0ZXh0IHg9IjcwOCIgeT0iMTU2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5zZXBhcmF0ZSByZXNvdXJjZTwvdGV4dD4KPC9zdmc+" alt="On Azure the Auto Scaling group maps to a Virtual Machine Scale Set with an inline VM configuration and a desired instance count across selected zones. A declared scaling policy uses a separate autoscale setting with metric-driven rules. Running and ready instances depend on allocation and health checks." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjI2IiB2aWV3Qm94PSIwIDAgODM2IDIyNiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBBenVyZSB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIG1hcHMgdG8gYSBWaXJ0dWFsIE1hY2hpbmUgU2NhbGUgU2V0IHdpdGggYW4gaW5saW5lIFZNIGNvbmZpZ3VyYXRpb24gYW5kIGEgZGVzaXJlZCBpbnN0YW5jZSBjb3VudCBhY3Jvc3Mgc2VsZWN0ZWQgem9uZXMuIEEgZGVjbGFyZWQgc2NhbGluZyBwb2xpY3kgdXNlcyBhIHNlcGFyYXRlIGF1dG9zY2FsZSBzZXR0aW5nIHdpdGggbWV0cmljLWRyaXZlbiBydWxlcy4gUnVubmluZyBhbmQgcmVhZHkgaW5zdGFuY2VzIGRlcGVuZCBvbiBhbGxvY2F0aW9uIGFuZCBoZWFsdGggY2hlY2tzLiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJhemFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+Cjx0ZXh0IHg9IjIwIiB5PSIyNCIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPk9OIEFaVVJFIMK3IEJMVUVQUklOVCBJTkxJTkUgKyBBIFNFUEFSQVRFIEFVVE9TQ0FMRSBTRVRUSU5HPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSI1MjAiIGhlaWdodD0iMTcyIiByeD0iMTMiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMjgwIiB5PSI2NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMnB4Ij5WaXJ0dWFsIE1hY2hpbmUgU2NhbGUgU2V0PC90ZXh0Pgo8dGV4dCB4PSIyODAiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OS41cHgiPmRlc2lyZWQgaW5zdGFuY2VzID0gTiDCtyBzZWxlY3RlZCBhdmFpbGFiaWxpdHkgem9uZXM8L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSI5NiIgd2lkdGg9IjQ5MiIgaGVpZ2h0PSIzMCIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSIyODAiIHk9IjExNSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPlZNIG1vZGVsIChpbmxpbmUpIMK3IHNrdSDCtyBpbWFnZSDCtyBuaWMgwrcgaWRlbnRpdHk8L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSIxNDAiIHdpZHRoPSIxNTAiIGhlaWdodD0iNTgiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHJlY3QgeD0iMjA1IiB5PSIxNDAiIHdpZHRoPSIxNTAiIGhlaWdodD0iNTgiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHJlY3QgeD0iMzc2IiB5PSIxNDAiIHdpZHRoPSIxNTAiIGhlaWdodD0iNTgiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHRleHQgeD0iMTA5IiB5PSIxNjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMjgwIiB5PSIxNjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iNDUxIiB5PSIxNjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMTA5IiB5PSIxODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPnpvbmUgYTwvdGV4dD4KPHRleHQgeD0iMjgwIiB5PSIxODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPnpvbmUgYjwvdGV4dD4KPHRleHQgeD0iNDUxIiB5PSIxODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPnpvbmUgYzwvdGV4dD4KPGxpbmUgeDE9IjU5NiIgeTE9IjEyNiIgeDI9IjU0NCIgeTI9IjEyNiIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhemFoKSIvPgo8dGV4dCB4PSI1NzAiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+dGFyZ2V0czwvdGV4dD4KPHJlY3QgeD0iNjAwIiB5PSI3NCIgd2lkdGg9IjIxNiIgaGVpZ2h0PSIxMDQiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI3MDgiIHk9IjEwMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZTo5LjVweCI+bW9uaXRvcl9hdXRvc2NhbGVfc2V0dGluZzwvdGV4dD4KPHRleHQgeD0iNzA4IiB5PSIxMjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPmNhcGFjaXR5IG1pbiDihpQgbWF4PC90ZXh0Pgo8dGV4dCB4PSI3MDgiIHk9IjE0MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bWV0cmljIHJ1bGVzIMK3IHNjYWxlLW91dCAvIGluPC90ZXh0Pgo8dGV4dCB4PSI3MDgiIHk9IjE1NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+c2VwYXJhdGUgcmVzb3VyY2U8L3RleHQ+Cjwvc3ZnPg==" alt="On Azure the Auto Scaling group maps to a Virtual Machine Scale Set with an inline VM configuration and a desired instance count across selected zones. A declared scaling policy uses a separate autoscale setting with metric-driven rules. Running and ready instances depend on allocation and health checks." />
</div>

<p className="t9-caption">On Azure the blueprint is not a separate resource; it lives inline in the scale set body. Scaling is a separate autoscale setting with metric rules that targets the scale set.</p>

#### The VM configuration

The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) is folded directly into the scale set's own VM profile. There is no separate blueprint artifact to reference; the machine size, translated boot image, disks, subnet and security rules, and identity are fields on the scale set itself, and every instance the scale set brings up boots from that inline model through the same instance mapping as a standalone Azure VM.

Each instance is a VM with its own disks, network placement, identity, and read-only metadata surface: a workload that reads its own identity or discovers its topology on startup runs unchanged on every instance.

* **Desired instance count:** `desired_capacity` sets the requested count; allocation and health checks determine ready capacity.
* **Zonal spread is preserved:** the ASG's subnets map to the scale set's `zones` across availability zones.

△ Auto Scaling differences

* **Blueprint and fleet are edited together:** because the VM model is inline, the blueprint and the scale set are one resource; a model change updates existing instances through the scale set's upgrade policy rather than versioning a standalone artifact.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTg4IiB2aWV3Qm94PSIwIDAgODM2IDE4OCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgZm9sZHMgZGlyZWN0bHkgaW50byB0aGUgc2NhbGUgc2V0J3Mgb3duIFZNIHByb2ZpbGUuIFRoZXJlIGlzIG5vIHNlcGFyYXRlIGJsdWVwcmludCBhcnRpZmFjdDogdGhlIHNrdSwgaW1hZ2UsIGRpc2tzLCBuZXR3b3JrIGludGVyZmFjZSwgYW5kIGlkZW50aXR5IGFyZSBmaWVsZHMgaW5zaWRlIHRoZSBzY2FsZSBzZXQgYm9keSwgYW5kIGV2ZXJ5IGluc3RhbmNlIGJvb3RzIGZyb20gdGhhdCBpbmxpbmUgbW9kZWwuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImF6YmxhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5BU0cgSU5TVEFOQ0UgREVGSU5JVElPTiDihpIgRk9MREVEIElOVE8gVEhFIFNDQUxFIFNFVCBCT0RZPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIyMDYiIGhlaWdodD0iMTMyIiByeD0iMTIiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIxMjMiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjEwcHgiPkFTRyBpbnN0YW5jZSBkZWZpbml0aW9uPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iNzQiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiLz4KPHRleHQgeD0iMTIzIiB5PSI5MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIHRlbXBsYXRlPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTA2IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIi8+Cjx0ZXh0IHg9IjEyMyIgeT0iMTIzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OTsgZm9udC1zaXplOjkuNXB4Ij5sYXVuY2ggY29uZmlndXJhdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEzOCIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIvPgo8dGV4dCB4PSIxMjMiIHk9IjE1NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZvbnQtc2l6ZTo5LjVweCI+bWl4ZWQtaW5zdGFuY2VzIHBvbGljeTwvdGV4dD4KPGxpbmUgeDE9IjIyOCIgeTE9IjEwNiIgeDI9IjI3NCIgeTI9IjEwNiIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhemJsYWgpIi8+Cjx0ZXh0IHg9IjI1MSIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPmZvbGRzIGluPC90ZXh0Pgo8cmVjdCB4PSIyNzgiIHk9IjQwIiB3aWR0aD0iNTM4IiBoZWlnaHQ9IjEzMiIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjU0NyIgeT0iNjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTFweCI+VmlydHVhbCBNYWNoaW5lIFNjYWxlIFNldDwvdGV4dD4KPHJlY3QgeD0iMjkyIiB5PSI3OCIgd2lkdGg9IjUxMCIgaGVpZ2h0PSIzNCIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIgc3Ryb2tlLXdpZHRoPSIxLjMiLz4KPHRleHQgeD0iNTQ3IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEwcHgiPlZNIG1vZGVsIChpbmxpbmUpIMK3IHNrdSDCtyBpbWFnZSDCtyBkaXNrcyDCtyBuaWMgwrcgaWRlbnRpdHk8L3RleHQ+CjxyZWN0IHg9IjI5MiIgeT0iMTIyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM4IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+CjxyZWN0IHg9IjQ2NiIgeT0iMTIyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM4IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+CjxyZWN0IHg9IjY0MCIgeT0iMTIyIiB3aWR0aD0iMTYyIiBoZWlnaHQ9IjM4IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjM3MiIgeT0iMTQ2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEwcHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSI1NDYiIHk9IjE0NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMHB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iNzIxIiB5PSIxNDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTBweCI+aW5zdGFuY2U8L3RleHQ+Cjwvc3ZnPg==" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) folds directly into the scale set's own VM profile. There is no separate blueprint artifact: the sku, image, disks, network interface, and identity are fields inside the scale set body, and every instance boots from that inline model." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTg4IiB2aWV3Qm94PSIwIDAgODM2IDE4OCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgZm9sZHMgZGlyZWN0bHkgaW50byB0aGUgc2NhbGUgc2V0J3Mgb3duIFZNIHByb2ZpbGUuIFRoZXJlIGlzIG5vIHNlcGFyYXRlIGJsdWVwcmludCBhcnRpZmFjdDogdGhlIHNrdSwgaW1hZ2UsIGRpc2tzLCBuZXR3b3JrIGludGVyZmFjZSwgYW5kIGlkZW50aXR5IGFyZSBmaWVsZHMgaW5zaWRlIHRoZSBzY2FsZSBzZXQgYm9keSwgYW5kIGV2ZXJ5IGluc3RhbmNlIGJvb3RzIGZyb20gdGhhdCBpbmxpbmUgbW9kZWwuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImF6YmxhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+QVNHIElOU1RBTkNFIERFRklOSVRJT04g4oaSIEZPTERFRCBJTlRPIFRIRSBTQ0FMRSBTRVQgQk9EWTwvdGV4dD4KPHJlY3QgeD0iMjAiIHk9IjQwIiB3aWR0aD0iMjA2IiBoZWlnaHQ9IjEzMiIgcng9IjEyIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iMTIzIiB5PSI2MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZToxMHB4Ij5BU0cgaW5zdGFuY2UgZGVmaW5pdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9Ijc0IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2Ii8+Cjx0ZXh0IHg9IjEyMyIgeT0iOTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmxhdW5jaCB0ZW1wbGF0ZTwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEwNiIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIvPgo8dGV4dCB4PSIxMjMiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIGNvbmZpZ3VyYXRpb248L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSIxMzgiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiLz4KPHRleHQgeD0iMTIzIiB5PSIxNTUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPm1peGVkLWluc3RhbmNlcyBwb2xpY3k8L3RleHQ+CjxsaW5lIHgxPSIyMjgiIHkxPSIxMDYiIHgyPSIyNzQiIHkyPSIxMDYiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjYXpibGFoKSIvPgo8dGV4dCB4PSIyNTEiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij5mb2xkcyBpbjwvdGV4dD4KPHJlY3QgeD0iMjc4IiB5PSI0MCIgd2lkdGg9IjUzOCIgaGVpZ2h0PSIxMzIiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI1NDciIHk9IjY0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExcHgiPlZpcnR1YWwgTWFjaGluZSBTY2FsZSBTZXQ8L3RleHQ+CjxyZWN0IHg9IjI5MiIgeT0iNzgiIHdpZHRoPSI1MTAiIGhlaWdodD0iMzQiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiIHN0cm9rZS13aWR0aD0iMS4zIi8+Cjx0ZXh0IHg9IjU0NyIgeT0iOTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMHB4Ij5WTSBtb2RlbCAoaW5saW5lKSDCtyBza3UgwrcgaW1hZ2UgwrcgZGlza3MgwrcgbmljIMK3IGlkZW50aXR5PC90ZXh0Pgo8cmVjdCB4PSIyOTIiIHk9IjEyMiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzOCIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8cmVjdCB4PSI0NjYiIHk9IjEyMiIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIzOCIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8cmVjdCB4PSI2NDAiIHk9IjEyMiIgd2lkdGg9IjE2MiIgaGVpZ2h0PSIzOCIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSIzNzIiIHk9IjE0NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMHB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iNTQ2IiB5PSIxNDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTBweCI+aW5zdGFuY2U8L3RleHQ+Cjx0ZXh0IHg9IjcyMSIgeT0iMTQ2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEwcHgiPmluc3RhbmNlPC90ZXh0Pgo8L3N2Zz4=" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) folds directly into the scale set's own VM profile. There is no separate blueprint artifact: the sku, image, disks, network interface, and identity are fields inside the scale set body, and every instance boots from that inline model." />
</div>

<p className="t9-caption">There is no separate template resource on Azure: the ASG's instance definition folds into the scale set's own inline VM model, and every instance boots from it.</p>

#### The autoscale setting

Scaling lives on a separate `azurerm_monitor_autoscale_setting` whose `target_resource_id` is the scale set. Its `profile` sets the capacity `minimum`/`maximum` (from `min_size`/`max_size`) and a set of metric **rules**. This is the Azure-specific shape: rather than a single target value, a CPU-utilization target-tracking policy maps to a **scale-out rule and a scale-in rule** on a metric such as Percentage CPU. The translated rules retain the utilization-metric intent; evaluation windows, cooldowns and resulting scale timing follow Azure's autoscaler. A utilization target alone does not determine both thresholds: review the scale-out threshold, scale-in threshold and cooldown for the workload. Diagram thresholds are illustrative.

* **Separate autoscale setting:** capacity bounds and rules live on the monitor autoscale setting that targets the scale set.
* **Target-tracking → a rule pair:** a CPU/utilization policy maps to a scale-out and a scale-in rule on the same metric.
* **Custom metrics can require a different trigger:** a policy on a custom or ASG-specific metric maps to the nearest supported metric trigger where there is no exact equivalent.

△ Auto Scaling differences

* **Target-tracking becomes rule-based:** the autoscale setting expresses scaling as scale-out / scale-in rules on a metric rather than a single continuous target value; a CPU/utilization policy becomes an equivalent rule pair, but the rule model is Azure's, not the ASG's.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkyIiB2aWV3Qm94PSIwIDAgODM2IDE5MiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTY2FsaW5nIGxpdmVzIG9uIGEgc2VwYXJhdGUgYXp1cmVybV9tb25pdG9yX2F1dG9zY2FsZV9zZXR0aW5nIHdob3NlIHRhcmdldCBpcyB0aGUgc2NhbGUgc2V0LiBJdHMgcHJvZmlsZSBzZXRzIHRoZSBjYXBhY2l0eSBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgZGVmYXVsdCwgYW5kIGEgdGFyZ2V0LXRyYWNraW5nIHBvbGljeSBtYXBzIHRvIGEgcnVsZSBwYWlyOiBhIHNjYWxlLW91dCBydWxlIHRoYXQgYWRkcyBpbnN0YW5jZXMgd2hlbiBhIG1ldHJpYyBzdWNoIGFzIFBlcmNlbnRhZ2UgQ1BVIHJpc2VzIGFib3ZlIGEgdGhyZXNob2xkLCBhbmQgYSBzY2FsZS1pbiBydWxlIHRoYXQgcmVtb3ZlcyBpbnN0YW5jZXMgd2hlbiBpdCBmYWxscyBiZWxvdyBvbmUuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojMzM0MTU1fTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImF6YXNhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5TQ0FMSU5HIElTIEEgU0VQQVJBVEUgQVVUT1NDQUxFIFNFVFRJTkcgwrcgQSBSVUxFIFBBSVI8L3RleHQ+CjxyZWN0IHg9IjIwIiB5PSI0NCIgd2lkdGg9IjI3MiIgaGVpZ2h0PSIxMjAiIHJ4PSIxMyIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIxNTYiIHk9IjcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExcHgiPnNjYWxlIHNldDwvdGV4dD4KPHRleHQgeD0iMTU2IiB5PSI4OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+Y2FwYWNpdHkgPSBOPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTA0IiB3aWR0aD0iNzgiIGhlaWdodD0iNDYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iMTE3IiB5PSIxMDQiIHdpZHRoPSI3OCIgaGVpZ2h0PSI0NiIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8cmVjdCB4PSIyMDAiIHk9IjEwNCIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjQ2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjczIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMTU2IiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMjM5IiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OXB4Ij5pbnN0YW5jZTwvdGV4dD4KPGxpbmUgeDE9IjQ1MiIgeTE9IjEwNCIgeDI9IjI5NiIgeTI9IjEwNCIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNhemFzYWgpIi8+Cjx0ZXh0IHg9IjM3NCIgeT0iOTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPnNldHMgY2FwYWNpdHk8L3RleHQ+CjxyZWN0IHg9IjQ1NiIgeT0iMzYiIHdpZHRoPSIzNjAiIGhlaWdodD0iMTQwIiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNjM2IiB5PSI1OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo5LjVweCI+bW9uaXRvcl9hdXRvc2NhbGVfc2V0dGluZzwvdGV4dD4KPHRleHQgeD0iNjM2IiB5PSI3NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+cHJvZmlsZSDCtyBjYXBhY2l0eSBtaW4gLyBtYXggLyBkZWZhdWx0PC90ZXh0Pgo8cmVjdCB4PSI0NzAiIHk9Ijg4IiB3aWR0aD0iMzMyIiBoZWlnaHQ9IjM0IiByeD0iNyIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjYzNiIgeT0iMTA5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5FeGFtcGxlOiBDUFUgJmd0OyA3NSUg4oaSIGFkZCBpbnN0YW5jZXM8L3RleHQ+CjxyZWN0IHg9IjQ3MCIgeT0iMTI4IiB3aWR0aD0iMzMyIiBoZWlnaHQ9IjM0IiByeD0iNyIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIi8+Cjx0ZXh0IHg9IjYzNiIgeT0iMTQ5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5FeGFtcGxlOiBDUFUgJmx0OyAyNSUg4oaSIHJlbW92ZSBpbnN0YW5jZXM8L3RleHQ+Cjwvc3ZnPg==" alt="Scaling lives on a separate azurerm_monitor_autoscale_setting whose target is the scale set. Its profile sets the capacity minimum, maximum, and default, and a target-tracking policy maps to a rule pair: a scale-out rule that adds instances when a metric such as Percentage CPU rises above a threshold, and a scale-in rule that removes instances when it falls below one." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkyIiB2aWV3Qm94PSIwIDAgODM2IDE5MiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTY2FsaW5nIGxpdmVzIG9uIGEgc2VwYXJhdGUgYXp1cmVybV9tb25pdG9yX2F1dG9zY2FsZV9zZXR0aW5nIHdob3NlIHRhcmdldCBpcyB0aGUgc2NhbGUgc2V0LiBJdHMgcHJvZmlsZSBzZXRzIHRoZSBjYXBhY2l0eSBtaW5pbXVtLCBtYXhpbXVtLCBhbmQgZGVmYXVsdCwgYW5kIGEgdGFyZ2V0LXRyYWNraW5nIHBvbGljeSBtYXBzIHRvIGEgcnVsZSBwYWlyOiBhIHNjYWxlLW91dCBydWxlIHRoYXQgYWRkcyBpbnN0YW5jZXMgd2hlbiBhIG1ldHJpYyBzdWNoIGFzIFBlcmNlbnRhZ2UgQ1BVIHJpc2VzIGFib3ZlIGEgdGhyZXNob2xkLCBhbmQgYSBzY2FsZS1pbiBydWxlIHRoYXQgcmVtb3ZlcyBpbnN0YW5jZXMgd2hlbiBpdCBmYWxscyBiZWxvdyBvbmUuIj48c3R5bGU+dGV4dHtmb250LWZhbWlseTpJbnRlciwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwnU2Vnb2UgVUknLFJvYm90bywnSGVsdmV0aWNhIE5ldWUnLEFyaWFsLHNhbnMtc2VyaWY7ZmlsbDojY2JkNWUxfTwvc3R5bGU+CjxkZWZzPjxtYXJrZXIgaWQ9ImF6YXNhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+U0NBTElORyBJUyBBIFNFUEFSQVRFIEFVVE9TQ0FMRSBTRVRUSU5HIMK3IEEgUlVMRSBQQUlSPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDQiIHdpZHRoPSIyNzIiIGhlaWdodD0iMTIwIiByeD0iMTMiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMTU2IiB5PSI3MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMXB4Ij5zY2FsZSBzZXQ8L3RleHQ+Cjx0ZXh0IHg9IjE1NiIgeT0iODgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPmNhcGFjaXR5ID0gTjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEwNCIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjQ2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjExNyIgeT0iMTA0IiB3aWR0aD0iNzgiIGhlaWdodD0iNDYiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHJlY3QgeD0iMjAwIiB5PSIxMDQiIHdpZHRoPSI3OCIgaGVpZ2h0PSI0NiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSI3MyIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjlweCI+aW5zdGFuY2U8L3RleHQ+Cjx0ZXh0IHg9IjE1NiIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjlweCI+aW5zdGFuY2U8L3RleHQ+Cjx0ZXh0IHg9IjIzOSIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjlweCI+aW5zdGFuY2U8L3RleHQ+CjxsaW5lIHgxPSI0NTIiIHkxPSIxMDQiIHgyPSIyOTYiIHkyPSIxMDQiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjYXphc2FoKSIvPgo8dGV4dCB4PSIzNzQiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij5zZXRzIGNhcGFjaXR5PC90ZXh0Pgo8cmVjdCB4PSI0NTYiIHk9IjM2IiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjE0MCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjYzNiIgeT0iNTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OS41cHgiPm1vbml0b3JfYXV0b3NjYWxlX3NldHRpbmc8L3RleHQ+Cjx0ZXh0IHg9IjYzNiIgeT0iNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnByb2ZpbGUgwrcgY2FwYWNpdHkgbWluIC8gbWF4IC8gZGVmYXVsdDwvdGV4dD4KPHJlY3QgeD0iNDcwIiB5PSI4OCIgd2lkdGg9IjMzMiIgaGVpZ2h0PSIzNCIgcng9IjciIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSI2MzYiIHk9IjEwOSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+RXhhbXBsZTogQ1BVICZndDsgNzUlIOKGkiBhZGQgaW5zdGFuY2VzPC90ZXh0Pgo8cmVjdCB4PSI0NzAiIHk9IjEyOCIgd2lkdGg9IjMzMiIgaGVpZ2h0PSIzNCIgcng9IjciIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIvPgo8dGV4dCB4PSI2MzYiIHk9IjE0OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+RXhhbXBsZTogQ1BVICZsdDsgMjUlIOKGkiByZW1vdmUgaW5zdGFuY2VzPC90ZXh0Pgo8L3N2Zz4=" alt="Scaling lives on a separate azurerm_monitor_autoscale_setting whose target is the scale set. Its profile sets the capacity minimum, maximum, and default, and a target-tracking policy maps to a rule pair: a scale-out rule that adds instances when a metric such as Percentage CPU rises above a threshold, and a scale-in rule that removes instances when it falls below one." />
</div>

<p className="t9-caption">Scaling is a separate autoscale setting: capacity bounds plus a rule pair (a scale-out rule and a scale-in rule on a metric) that expresses the target-tracking intent in Azure's rule model.</p>

#### Placement, health checks, and self-healing

The ASG's multi-subnet `vpc_zone_identifier` maps to the scale set's `zones`, and the scale set spreads its instances across those **availability zones** and, within a zone, across **fault domains**. The across-zone footprint the ASG was deployed for holds.

Self-healing maps to the scale set's **automatic instance repair** (`automatic_instance_repair`): with an application health probe configured, an instance the probe marks unhealthy is repaired (reimaged or replaced) after a grace period, the same intent as the ASG's health-check replacement. Which instance is removed on scale-in is governed by the scale set's `scale_in` rule (`Default` / `NewestVM` / `OldestVM`), a partial analog to the ASG's termination policies.

* **Zones plus fault domains:** the ASG's subnets map to the scale set's `zones`; instances spread across availability zones and fault domains.
* **Automatic instance repair:** with a health probe configured, an unhealthy instance is repaired after a grace period, the ASG's health-check replacement in Azure's terms.
* **Scale-in ordering only partly survives:** the scale set's `scale_in` rule chooses which instance to remove, a partial analog to the ASG's termination policies.

△ Auto Scaling differences

* **Autorepair needs a health probe:** automatic instance repair only replaces an unhealthy instance when an application health probe (or the health extension) is configured; without one, the scale set maintains its count but does not act on application health.

#### Updates, lifecycle hooks, and warm pools

The scale set supports rolling upgrades. Other Auto Scaling group features have the following limits.

* **Rolling replacement holds:** a model update can use the scale set's `rolling_upgrade_policy` to replace instances in batches. This provisioning behavior does not implement the AWS StartInstanceRefresh API.
* **Spot works; the mix narrows:** instances can run at Spot priority, but the ASG's mixed-instances distribution across several instance types with an allocation strategy has no direct scale-set analog.
* **Lifecycle hooks: no direct analog:** the ASG's pause-and-continue launch/terminate hooks have no scale-set equivalent (scheduled-event / terminate notifications are close but not the same pause-for-a-custom-action mechanism).
* **Warm pools: no analog:** there is no pre-initialized, stopped-instance pool on the scale set.

△ Auto Scaling differences

* **Lifecycle hooks and warm pools are not reproduced:** these ASG mechanisms have no scale-set analog; the fleet's size, autoscaling, and rolling upgrade are preserved, that orchestration is not.

#### Limitations

The scale set, its inline model, its zonal spread, and automatic instance repair map directly. Two considerations frame how the running fleet behaves after cutover.

△ Auto Scaling differences

* **Declare scaling changes in infrastructure code:** runtime `SetDesiredCapacity` and scaling-policy mutations are outside this mapping. Unsupported infrastructure settings can be reported during the build; unsupported SDK requests return an error when called.
* **Sizing decisions belong to the autoscale setting.** Tensor9 provisions the scale set, its capacity bounds, and its metric rules at build time; when Azure Monitor actually adds or removes an instance is the autoscale setting's decision, evaluated on Azure's own metrics and cadence, not something Tensor9 sizes at runtime.

#### Other considerations

Plan persistent storage, instance costs, and updates before deployment.

* **Instances are replaced, not repaired:** automatic instance repair recreates an unhealthy VM, so surviving state lives on attached managed disks or a storage account, not the instance's OS disk.
* **Runtime scaling is Azure's decision:** the build provisions the scale set, its capacity bounds, and its metric rules; the Azure Monitor autoscale setting decides when to add or remove an instance on Azure's own metrics and cadence.
* **Costs depend on the running instances.** VM charges follow actual running instances, including temporary replacement capacity, plus storage, networking and other target charges. Desired-capacity bounds are not an enforced spending cap.
* **A model change is a rolling upgrade:** the launch template maps to the scale set's inline VM model, and a change rolls the instances, the same immutable-fleet update model the Auto Scaling group used.

#### Fleet management scope

The fleet runs as an Azure Virtual Machine Scale Set with the autoscale setting's sizing controls. See [fleet lifecycle and runtime management](/service-adapters/aws/compute-containers/ec2-auto-scaling#fleet-lifecycle-and-runtime-management) for logical group discovery/deletion and higher-level ownership. Desired-capacity and policy changes use infrastructure-as-code or the owning service; native readiness, placement and replacement follow this target's controls above.

## On OCI

| Operation                                                                            | Area                | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------ | ------------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Scaling policy (target-tracking / step)                                              | Autoscaling         | Partial      | Most usage   | A supported metric-driven policy maps to the autoscaling configuration's utilization targets or threshold rules. Review translated thresholds: metric definitions, evaluation windows, cooldowns and scaling timing follow the target autoscaler. Custom or ASG-specific metrics need a supported target trigger; size bounds alone do not create a scaling policy. |
| min\_size / max\_size                                                                | Autoscaling         | Supported    | Common       | Map to the autoscaling configuration's bounds on desired capacity; min==max fixes the desired count. These bounds do not guarantee ready capacity or cap temporary replicas during replacement.                                                                                                                                                                     |
| SetDesiredCapacity / runtime scaling-policy mutations                                | Control plane       | Out of scope | Full surface | SetDesiredCapacity and runtime scaling-policy changes are outside this mapping. Set size and bounds through infrastructure-as-code or the owning service's supported lifecycle configuration. The runtime group API separately supports discovery and deletion.                                                                                                     |
| Fleet provisioning (aws\_autoscaling\_group)                                         | Fleet lifecycle     | Supported    | Common       | your aws\_autoscaling\_group compiles to an OCI Instance Pool, one managed group whose instances use the same configuration                                                                                                                                                                                                                                         |
| Lifecycle hooks / instance refresh / warm pools / mixed-instances distribution       | Fleet orchestration | Out of scope | Full surface | The AWS StartInstanceRefresh API, lifecycle hooks, warm pools and on-demand/Spot distribution are outside this mapping. Target-native rolling replacement during provisioning is separate and follows the target's documented update policy where supported.                                                                                                        |
| desired\_capacity                                                                    | Fleet sizing        | Supported    | Common       | Sets the desired number of replicas using the same launch configuration. Running and ready capacity converge as allocation, scheduling and health checks complete.                                                                                                                                                                                                  |
| Instance blueprint (launch template / launch configuration / mixed-instances policy) | Instance definition | Supported    | Common       | the ASG's instance definition (sourced from a launch template, a legacy launch configuration, or a mixed-instances policy) uses the same instance mapping as a standalone OCI Compute instance, so every replica inherits the disk, subnet, security groups, identity, and metadata of a single instance                                                            |
| Instance metadata + identity on every replica                                        | Metadata + identity | Supported    | Most usage   | each replica gets the same read-only instance-metadata (IMDS) API and workload identity as a standalone instance, so per-replica service discovery and credential lookups keep working                                                                                                                                                                              |
| Multi-AZ placement (vpc\_zone\_identifier)                                           | Placement           | Supported    | Most usage   | The ASG's subnets map to the fleet's selected target zones. Running capacity depends on allocation and health in those zones.                                                                                                                                                                                                                                       |

#### How it works

On OCI, Tensor9 translates the Auto Scaling group into **three resources**. An `oci_core_instance_configuration` (the immutable blueprint) is referenced by an `oci_core_instance_pool` that runs the instances, and a separate `oci_autoscaling_auto_scaling_configuration` attaches to the pool to drive its size.

`desired_capacity` becomes the pool's desired `size`. Ready capacity follows allocation, startup and health checks. The ASG's zonal spread lands as the pool's `placement_configurations` across the region's availability domains and fault domains . `min_size`/`max_size` become the autoscaling configuration's bounds.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjE0IiB2aWV3Qm94PSIwIDAgODM2IDIxNCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBPQ0kgdGhlIEF1dG8gU2NhbGluZyBncm91cCBtYXBzIHRvIGFuIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24gYW5kIGFuIGluc3RhbmNlIHBvb2wgd2l0aCBhIGRlc2lyZWQgY291bnQgYWNyb3NzIHNlbGVjdGVkIGF2YWlsYWJpbGl0eSBhbmQgZmF1bHQgZG9tYWlucy4gQSBzZXBhcmF0ZSBhdXRvc2NhbGluZyBjb25maWd1cmF0aW9uIGFwcGxpZXMgQ1BVIG9yIG1lbW9yeSB0aHJlc2hvbGQgcnVsZXMuIFJ1bm5pbmcgYW5kIHJlYWR5IGluc3RhbmNlcyBkZXBlbmQgb24gYWxsb2NhdGlvbiBhbmQgaGVhbHRoIGNoZWNrcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ib2NpYWgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5PTiBPQ0kgwrcgVEhSRUUgUkVTT1VSQ0VTPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNTgiIHdpZHRoPSIxODAiIGhlaWdodD0iMTA0IiByeD0iMTIiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iMTEwIiB5PSI4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo5LjVweCI+aW5zdGFuY2VfY29uZmlndXJhdGlvbjwvdGV4dD4KPHRleHQgeD0iMTEwIiB5PSIxMDQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPmJsdWVwcmludCDCtyBpbW11dGFibGU8L3RleHQ+Cjx0ZXh0IHg9IjExMCIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5zaGFwZSDCtyBpbWFnZTwvdGV4dD4KPHRleHQgeD0iMTEwIiB5PSIxNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPnZuaWMgwrcgbWV0YWRhdGE8L3RleHQ+CjxsaW5lIHgxPSIyMDAiIHkxPSIxMDQiIHgyPSIyNTIiIHkyPSIxMDQiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjb2NpYWgpIi8+Cjx0ZXh0IHg9IjIyNiIgeT0iOTYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPmJ5IGlkPC90ZXh0Pgo8cmVjdCB4PSIyNTYiIHk9IjQ0IiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjE0MCIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjQxNiIgeT0iNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTJweCI+aW5zdGFuY2VfcG9vbDwvdGV4dD4KPHRleHQgeD0iNDE2IiB5PSI4OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjkuNXB4Ij5zaXplIMK3IGFjcm9zcyBhdmFpbGFiaWxpdHkgKyBmYXVsdCBkb21haW5zPC90ZXh0Pgo8cmVjdCB4PSIyNzAiIHk9IjEwNCIgd2lkdGg9Ijk0IiBoZWlnaHQ9IjYyIiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+CjxyZWN0IHg9IjM2OCIgeT0iMTA0IiB3aWR0aD0iOTQiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iNDY2IiB5PSIxMDQiIHdpZHRoPSI5NCIgaGVpZ2h0PSI2MiIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8dGV4dCB4PSIzMTciIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSI0MTUiIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSI1MTMiIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSIzMTciIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+QUQgMTwvdGV4dD4KPHRleHQgeD0iNDE1IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPkFEIDI8L3RleHQ+Cjx0ZXh0IHg9IjUxMyIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5BRCAzPC90ZXh0Pgo8bGluZSB4MT0iNjI0IiB5MT0iMTA0IiB4Mj0iNTgwIiB5Mj0iMTA0IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI29jaWFoKSIvPgo8dGV4dCB4PSI2MDIiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5hdHRhY2hlczwvdGV4dD4KPHJlY3QgeD0iNjI4IiB5PSI1OCIgd2lkdGg9IjE4OCIgaGVpZ2h0PSIxMDQiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI3MjIiIHk9Ijg0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjlweCI+YXV0b19zY2FsaW5nX2NvbmZpZ3VyYXRpb248L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTA0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5taW4g4oaUIG1heDwvdGV4dD4KPHRleHQgeD0iNzIyIiB5PSIxMjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPmNwdSAvIG1lbW9yeSBydWxlczwvdGV4dD4KPHRleHQgeD0iNzIyIiB5PSIxNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPnNlcGFyYXRlIHJlc291cmNlPC90ZXh0Pgo8L3N2Zz4=" alt="On OCI the Auto Scaling group maps to an instance configuration and an instance pool with a desired count across selected availability and fault domains. A separate autoscaling configuration applies CPU or memory threshold rules. Running and ready instances depend on allocation and health checks." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjE0IiB2aWV3Qm94PSIwIDAgODM2IDIxNCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBPQ0kgdGhlIEF1dG8gU2NhbGluZyBncm91cCBtYXBzIHRvIGFuIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24gYW5kIGFuIGluc3RhbmNlIHBvb2wgd2l0aCBhIGRlc2lyZWQgY291bnQgYWNyb3NzIHNlbGVjdGVkIGF2YWlsYWJpbGl0eSBhbmQgZmF1bHQgZG9tYWlucy4gQSBzZXBhcmF0ZSBhdXRvc2NhbGluZyBjb25maWd1cmF0aW9uIGFwcGxpZXMgQ1BVIG9yIG1lbW9yeSB0aHJlc2hvbGQgcnVsZXMuIFJ1bm5pbmcgYW5kIHJlYWR5IGluc3RhbmNlcyBkZXBlbmQgb24gYWxsb2NhdGlvbiBhbmQgaGVhbHRoIGNoZWNrcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ib2NpYWgiIHZpZXdCb3g9IjAgMCAxMCAxMCIgcmVmWD0iOCIgcmVmWT0iNSIgbWFya2VyV2lkdGg9IjciIG1hcmtlckhlaWdodD0iNyIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+T04gT0NJIMK3IFRIUkVFIFJFU09VUkNFUzwvdGV4dD4KPHJlY3QgeD0iMjAiIHk9IjU4IiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjExMCIgeT0iODQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OS41cHgiPmluc3RhbmNlX2NvbmZpZ3VyYXRpb248L3RleHQ+Cjx0ZXh0IHg9IjExMCIgeT0iMTA0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5ibHVlcHJpbnQgwrcgaW1tdXRhYmxlPC90ZXh0Pgo8dGV4dCB4PSIxMTAiIHk9IjEyNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+c2hhcGUgwrcgaW1hZ2U8L3RleHQ+Cjx0ZXh0IHg9IjExMCIgeT0iMTQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij52bmljIMK3IG1ldGFkYXRhPC90ZXh0Pgo8bGluZSB4MT0iMjAwIiB5MT0iMTA0IiB4Mj0iMjUyIiB5Mj0iMTA0IiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI29jaWFoKSIvPgo8dGV4dCB4PSIyMjYiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij5ieSBpZDwvdGV4dD4KPHJlY3QgeD0iMjU2IiB5PSI0NCIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIxNDAiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI0MTYiIHk9IjcwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEycHgiPmluc3RhbmNlX3Bvb2w8L3RleHQ+Cjx0ZXh0IHg9IjQxNiIgeT0iODgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZTo5LjVweCI+c2l6ZSDCtyBhY3Jvc3MgYXZhaWxhYmlsaXR5ICsgZmF1bHQgZG9tYWluczwvdGV4dD4KPHJlY3QgeD0iMjcwIiB5PSIxMDQiIHdpZHRoPSI5NCIgaGVpZ2h0PSI2MiIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8cmVjdCB4PSIzNjgiIHk9IjEwNCIgd2lkdGg9Ijk0IiBoZWlnaHQ9IjYyIiByeD0iOCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjQ2NiIgeT0iMTA0IiB3aWR0aD0iOTQiIGhlaWdodD0iNjIiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHRleHQgeD0iMzE3IiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iNDE1IiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iNTEzIiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTAuNXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMzE3IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPkFEIDE8L3RleHQ+Cjx0ZXh0IHg9IjQxNSIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5BRCAyPC90ZXh0Pgo8dGV4dCB4PSI1MTMiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+QUQgMzwvdGV4dD4KPGxpbmUgeDE9IjYyNCIgeTE9IjEwNCIgeDI9IjU4MCIgeTI9IjEwNCIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNvY2lhaCkiLz4KPHRleHQgeD0iNjAyIiB5PSI5NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+YXR0YWNoZXM8L3RleHQ+CjxyZWN0IHg9IjYyOCIgeT0iNTgiIHdpZHRoPSIxODgiIGhlaWdodD0iMTA0IiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNzIyIiB5PSI4NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZTo5cHgiPmF1dG9fc2NhbGluZ19jb25maWd1cmF0aW9uPC90ZXh0Pgo8dGV4dCB4PSI3MjIiIHk9IjEwNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+bWluIOKGlCBtYXg8L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTI0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5jcHUgLyBtZW1vcnkgcnVsZXM8L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5zZXBhcmF0ZSByZXNvdXJjZTwvdGV4dD4KPC9zdmc+" alt="On OCI the Auto Scaling group maps to an instance configuration and an instance pool with a desired count across selected availability and fault domains. A separate autoscaling configuration applies CPU or memory threshold rules. Running and ready instances depend on allocation and health checks." />
</div>

<p className="t9-caption">On OCI the ASG splits into three resources: a standalone instance configuration, the instance pool that runs the instances, and a separate autoscaling configuration attached to the pool.</p>

#### The instance configuration

Like the GCP mapping, OCI keeps the blueprint in a separate, immutable resource, but here it is an `oci_core_instance_configuration`, a saved launch specification. The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) compiles to that configuration, capturing the compute shape, the translated image, the VNIC and subnet, and the instance metadata. The pool references it by id.

Because the instance configuration is a fixed snapshot of the launch spec, changing the blueprint means a new configuration the pool is pointed at, not an in-place edit. Every instance the pool launches boots from it through the same instance mapping as a standalone OCI Compute instance, so each is a full instance with its own block volumes, VNIC, identity, and read-only metadata surface.

* **Placement across AD + FD:** the pool spreads instances across availability domains and fault domains for resilience.

△ Auto Scaling differences

* **Blueprint changes point at a new configuration:** an instance configuration is a fixed snapshot, so editing the blueprint provisions a new configuration and re-points the pool; existing instances are not rewritten in place.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgbWFwcyB0byBvbmUgc3RhbmRhbG9uZSBvY2lfY29yZV9pbnN0YW5jZV9jb25maWd1cmF0aW9uLCBhIHNhdmVkIGxhdW5jaCBzcGVjaWZpY2F0aW9uIGhvbGRpbmcgdGhlIGNvbXB1dGUgc2hhcGUsIHRyYW5zbGF0ZWQgaW1hZ2UsIFZOSUMsIHN1Ym5ldCwgYW5kIG1ldGFkYXRhLiBUaGUgaW5zdGFuY2UgcG9vbCByZWZlcmVuY2VzIGl0IGJ5IGlkIGFuZCBsYXVuY2hlcyBldmVyeSBpbnN0YW5jZSBmcm9tIGl0OyBiZWNhdXNlIHRoZSBjb25maWd1cmF0aW9uIGlzIGEgZml4ZWQgc25hcHNob3QsIGNoYW5naW5nIHRoZSBibHVlcHJpbnQgbWVhbnMgYSBuZXcgY29uZmlndXJhdGlvbiB0aGUgcG9vbCBpcyBwb2ludGVkIGF0LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6IzMzNDE1NX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvY2libGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyMCIgeT0iMjQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkFTRyBJTlNUQU5DRSBERUZJTklUSU9OIOKGkiBPTkUgU0FWRUQgTEFVTkNIIFNQRUNJRklDQVRJT048L3RleHQ+CjxyZWN0IHg9IjIwIiB5PSI0MCIgd2lkdGg9IjIwNiIgaGVpZ2h0PSIxMzIiIHJ4PSIxMiIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjEyMyIgeT0iNjIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+QVNHIGluc3RhbmNlIGRlZmluaXRpb248L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSI3NCIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIvPgo8dGV4dCB4PSIxMjMiIHk9IjkxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OTsgZm9udC1zaXplOjkuNXB4Ij5sYXVuY2ggdGVtcGxhdGU8L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSIxMDYiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiLz4KPHRleHQgeD0iMTIzIiB5PSIxMjMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNDc1NTY5OyBmb250LXNpemU6OS41cHgiPmxhdW5jaCBjb25maWd1cmF0aW9uPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTM4IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIi8+Cjx0ZXh0IHg9IjEyMyIgeT0iMTU1IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OTsgZm9udC1zaXplOjkuNXB4Ij5taXhlZC1pbnN0YW5jZXMgcG9saWN5PC90ZXh0Pgo8bGluZSB4MT0iMjI4IiB5MT0iMTA2IiB4Mj0iMjc0IiB5Mj0iMTA2IiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS44IiBtYXJrZXItZW5kPSJ1cmwoI29jaWJsYWgpIi8+Cjx0ZXh0IHg9IjI1MSIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPm1hcHM8L3RleHQ+CjxyZWN0IHg9IjI3OCIgeT0iNDAiIHdpZHRoPSIzMDAiIGhlaWdodD0iMTMyIiByeD0iMTMiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iNDI4IiB5PSI2NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMHB4Ij5pbnN0YW5jZV9jb25maWd1cmF0aW9uPC90ZXh0Pgo8dGV4dCB4PSI0MjgiIHk9IjgyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5zYXZlZCBsYXVuY2ggc3BlYyDCtyBpbW11dGFibGU8L3RleHQ+CjxyZWN0IHg9IjI5MiIgeT0iOTQiIHdpZHRoPSIyNzIiIGhlaWdodD0iNjYiIHJ4PSI4IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHRleHQgeD0iNDI4IiB5PSIxMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+Y29tcHV0ZSBzaGFwZSDCtyBpbWFnZTwvdGV4dD4KPHRleHQgeD0iNDI4IiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+Vk5JQyDCtyBzdWJuZXQgwrcgYmxvY2sgdm9sdW1lczwvdGV4dD4KPHRleHQgeD0iNDI4IiB5PSIxNTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6MTBweCI+aW5zdGFuY2UgbWV0YWRhdGEgKGlkZW50aXR5KTwvdGV4dD4KPGxpbmUgeDE9IjU3OCIgeTE9IjEwNiIgeDI9IjYyNCIgeTI9IjEwNiIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNvY2libGFoKSIvPgo8dGV4dCB4PSI2MDEiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5ieSBpZDwvdGV4dD4KPHJlY3QgeD0iNjI4IiB5PSI1MiIgd2lkdGg9IjE4OCIgaGVpZ2h0PSIxMDgiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI3MjIiIHk9IjgyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEwLjVweCI+aW5zdGFuY2VfcG9vbDwvdGV4dD4KPHRleHQgeD0iNzIyIiB5PSIxMDIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPmxhdW5jaGVzIGVhY2ggaW5zdGFuY2U8L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTIyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij5mcm9tIHRoZSBjb25maWd1cmF0aW9uIGlkPC90ZXh0Pgo8dGV4dCB4PSI3MjIiIHk9IjEzOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+YSBmdWxsIE9DSSBDb21wdXRlIGluc3RhbmNlPC90ZXh0Pgo8L3N2Zz4=" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) maps to one standalone oci_core_instance_configuration, a saved launch specification holding the compute shape, translated image, VNIC, subnet, and metadata. The instance pool references it by id and launches every instance from it; because the configuration is a fixed snapshot, changing the blueprint means a new configuration the pool is pointed at." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgbWFwcyB0byBvbmUgc3RhbmRhbG9uZSBvY2lfY29yZV9pbnN0YW5jZV9jb25maWd1cmF0aW9uLCBhIHNhdmVkIGxhdW5jaCBzcGVjaWZpY2F0aW9uIGhvbGRpbmcgdGhlIGNvbXB1dGUgc2hhcGUsIHRyYW5zbGF0ZWQgaW1hZ2UsIFZOSUMsIHN1Ym5ldCwgYW5kIG1ldGFkYXRhLiBUaGUgaW5zdGFuY2UgcG9vbCByZWZlcmVuY2VzIGl0IGJ5IGlkIGFuZCBsYXVuY2hlcyBldmVyeSBpbnN0YW5jZSBmcm9tIGl0OyBiZWNhdXNlIHRoZSBjb25maWd1cmF0aW9uIGlzIGEgZml4ZWQgc25hcHNob3QsIGNoYW5naW5nIHRoZSBibHVlcHJpbnQgbWVhbnMgYSBuZXcgY29uZmlndXJhdGlvbiB0aGUgcG9vbCBpcyBwb2ludGVkIGF0LiI+PHN0eWxlPnRleHR7Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsJ1NlZ29lIFVJJyxSb2JvdG8sJ0hlbHZldGljYSBOZXVlJyxBcmlhbCxzYW5zLXNlcmlmO2ZpbGw6I2NiZDVlMX08L3N0eWxlPgo8ZGVmcz48bWFya2VyIGlkPSJvY2libGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyMCIgeT0iMjQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5BU0cgSU5TVEFOQ0UgREVGSU5JVElPTiDihpIgT05FIFNBVkVEIExBVU5DSCBTUEVDSUZJQ0FUSU9OPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIyMDYiIGhlaWdodD0iMTMyIiByeD0iMTIiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIxMjMiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjEwcHgiPkFTRyBpbnN0YW5jZSBkZWZpbml0aW9uPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iNzQiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiLz4KPHRleHQgeD0iMTIzIiB5PSI5MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIHRlbXBsYXRlPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTA2IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2Ii8+Cjx0ZXh0IHg9IjEyMyIgeT0iMTIzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5sYXVuY2ggY29uZmlndXJhdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEzOCIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIvPgo8dGV4dCB4PSIxMjMiIHk9IjE1NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bWl4ZWQtaW5zdGFuY2VzIHBvbGljeTwvdGV4dD4KPGxpbmUgeDE9IjIyOCIgeTE9IjEwNiIgeDI9IjI3NCIgeTI9IjEwNiIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNvY2libGFoKSIvPgo8dGV4dCB4PSIyNTEiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij5tYXBzPC90ZXh0Pgo8cmVjdCB4PSIyNzgiIHk9IjQwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjEzMiIgcng9IjEzIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjQyOCIgeT0iNjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTBweCI+aW5zdGFuY2VfY29uZmlndXJhdGlvbjwvdGV4dD4KPHRleHQgeD0iNDI4IiB5PSI4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+c2F2ZWQgbGF1bmNoIHNwZWMgwrcgaW1tdXRhYmxlPC90ZXh0Pgo8cmVjdCB4PSIyOTIiIHk9Ijk0IiB3aWR0aD0iMjcyIiBoZWlnaHQ9IjY2IiByeD0iOCIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+Cjx0ZXh0IHg9IjQyOCIgeT0iMTE0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjEwcHgiPmNvbXB1dGUgc2hhcGUgwrcgaW1hZ2U8L3RleHQ+Cjx0ZXh0IHg9IjQyOCIgeT0iMTMyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjEwcHgiPlZOSUMgwrcgc3VibmV0IMK3IGJsb2NrIHZvbHVtZXM8L3RleHQ+Cjx0ZXh0IHg9IjQyOCIgeT0iMTUwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjEwcHgiPmluc3RhbmNlIG1ldGFkYXRhIChpZGVudGl0eSk8L3RleHQ+CjxsaW5lIHgxPSI1NzgiIHkxPSIxMDYiIHgyPSI2MjQiIHkyPSIxMDYiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjb2NpYmxhaCkiLz4KPHRleHQgeD0iNjAxIiB5PSI5OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+YnkgaWQ8L3RleHQ+CjxyZWN0IHg9IjYyOCIgeT0iNTIiIHdpZHRoPSIxODgiIGhlaWdodD0iMTA4IiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHRleHQgeD0iNzIyIiB5PSI4MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMC41cHgiPmluc3RhbmNlX3Bvb2w8L3RleHQ+Cjx0ZXh0IHg9IjcyMiIgeT0iMTAyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5sYXVuY2hlcyBlYWNoIGluc3RhbmNlPC90ZXh0Pgo8dGV4dCB4PSI3MjIiIHk9IjEyMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+ZnJvbSB0aGUgY29uZmlndXJhdGlvbiBpZDwvdGV4dD4KPHRleHQgeD0iNzIyIiB5PSIxMzgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmEgZnVsbCBPQ0kgQ29tcHV0ZSBpbnN0YW5jZTwvdGV4dD4KPC9zdmc+" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) maps to one standalone oci_core_instance_configuration, a saved launch specification holding the compute shape, translated image, VNIC, subnet, and metadata. The instance pool references it by id and launches every instance from it; because the configuration is a fixed snapshot, changing the blueprint means a new configuration the pool is pointed at." />
</div>

<p className="t9-caption">The ASG's instance definition maps to one standalone, immutable instance configuration (a saved launch spec) which the pool references by id and launches every instance from.</p>

#### The autoscaling configuration

Scaling lives on a separate `oci_autoscaling_auto_scaling_configuration` attached to the pool. Its policy sets the `min_size`/`max_size` bounds. The OCI-specific shape is that its scaling is **threshold-based**: a CPU- or memory-utilization target maps to threshold rules (scale out above a high threshold, scale in below a low one) with a cooldown, rather than a single continuous target-tracking value. Review both thresholds and the cooldown; one utilization target does not uniquely determine the rule pair. OCI evaluates the configured metrics using its own timing. A fixed `min_size == max_size` fixes desired capacity, not the number of ready instances.

* **Separate autoscaling configuration:** bounds and rules live on the autoscaling configuration attached to the pool.
* **Threshold rules + cooldown:** a CPU/memory target maps to scale-out / scale-in thresholds, not a single continuous target.
* **Schedule-based scaling too:** the autoscaling configuration also supports a scheduled policy, so a time-of-day capacity plan maps directly where the ASG used scheduled actions.

△ Auto Scaling differences

* **Scaling is threshold-based, not continuous target-tracking:** a CPU/utilization policy becomes high/low threshold rules with a cooldown; the model is OCI's step-threshold one, so the exact response curve differs from the ASG's target-tracking.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTY2FsaW5nIGxpdmVzIG9uIGEgc2VwYXJhdGUgb2NpX2F1dG9zY2FsaW5nX2F1dG9fc2NhbGluZ19jb25maWd1cmF0aW9uIGF0dGFjaGVkIHRvIHRoZSBpbnN0YW5jZSBwb29sLiBJdCBzZXRzIHRoZSBtaW4gYW5kIG1heCBib3VuZHMgYW5kIHRocmVzaG9sZCBydWxlczogc2NhbGUgb3V0IHdoZW4gQ1BVIG9yIG1lbW9yeSB1dGlsaXphdGlvbiByaXNlcyBhYm92ZSBhIGhpZ2ggdGhyZXNob2xkLCBzY2FsZSBpbiB3aGVuIGl0IGZhbGxzIGJlbG93IGEgbG93IG9uZSwgd2l0aCBhIGNvb2xkb3duIGJldHdlZW4gc3RlcHMuIFRoaXMgaXMgYSBzdGVwLXRocmVzaG9sZCBtb2RlbCByYXRoZXIgdGhhbiBhIHNpbmdsZSBjb250aW51b3VzIHRhcmdldC10cmFja2luZyB2YWx1ZS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ib2NpYXNhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDojMDQ3ODU3Ij5TQ0FMSU5HIElTIEEgU0VQQVJBVEUgQVVUT1NDQUxJTkcgQ09ORklHVVJBVElPTiDCtyBUSFJFU0hPTERTPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDQiIHdpZHRoPSIyNzIiIGhlaWdodD0iMTIwIiByeD0iMTMiIGZpbGw9IiNlY2ZkZjUiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMTU2IiB5PSI3MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZToxMXB4Ij5pbnN0YW5jZV9wb29sPC90ZXh0Pgo8dGV4dCB4PSIxNTYiIHk9Ijg4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3Ij5kZXNpcmVkIHNpemUgPSBOPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTA0IiB3aWR0aD0iNzgiIGhlaWdodD0iNDYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iMTE3IiB5PSIxMDQiIHdpZHRoPSI3OCIgaGVpZ2h0PSI0NiIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8cmVjdCB4PSIyMDAiIHk9IjEwNCIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjQ2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjczIiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMTU2IiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OXB4Ij5pbnN0YW5jZTwvdGV4dD4KPHRleHQgeD0iMjM5IiB5PSIxMzEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6OXB4Ij5pbnN0YW5jZTwvdGV4dD4KPGxpbmUgeDE9IjQ1MiIgeTE9IjEwNCIgeDI9IjI5NiIgeTI9IjEwNCIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNvY2lhc2FoKSIvPgo8dGV4dCB4PSIzNzQiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij5yZXNpemVzPC90ZXh0Pgo8cmVjdCB4PSI0NTYiIHk9IjM2IiB3aWR0aD0iMzYwIiBoZWlnaHQ9IjE0MCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiIHN0cm9rZS13aWR0aD0iMS40Ii8+Cjx0ZXh0IHg9IjYzNiIgeT0iNTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6OXB4Ij5hdXRvX3NjYWxpbmdfY29uZmlndXJhdGlvbjwvdGV4dD4KPHRleHQgeD0iNjM2IiB5PSI3NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NyI+cG9saWN5IMK3IG1pbiDihpQgbWF4PC90ZXh0Pgo8cmVjdCB4PSI0NzAiIHk9Ijg4IiB3aWR0aD0iMzMyIiBoZWlnaHQ9IjMwIiByeD0iNyIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjYzNiIgeT0iMTA4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjkuNXB4Ij7ilrIgQ1BVIC8gbWVtb3J5ICZndDsgaGlnaCB0aHJlc2hvbGQg4oaSIHNjYWxlIG91dDwvdGV4dD4KPHJlY3QgeD0iNDcwIiB5PSIxMjIiIHdpZHRoPSIzMzIiIGhlaWdodD0iMzAiIHJ4PSI3IiBmaWxsPSIjZjhmYWZjIiBzdHJva2U9IiNjYmQ1ZTEiLz4KPHRleHQgeD0iNjM2IiB5PSIxNDIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPuKWvCBDUFUgLyBtZW1vcnkgJmx0OyBsb3cgdGhyZXNob2xkIOKGkiBzY2FsZSBpbjwvdGV4dD4KPHRleHQgeD0iNjM2IiB5PSIxNjgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OXB4Ij5jb29sZG93biBiZXR3ZWVuIHN0ZXBzPC90ZXh0Pgo8L3N2Zz4=" alt="Scaling lives on a separate oci_autoscaling_auto_scaling_configuration attached to the instance pool. It sets the min and max bounds and threshold rules: scale out when CPU or memory utilization rises above a high threshold, scale in when it falls below a low one, with a cooldown between steps. This is a step-threshold model rather than a single continuous target-tracking value." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTkwIiB2aWV3Qm94PSIwIDAgODM2IDE5MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJTY2FsaW5nIGxpdmVzIG9uIGEgc2VwYXJhdGUgb2NpX2F1dG9zY2FsaW5nX2F1dG9fc2NhbGluZ19jb25maWd1cmF0aW9uIGF0dGFjaGVkIHRvIHRoZSBpbnN0YW5jZSBwb29sLiBJdCBzZXRzIHRoZSBtaW4gYW5kIG1heCBib3VuZHMgYW5kIHRocmVzaG9sZCBydWxlczogc2NhbGUgb3V0IHdoZW4gQ1BVIG9yIG1lbW9yeSB1dGlsaXphdGlvbiByaXNlcyBhYm92ZSBhIGhpZ2ggdGhyZXNob2xkLCBzY2FsZSBpbiB3aGVuIGl0IGZhbGxzIGJlbG93IGEgbG93IG9uZSwgd2l0aCBhIGNvb2xkb3duIGJldHdlZW4gc3RlcHMuIFRoaXMgaXMgYSBzdGVwLXRocmVzaG9sZCBtb2RlbCByYXRoZXIgdGhhbiBhIHNpbmdsZSBjb250aW51b3VzIHRhcmdldC10cmFja2luZyB2YWx1ZS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ib2NpYXNhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNi41IiBtYXJrZXJIZWlnaHQ9IjYuNSIgb3JpZW50PSJhdXRvLXN0YXJ0LXJldmVyc2UiPjxwYXRoIGQ9Ik0wLDAgTDEwLDUgTDAsMTAgeiIgZmlsbD0iIzk0YTNiOCIvPjwvbWFya2VyPjwvZGVmcz4KPHRleHQgeD0iMjAiIHk9IjI0IiBzdHlsZT0iZm9udDogNzAwIDEwcHggSW50ZXIsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxLjNweDsgZmlsbDogIzk0YTNiODsgZmlsbDogIzkwZGVjOCI+U0NBTElORyBJUyBBIFNFUEFSQVRFIEFVVE9TQ0FMSU5HIENPTkZJR1VSQVRJT04gwrcgVEhSRVNIT0xEUzwvdGV4dD4KPHJlY3QgeD0iMjAiIHk9IjQ0IiB3aWR0aD0iMjcyIiBoZWlnaHQ9IjEyMCIgcng9IjEzIiBmaWxsPSIjMWEzMTI2IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjE1NiIgeT0iNzAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6MTFweCI+aW5zdGFuY2VfcG9vbDwvdGV4dD4KPHRleHQgeD0iMTU2IiB5PSI4OCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjOCI+ZGVzaXJlZCBzaXplID0gTjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEwNCIgd2lkdGg9Ijc4IiBoZWlnaHQ9IjQ2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjExNyIgeT0iMTA0IiB3aWR0aD0iNzgiIGhlaWdodD0iNDYiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHJlY3QgeD0iMjAwIiB5PSIxMDQiIHdpZHRoPSI3OCIgaGVpZ2h0PSI0NiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSI3MyIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjlweCI+aW5zdGFuY2U8L3RleHQ+Cjx0ZXh0IHg9IjE1NiIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjlweCI+aW5zdGFuY2U8L3RleHQ+Cjx0ZXh0IHg9IjIzOSIgeT0iMTMxIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjlweCI+aW5zdGFuY2U8L3RleHQ+CjxsaW5lIHgxPSI0NTIiIHkxPSIxMDQiIHgyPSIyOTYiIHkyPSIxMDQiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgjb2NpYXNhaCkiLz4KPHRleHQgeD0iMzc0IiB5PSI5NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+cmVzaXplczwvdGV4dD4KPHJlY3QgeD0iNDU2IiB5PSIzNiIgd2lkdGg9IjM2MCIgaGVpZ2h0PSIxNDAiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8dGV4dCB4PSI2MzYiIHk9IjU4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjlweCI+YXV0b19zY2FsaW5nX2NvbmZpZ3VyYXRpb248L3RleHQ+Cjx0ZXh0IHg9IjYzNiIgeT0iNzYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzgiPnBvbGljeSDCtyBtaW4g4oaUIG1heDwvdGV4dD4KPHJlY3QgeD0iNDcwIiB5PSI4OCIgd2lkdGg9IjMzMiIgaGVpZ2h0PSIzMCIgcng9IjciIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSI2MzYiIHk9IjEwOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+4payIENQVSAvIG1lbW9yeSAmZ3Q7IGhpZ2ggdGhyZXNob2xkIOKGkiBzY2FsZSBvdXQ8L3RleHQ+CjxyZWN0IHg9IjQ3MCIgeT0iMTIyIiB3aWR0aD0iMzMyIiBoZWlnaHQ9IjMwIiByeD0iNyIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2Ii8+Cjx0ZXh0IHg9IjYzNiIgeT0iMTQyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij7ilrwgQ1BVIC8gbWVtb3J5ICZsdDsgbG93IHRocmVzaG9sZCDihpIgc2NhbGUgaW48L3RleHQ+Cjx0ZXh0IHg9IjYzNiIgeT0iMTY4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjlweCI+Y29vbGRvd24gYmV0d2VlbiBzdGVwczwvdGV4dD4KPC9zdmc+" alt="Scaling lives on a separate oci_autoscaling_auto_scaling_configuration attached to the instance pool. It sets the min and max bounds and threshold rules: scale out when CPU or memory utilization rises above a high threshold, scale in when it falls below a low one, with a cooldown between steps. This is a step-threshold model rather than a single continuous target-tracking value." />
</div>

<p className="t9-caption">Scaling is a separate autoscaling configuration attached to the pool: min/max bounds plus high/low threshold rules and a cooldown, OCI's step model rather than continuous target-tracking.</p>

#### Placement, health checks, and self-healing

The ASG's zonal spread maps well: the pool's `placement_configurations` spread instances across the region's **availability domains** and, within each, across fault domains , and the pool can attach to a load balancer's backend set so new instances are registered as they come up.

Where OCI diverges from the ASG is **health-driven replacement**. An instance pool maintains its declared size, restoring the count when an instance is terminated or stops, but it does not replace an instance that is running yet failing an application health check the way an ASG with ELB/target-group health checks does. Autoscaling here reacts to metrics, not to health.

* **Placement across AD + FD.** `placement_configurations` spread instances across availability domains and fault domains.
* **Load-balancer attachment:** the pool can register instances into a load balancer backend set as it scales.
* **Size is maintained:** a terminated or stopped instance is replaced to hold the pool's declared size.

△ Auto Scaling differences

* **No application-health autohealing:** the pool restores count when an instance is terminated, but a running-but-unhealthy instance is not automatically replaced the way an ASG's ELB/target-group health check would; application-health replacement is not an instance-pool feature.

#### Updates, lifecycle hooks, and warm pools

Instance pools do not provide the following Auto Scaling group features.

* **No managed rolling replacement:** updating the instance configuration affects instances launched afterward; there is no built-in instance-refresh that rolls the existing pool to the new configuration in batches.
* **Lifecycle hooks: no analog:** the ASG's launch/terminate lifecycle hooks have no instance-pool equivalent.
* **Warm pools: no analog:** there is no pre-initialized, stopped-instance pool.
* **Mixed-instances distribution: no analog:** the pool launches one instance configuration; the ASG's multi-type on-demand/spot allocation strategy is not reproduced.

△ Auto Scaling differences

* **ASG-proprietary orchestration is not reproduced:** instance refresh, lifecycle hooks, warm pools, and the mixed-instances distribution have no instance-pool analog; the fleet's size, placement, and metric/schedule autoscaling are preserved, that orchestration is not.

#### Limitations

The three resources, the instance configuration, and the AD/FD placement map directly. Two considerations frame how the running fleet behaves after cutover.

△ Auto Scaling differences

* **Declare scaling changes in infrastructure code:** runtime `SetDesiredCapacity` and scaling-policy mutations are outside this mapping. Unsupported infrastructure settings can be reported during the build; unsupported SDK requests return an error when called.
* **Sizing decisions belong to the autoscaling configuration.** Tensor9 provisions the pool, its bounds, and its threshold policy at build time; when OCI actually adds or removes an instance is the autoscaling configuration's decision, evaluated on OCI's own metrics and cooldowns, not something Tensor9 sizes at runtime.

#### Other considerations

Plan persistent storage, instance costs, and updates before deployment.

* **Instances are replaced, not repaired:** the pool replaces a terminated or stopped instance, so surviving state lives on attached block volumes or Object Storage, not the instance's boot volume.
* **Runtime scaling is OCI's decision:** the build provisions the pool, its bounds, and its threshold policy; the autoscaling configuration decides when to add or remove an instance on OCI's own metrics and cooldowns.
* **Costs depend on the running instances.** Compute charges follow actual running instances, including replacement capacity, plus storage, networking and other target charges. Desired-capacity bounds are not an enforced spending cap.
* **Update existing instances separately.** A new instance configuration applies to instances launched afterward. The pool has no managed rolling replacement for existing instances.

#### Fleet management scope

The fleet runs as an OCI Instance Pool with the autoscaling configuration's sizing controls. See [fleet lifecycle and runtime management](/service-adapters/aws/compute-containers/ec2-auto-scaling#fleet-lifecycle-and-runtime-management) for logical group discovery/deletion and higher-level ownership. Desired-capacity and policy changes use infrastructure-as-code or the owning service; native readiness, placement and replacement follow this target's controls above.

## On Private Kubernetes

| Operation                                                                            | Area                | Support      | Depth        | Notes                                                                                                                                                                                                                                                                                                                                                               |
| ------------------------------------------------------------------------------------ | ------------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Scaling policy (target-tracking / step)                                              | Autoscaling         | Partial      | Most usage   | A supported metric-driven policy maps to the horizontal pod autoscaler's utilization targets or threshold rules. Review translated thresholds: metric definitions, evaluation windows, cooldowns and scaling timing follow the target autoscaler. Custom or ASG-specific metrics need a supported target trigger; size bounds alone do not create a scaling policy. |
| min\_size / max\_size                                                                | Autoscaling         | Supported    | Common       | Map to the horizontal pod autoscaler's bounds on desired capacity; min==max fixes the desired count. These bounds do not guarantee ready capacity or cap temporary replicas during replacement.                                                                                                                                                                     |
| SetDesiredCapacity / runtime scaling-policy mutations                                | Control plane       | Out of scope | Full surface | SetDesiredCapacity and runtime scaling-policy changes are outside this mapping. Set size and bounds through infrastructure-as-code or the owning service's supported lifecycle configuration. The runtime group API separately supports discovery and deletion.                                                                                                     |
| Fleet provisioning (aws\_autoscaling\_group)                                         | Fleet lifecycle     | Supported    | Common       | your aws\_autoscaling\_group compiles to a KubeVirt VirtualMachinePool, one managed group whose instances use the same configuration                                                                                                                                                                                                                                |
| Lifecycle hooks / instance refresh / warm pools / mixed-instances distribution       | Fleet orchestration | Out of scope | Full surface | The AWS StartInstanceRefresh API, lifecycle hooks, warm pools and on-demand/Spot distribution are outside this mapping. Target-native rolling replacement during provisioning is separate and follows the target's documented update policy where supported.                                                                                                        |
| desired\_capacity                                                                    | Fleet sizing        | Supported    | Common       | Sets the desired number of replicas using the same launch configuration. Running and ready capacity converge as allocation, scheduling and health checks complete.                                                                                                                                                                                                  |
| Instance blueprint (launch template / launch configuration / mixed-instances policy) | Instance definition | Supported    | Common       | the ASG's instance definition (sourced from a launch template, a legacy launch configuration, or a mixed-instances policy) uses the same instance mapping as a standalone KubeVirt VirtualMachine, so every replica inherits the disk, subnet, security groups, identity, and metadata of a single instance                                                         |
| Instance metadata + identity on every replica                                        | Metadata + identity | Supported    | Most usage   | each replica gets the same read-only instance-metadata (IMDS) API and workload identity as a standalone instance, so per-replica service discovery and credential lookups keep working                                                                                                                                                                              |
| Multi-AZ placement (vpc\_zone\_identifier)                                           | Placement           | Supported    | Most usage   | Zone spread requires nodes with zone topology labels, scheduling rules that use them, and schedulable capacity in each selected zone.                                                                                                                                                                                                                               |

#### How it works

On KubeVirt the ASG compiles to a **VirtualMachinePool** that runs on the Kubernetes cluster you operate. Unlike the cloud targets, it is self-managed: you run the cluster and its nodes yourself. There is no cloud fleet control plane; the pool reconciles its replicas as full virtual machines scheduled onto your nodes, and live-migration and rescheduling on node drain are the target cluster's, not a cloud SLA.

`desired_capacity` becomes the pool's desired `replicas` count. Scheduling, node capacity and guest health determine how many replicas are ready. Each replica is a full KubeVirt `VirtualMachine` (a VMI backed by KVM on a node). Autoscaling is **optional**: the pool exposes a standard `scale` subresource, so a Kubernetes `HorizontalPodAutoscaler` can target it to adjust the desired replica count between bounds. Without an HPA the desired count stays fixed.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjQwIiB2aWV3Qm94PSIwIDAgODM2IDI0MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBLdWJlcm5ldGVzIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgbWFwcyB0byBhIEt1YmVWaXJ0IFZpcnR1YWxNYWNoaW5lUG9vbCB3aXRoIGFuIGVtYmVkZGVkIFZNIHRlbXBsYXRlIGFuZCBhIGRlc2lyZWQgcmVwbGljYSBjb3VudC4gU2NoZWR1bGluZyBhbmQgaGVhbHRoIGRldGVybWluZSByZWFkeSBjYXBhY2l0eSBvbiB5b3VyIG5vZGVzLiBBbiBvcHRpb25hbCBIb3Jpem9udGFsUG9kQXV0b3NjYWxlciBhZGp1c3RzIHRoZSBkZXNpcmVkIGNvdW50IHRocm91Z2ggdGhlIHBvb2wncyBzY2FsZSBzdWJyZXNvdXJjZS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ia3ZhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB4PSIxNiIgeT0iMzQiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTkwIiByeD0iMTYiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNCIgeT0iNTYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM2NDc0OGIiPktVQkVSTkVURVMgQ0xVU1RFUiDCtyBzZWxmLW1hbmFnZWQ8L3RleHQ+CjxyZWN0IHg9IjQwIiB5PSI3MiIgd2lkdGg9IjQ3MCIgaGVpZ2h0PSIxNDAiIHJ4PSIxMyIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIyNzUiIHk9Ijk2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjEycHgiPlZpcnR1YWxNYWNoaW5lUG9vbDwvdGV4dD4KPHRleHQgeD0iMjc1IiB5PSIxMTQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTc7IGZvbnQtc2l6ZTo5LjVweCI+ZGVzaXJlZCByZXBsaWNhcyA9IE4gwrcgcmVhZGluZXNzIGZvbGxvd3Mgc2NoZWR1bGluZzwvdGV4dD4KPHJlY3QgeD0iNTQiIHk9IjEyNCIgd2lkdGg9IjQ0MiIgaGVpZ2h0PSIyNiIgcng9IjgiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2E3ZjNkMCIvPgo8dGV4dCB4PSIyNzUiIHk9IjE0MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjkuNXB4Ij52aXJ0dWFsTWFjaGluZVRlbXBsYXRlIChlbWJlZGRlZCkgwrcgZG9tYWluIMK3IGRpc2tzIMK3IG5ldHdvcmtzPC90ZXh0Pgo8cmVjdCB4PSI1NCIgeT0iMTU4IiB3aWR0aD0iMTQwIiBoZWlnaHQ9IjQyIiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+CjxyZWN0IHg9IjIwNCIgeT0iMTU4IiB3aWR0aD0iMTQwIiBoZWlnaHQ9IjQyIiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+CjxyZWN0IHg9IjM1NCIgeT0iMTU4IiB3aWR0aD0iMTQwIiBoZWlnaHQ9IjQyIiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIi8+Cjx0ZXh0IHg9IjEyNCIgeT0iMTgzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEwcHgiPlZNIChWTUkpPC90ZXh0Pgo8dGV4dCB4PSIyNzQiIHk9IjE4MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMHB4Ij5WTSAoVk1JKTwvdGV4dD4KPHRleHQgeD0iNDI0IiB5PSIxODMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTBweCI+Vk0gKFZNSSk8L3RleHQ+CjxsaW5lIHgxPSI1NzYiIHkxPSIxNDIiIHgyPSI1MTQiIHkyPSIxNDIiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIgbWFya2VyLWVuZD0idXJsKCNrdmFoKSIvPgo8dGV4dCB4PSI1NDUiIHk9IjEzNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4LjVweCI+L3NjYWxlPC90ZXh0Pgo8cmVjdCB4PSI1ODAiIHk9IjkwIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjEwNCIgcng9IjEyIiBmaWxsPSIjZmZmIiBzdHJva2U9IiM5NGEzYjgiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDQiLz4KPHRleHQgeD0iNjkwIiB5PSIxMjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTAuNXB4Ij5Ib3Jpem9udGFsUG9kQXV0b3NjYWxlcjwvdGV4dD4KPHRleHQgeD0iNjkwIiB5PSIxNDAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPm9wdGlvbmFsPC90ZXh0Pgo8dGV4dCB4PSI2OTAiIHk9IjE2MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+bWluIOKGlCBtYXggwrcgcG9kIGNwdSAvIG1lbTwvdGV4dD4KPC9zdmc+" alt="On Kubernetes the Auto Scaling group maps to a KubeVirt VirtualMachinePool with an embedded VM template and a desired replica count. Scheduling and health determine ready capacity on your nodes. An optional HorizontalPodAutoscaler adjusts the desired count through the pool's scale subresource." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjQwIiB2aWV3Qm94PSIwIDAgODM2IDI0MCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBLdWJlcm5ldGVzIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgbWFwcyB0byBhIEt1YmVWaXJ0IFZpcnR1YWxNYWNoaW5lUG9vbCB3aXRoIGFuIGVtYmVkZGVkIFZNIHRlbXBsYXRlIGFuZCBhIGRlc2lyZWQgcmVwbGljYSBjb3VudC4gU2NoZWR1bGluZyBhbmQgaGVhbHRoIGRldGVybWluZSByZWFkeSBjYXBhY2l0eSBvbiB5b3VyIG5vZGVzLiBBbiBvcHRpb25hbCBIb3Jpem9udGFsUG9kQXV0b3NjYWxlciBhZGp1c3RzIHRoZSBkZXNpcmVkIGNvdW50IHRocm91Z2ggdGhlIHBvb2wncyBzY2FsZSBzdWJyZXNvdXJjZS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ia3ZhaCIgdmlld0JveD0iMCAwIDEwIDEwIiByZWZYPSI4IiByZWZZPSI1IiBtYXJrZXJXaWR0aD0iNyIgbWFya2VySGVpZ2h0PSI3IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB4PSIxNiIgeT0iMzQiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTkwIiByeD0iMTYiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNCIgeT0iNTYiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjYzljZmQ4Ij5LVUJFUk5FVEVTIENMVVNURVIgwrcgc2VsZi1tYW5hZ2VkPC90ZXh0Pgo8cmVjdCB4PSI0MCIgeT0iNzIiIHdpZHRoPSI0NzAiIGhlaWdodD0iMTQwIiByeD0iMTMiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMjc1IiB5PSI5NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMnB4Ij5WaXJ0dWFsTWFjaGluZVBvb2w8L3RleHQ+Cjx0ZXh0IHg9IjI3NSIgeT0iMTE0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4OyBmb250LXNpemU6OS41cHgiPmRlc2lyZWQgcmVwbGljYXMgPSBOIMK3IHJlYWRpbmVzcyBmb2xsb3dzIHNjaGVkdWxpbmc8L3RleHQ+CjxyZWN0IHg9IjU0IiB5PSIxMjQiIHdpZHRoPSI0NDIiIGhlaWdodD0iMjYiIHJ4PSI4IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDY2NTMiLz4KPHRleHQgeD0iMjc1IiB5PSIxNDEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZTo5LjVweCI+dmlydHVhbE1hY2hpbmVUZW1wbGF0ZSAoZW1iZWRkZWQpIMK3IGRvbWFpbiDCtyBkaXNrcyDCtyBuZXR3b3JrczwvdGV4dD4KPHJlY3QgeD0iNTQiIHk9IjE1OCIgd2lkdGg9IjE0MCIgaGVpZ2h0PSI0MiIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8cmVjdCB4PSIyMDQiIHk9IjE1OCIgd2lkdGg9IjE0MCIgaGVpZ2h0PSI0MiIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8cmVjdCB4PSIzNTQiIHk9IjE1OCIgd2lkdGg9IjE0MCIgaGVpZ2h0PSI0MiIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIvPgo8dGV4dCB4PSIxMjQiIHk9IjE4MyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMHB4Ij5WTSAoVk1JKTwvdGV4dD4KPHRleHQgeD0iMjc0IiB5PSIxODMiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTBweCI+Vk0gKFZNSSk8L3RleHQ+Cjx0ZXh0IHg9IjQyNCIgeT0iMTgzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEwcHgiPlZNIChWTUkpPC90ZXh0Pgo8bGluZSB4MT0iNTc2IiB5MT0iMTQyIiB4Mj0iNTE0IiB5Mj0iMTQyIiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtZGFzaGFycmF5PSI0IDMiIG1hcmtlci1lbmQ9InVybCgja3ZhaCkiLz4KPHRleHQgeD0iNTQ1IiB5PSIxMzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OC41cHgiPi9zY2FsZTwvdGV4dD4KPHJlY3QgeD0iNTgwIiB5PSI5MCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIxMDQiIHJ4PSIxMiIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjNDE0ZTYyIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+Cjx0ZXh0IHg9IjY5MCIgeT0iMTIwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEwLjVweCI+SG9yaXpvbnRhbFBvZEF1dG9zY2FsZXI8L3RleHQ+Cjx0ZXh0IHg9IjY5MCIgeT0iMTQwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5vcHRpb25hbDwvdGV4dD4KPHRleHQgeD0iNjkwIiB5PSIxNjAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPm1pbiDihpQgbWF4IMK3IHBvZCBjcHUgLyBtZW08L3RleHQ+Cjwvc3ZnPg==" alt="On Kubernetes the Auto Scaling group maps to a KubeVirt VirtualMachinePool with an embedded VM template and a desired replica count. Scheduling and health determine ready capacity on your nodes. An optional HorizontalPodAutoscaler adjusts the desired count through the pool's scale subresource." />
</div>

<p className="t9-caption">On KubeVirt the pool runs on the target cluster: the blueprint is embedded in the pool spec, and autoscaling is an optional standard HorizontalPodAutoscaler on the pool's scale subresource.</p>

#### The virtualMachineTemplate

The blueprint is **embedded** in the pool spec as its `virtualMachineTemplate`: a full VirtualMachine spec nested inside the pool, not a separate resource and not a cloud template artifact. The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) compiles into that template: the domain (CPU and memory), disks and volumes, networks, and the boot image. Every replica the pool reconciles is stamped from it.

Each replica is a VM: it gets its disks, its cluster networking, and the read-only metadata surface a workload expects, running under KVM on one of your nodes. A workload that reads its own identity or discovers its topology on startup runs unchanged on every replica.

* **Desired replicas:** `desired_capacity` becomes the pool's requested `replicas` count; readiness follows scheduling and health checks.
* **Self-managed availability:** live-migration and rescheduling on node drain are the target cluster's, not a cloud single-instance SLA.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTg4IiB2aWV3Qm94PSIwIDAgODM2IDE4OCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgY29tcGlsZXMgaW50byB0aGUgcG9vbCdzIGVtYmVkZGVkIHZpcnR1YWxNYWNoaW5lVGVtcGxhdGUsIGEgZnVsbCBWaXJ0dWFsTWFjaGluZSBzcGVjIG5lc3RlZCBpbnNpZGUgdGhlIHBvb2wgc3BlYyBob2xkaW5nIHRoZSBkb21haW4gKENQVSBhbmQgbWVtb3J5KSwgZGlza3MgYW5kIHZvbHVtZXMsIG5ldHdvcmtzLCBhbmQgYm9vdCBpbWFnZS4gRXZlcnkgcmVwbGljYSB0aGUgcG9vbCByZWNvbmNpbGVzIGlzIHN0YW1wZWQgZnJvbSB0aGF0IGVtYmVkZGVkIHRlbXBsYXRlIGFzIGEgZnVsbCBWTS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ia3ZibGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyMCIgeT0iMjQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPkFTRyBJTlNUQU5DRSBERUZJTklUSU9OIOKGkiBFTUJFRERFRCBJTiBUSEUgUE9PTCBTUEVDPC90ZXh0Pgo8cmVjdCB4PSIyMCIgeT0iNDAiIHdpZHRoPSIyMDYiIGhlaWdodD0iMTMyIiByeD0iMTIiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIxMjMiIHk9IjYyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjEwcHgiPkFTRyBpbnN0YW5jZSBkZWZpbml0aW9uPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iNzQiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNlMmU4ZjAiLz4KPHRleHQgeD0iMTIzIiB5PSI5MSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIHRlbXBsYXRlPC90ZXh0Pgo8cmVjdCB4PSIzNCIgeT0iMTA2IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIi8+Cjx0ZXh0IHg9IjEyMyIgeT0iMTIzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzQ3NTU2OTsgZm9udC1zaXplOjkuNXB4Ij5sYXVuY2ggY29uZmlndXJhdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEzOCIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIvPgo8dGV4dCB4PSIxMjMiIHk9IjE1NSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM0NzU1Njk7IGZvbnQtc2l6ZTo5LjVweCI+bWl4ZWQtaW5zdGFuY2VzIHBvbGljeTwvdGV4dD4KPGxpbmUgeDE9IjIyOCIgeTE9IjEwNiIgeDI9IjI3NCIgeTI9IjEwNiIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuOCIgbWFya2VyLWVuZD0idXJsKCNrdmJsYWgpIi8+Cjx0ZXh0IHg9IjI1MSIgeT0iOTgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OC41cHgiPmNvbXBpbGVzPC90ZXh0Pgo8cmVjdCB4PSIyNzgiIHk9IjQwIiB3aWR0aD0iNTM4IiBoZWlnaHQ9IjEzMiIgcng9IjEzIiBmaWxsPSIjZWNmZGY1IiBzdHJva2U9IiMwNTk2NjkiIHN0cm9rZS13aWR0aD0iMS43Ii8+Cjx0ZXh0IHg9IjU0NyIgeT0iNjQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA3MDAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTFweCI+VmlydHVhbE1hY2hpbmVQb29sPC90ZXh0Pgo8cmVjdCB4PSIyOTIiIHk9Ijc4IiB3aWR0aD0iNTEwIiBoZWlnaHQ9IjM0IiByeD0iOCIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjYTdmM2QwIiBzdHJva2Utd2lkdGg9IjEuMyIvPgo8dGV4dCB4PSI1NDciIHk9Ijk5IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDQ3ODU3OyBmb250LXNpemU6MTBweCI+dmlydHVhbE1hY2hpbmVUZW1wbGF0ZSAoZW1iZWRkZWQpIMK3IGRvbWFpbiDCtyBkaXNrcyDCtyBuZXR3b3JrczwvdGV4dD4KPHJlY3QgeD0iMjkyIiB5PSIxMjIiIHdpZHRoPSIxNjAiIGhlaWdodD0iMzgiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iNDY2IiB5PSIxMjIiIHdpZHRoPSIxNjAiIGhlaWdodD0iMzgiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHJlY3QgeD0iNjQwIiB5PSIxMjIiIHdpZHRoPSIxNjIiIGhlaWdodD0iMzgiIHJ4PSI3IiBmaWxsPSIjZmZmIiBzdHJva2U9IiNhN2YzZDAiLz4KPHRleHQgeD0iMzcyIiB5PSIxNDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTBweCI+Vk0gKFZNSSk8L3RleHQ+Cjx0ZXh0IHg9IjU0NiIgeT0iMTQ2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEwcHgiPlZNIChWTUkpPC90ZXh0Pgo8dGV4dCB4PSI3MjEiIHk9IjE0NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMHB4Ij5WTSAoVk1JKTwvdGV4dD4KPC9zdmc+" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) compiles into the pool's embedded virtualMachineTemplate, a full VirtualMachine spec nested inside the pool spec holding the domain (CPU and memory), disks and volumes, networks, and boot image. Every replica the pool reconciles is stamped from that embedded template as a full VM." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTg4IiB2aWV3Qm94PSIwIDAgODM2IDE4OCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUaGUgQVNHJ3MgaW5zdGFuY2UgZGVmaW5pdGlvbiAoZnJvbSBhIGxhdW5jaCB0ZW1wbGF0ZSwgYSBsZWdhY3kgbGF1bmNoIGNvbmZpZ3VyYXRpb24sIG9yIGEgbWl4ZWQtaW5zdGFuY2VzIHBvbGljeSkgY29tcGlsZXMgaW50byB0aGUgcG9vbCdzIGVtYmVkZGVkIHZpcnR1YWxNYWNoaW5lVGVtcGxhdGUsIGEgZnVsbCBWaXJ0dWFsTWFjaGluZSBzcGVjIG5lc3RlZCBpbnNpZGUgdGhlIHBvb2wgc3BlYyBob2xkaW5nIHRoZSBkb21haW4gKENQVSBhbmQgbWVtb3J5KSwgZGlza3MgYW5kIHZvbHVtZXMsIG5ldHdvcmtzLCBhbmQgYm9vdCBpbWFnZS4gRXZlcnkgcmVwbGljYSB0aGUgcG9vbCByZWNvbmNpbGVzIGlzIHN0YW1wZWQgZnJvbSB0aGF0IGVtYmVkZGVkIHRlbXBsYXRlIGFzIGEgZnVsbCBWTS4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ia3ZibGFoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8dGV4dCB4PSIyMCIgeT0iMjQiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjOTBkZWM4Ij5BU0cgSU5TVEFOQ0UgREVGSU5JVElPTiDihpIgRU1CRURERUQgSU4gVEhFIFBPT0wgU1BFQzwvdGV4dD4KPHJlY3QgeD0iMjAiIHk9IjQwIiB3aWR0aD0iMjA2IiBoZWlnaHQ9IjEzMiIgcng9IjEyIiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iMTIzIiB5PSI2MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZToxMHB4Ij5BU0cgaW5zdGFuY2UgZGVmaW5pdGlvbjwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9Ijc0IiB3aWR0aD0iMTc4IiBoZWlnaHQ9IjI2IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2Ii8+Cjx0ZXh0IHg9IjEyMyIgeT0iOTEiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmxhdW5jaCB0ZW1wbGF0ZTwvdGV4dD4KPHJlY3QgeD0iMzQiIHk9IjEwNiIgd2lkdGg9IjE3OCIgaGVpZ2h0PSIyNiIgcng9IjciIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIvPgo8dGV4dCB4PSIxMjMiIHk9IjEyMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5LjVweCI+bGF1bmNoIGNvbmZpZ3VyYXRpb248L3RleHQ+CjxyZWN0IHg9IjM0IiB5PSIxMzgiIHdpZHRoPSIxNzgiIGhlaWdodD0iMjYiIHJ4PSI3IiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiLz4KPHRleHQgeD0iMTIzIiB5PSIxNTUiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPm1peGVkLWluc3RhbmNlcyBwb2xpY3k8L3RleHQ+CjxsaW5lIHgxPSIyMjgiIHkxPSIxMDYiIHgyPSIyNzQiIHkyPSIxMDYiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjgiIG1hcmtlci1lbmQ9InVybCgja3ZibGFoKSIvPgo8dGV4dCB4PSIyNTEiIHk9Ijk4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjguNXB4Ij5jb21waWxlczwvdGV4dD4KPHJlY3QgeD0iMjc4IiB5PSI0MCIgd2lkdGg9IjUzOCIgaGVpZ2h0PSIxMzIiIHJ4PSIxMyIgZmlsbD0iIzFhMzEyNiIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSI1NDciIHk9IjY0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjExcHgiPlZpcnR1YWxNYWNoaW5lUG9vbDwvdGV4dD4KPHJlY3QgeD0iMjkyIiB5PSI3OCIgd2lkdGg9IjUxMCIgaGVpZ2h0PSIzNCIgcng9IjgiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNjY1MyIgc3Ryb2tlLXdpZHRoPSIxLjMiLz4KPHRleHQgeD0iNTQ3IiB5PSI5OSIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzkwZGVjODsgZm9udC1zaXplOjEwcHgiPnZpcnR1YWxNYWNoaW5lVGVtcGxhdGUgKGVtYmVkZGVkKSDCtyBkb21haW4gwrcgZGlza3MgwrcgbmV0d29ya3M8L3RleHQ+CjxyZWN0IHg9IjI5MiIgeT0iMTIyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM4IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjQ2NiIgeT0iMTIyIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjM4IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+CjxyZWN0IHg9IjY0MCIgeT0iMTIyIiB3aWR0aD0iMTYyIiBoZWlnaHQ9IjM4IiByeD0iNyIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q2NjUzIi8+Cjx0ZXh0IHg9IjM3MiIgeT0iMTQ2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEwcHgiPlZNIChWTUkpPC90ZXh0Pgo8dGV4dCB4PSI1NDYiIHk9IjE0NiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMHB4Ij5WTSAoVk1JKTwvdGV4dD4KPHRleHQgeD0iNzIxIiB5PSIxNDYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZWQ4OyBmb250LXNpemU6MTBweCI+Vk0gKFZNSSk8L3RleHQ+Cjwvc3ZnPg==" alt="The ASG's instance definition (from a launch template, a legacy launch configuration, or a mixed-instances policy) compiles into the pool's embedded virtualMachineTemplate, a full VirtualMachine spec nested inside the pool spec holding the domain (CPU and memory), disks and volumes, networks, and boot image. Every replica the pool reconciles is stamped from that embedded template as a full VM." />
</div>

<p className="t9-caption">The blueprint is embedded in the pool spec as its virtualMachineTemplate, a full VirtualMachine spec nested inside the pool, and every replica is stamped from it as a full VM.</p>

#### Autoscaling with an HPA

Unlike the cloud targets, there is **no dedicated autoscaler resource**. The pool exposes a `scale` subresource, and scaling is done (if you want it) with a standard Kubernetes `HorizontalPodAutoscaler` whose `scaleTargetRef` points at the pool. `min_size`/`max_size` become the HPA's `minReplicas`/`maxReplicas`, and a CPU/utilization target maps to the HPA's CPU or memory metric (served by metrics-server on your cluster). Metric definitions and evaluation timing follow Kubernetes. If no HPA is declared, the desired `replicas` count stays fixed; it does not guarantee that every replica is ready.

* **Optional HPA on the scale subresource:** a standard HorizontalPodAutoscaler targets the pool; without one the desired replica count stays fixed.
* **Bounds → HPA min/max.** `min_size`/`max_size` become the HPA's `minReplicas`/`maxReplicas`.
* **Pod-level metrics.** CPU/memory target-tracking is served by metrics-server on your self-managed cluster, not by a cloud autoscaler.

△ Auto Scaling differences

* **Autoscaling is opt-in and self-operated:** scaling requires a declared HorizontalPodAutoscaler and pod-level metrics on the target cluster. Without an HPA the desired count stays fixed. Running replicas still depend on available capacity and health.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBLdWJlVmlydCBhbiBvcHRpb25hbCBIb3Jpem9udGFsUG9kQXV0b3NjYWxlciBhZGp1c3RzIHRoZSBWaXJ0dWFsTWFjaGluZVBvb2wncyBkZXNpcmVkIHJlcGxpY2EgY291bnQgdGhyb3VnaCBpdHMgc2NhbGUgc3VicmVzb3VyY2UuIFRoZSBIUEEgdXNlcyBjb25maWd1cmVkIGJvdW5kcyBhbmQgcG9kIG1ldHJpY3MgZnJvbSB0aGUgdGFyZ2V0IGNsdXN0ZXIuIFdpdGhvdXQgYW4gSFBBIHRoZSBkZXNpcmVkIGNvdW50IHN0YXlzIGZpeGVkOyBzY2hlZHVsaW5nLCBjYXBhY2l0eSBhbmQgaGVhbHRoIGRldGVybWluZSByZWFkeSByZXBsaWNhcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ia3Zhc2FoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB4PSIxNiIgeT0iMzAiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTQwIiByeD0iMTQiIGZpbGw9IiNmOGZhZmMiIHN0cm9rZT0iI2NiZDVlMSIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNCIgeT0iNTIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiM2NDc0OGIiPktVQkVSTkVURVMgQ0xVU1RFUiDCtyBTQ0FMSU5HIElTIE9QVElPTkFMPC90ZXh0Pgo8cmVjdCB4PSI0MCIgeT0iNjYiIHdpZHRoPSIzMDAiIGhlaWdodD0iOTAiIHJ4PSIxMiIgZmlsbD0iI2VjZmRmNSIgc3Ryb2tlPSIjMDU5NjY5IiBzdHJva2Utd2lkdGg9IjEuNyIvPgo8dGV4dCB4PSIxOTAiIHk9IjkyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNzAwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA0Nzg1NzsgZm9udC1zaXplOjExcHgiPlZpcnR1YWxNYWNoaW5lUG9vbDwvdGV4dD4KPHRleHQgeD0iMTkwIiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMC41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwNDc4NTciPmRlc2lyZWQgcmVwbGljYXMgPSBOPC90ZXh0Pgo8dGV4dCB4PSIxOTAiIHk9IjEzMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo5LjVweCI+ZXhwb3NlcyAvc2NhbGUgc3VicmVzb3VyY2U8L3RleHQ+CjxsaW5lIHgxPSI1MTYiIHkxPSIxMTEiIHgyPSIzNDQiIHkyPSIxMTEiIHN0cm9rZT0iIzk0YTNiOCIgc3Ryb2tlLXdpZHRoPSIxLjYiIHN0cm9rZS1kYXNoYXJyYXk9IjQgMyIgbWFya2VyLWVuZD0idXJsKCNrdmFzYWgpIi8+Cjx0ZXh0IHg9IjQzMCIgeT0iMTAzIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjguNXB4Ij4vc2NhbGU8L3RleHQ+CjxyZWN0IHg9IjUyMCIgeT0iNjYiIHdpZHRoPSIyODAiIGhlaWdodD0iOTAiIHJ4PSIxMiIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA0Ii8+Cjx0ZXh0IHg9IjY2MCIgeT0iOTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTAuNXB4Ij5Ib3Jpem9udGFsUG9kQXV0b3NjYWxlcjwvdGV4dD4KPHRleHQgeD0iNjYwIiB5PSIxMDgiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPm9wdGlvbmFsIMK3IG1pblJlcGxpY2FzIOKGlCBtYXhSZXBsaWNhczwvdGV4dD4KPHRleHQgeD0iNjYwIiB5PSIxMjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjNjQ3NDhiOyBmb250LXNpemU6OS41cHgiPnBvZCBjcHUgLyBtZW0gwrcgbWV0cmljcy1zZXJ2ZXI8L3RleHQ+Cjx0ZXh0IHg9IjY2MCIgeT0iMTQ0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjlweCI+bm8gSFBBIOKGkiBmaXhlZCBkZXNpcmVkIGNvdW50PC90ZXh0Pgo8L3N2Zz4=" alt="On KubeVirt an optional HorizontalPodAutoscaler adjusts the VirtualMachinePool's desired replica count through its scale subresource. The HPA uses configured bounds and pod metrics from the target cluster. Without an HPA the desired count stays fixed; scheduling, capacity and health determine ready replicas." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMTc2IiB2aWV3Qm94PSIwIDAgODM2IDE3NiIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJPbiBLdWJlVmlydCBhbiBvcHRpb25hbCBIb3Jpem9udGFsUG9kQXV0b3NjYWxlciBhZGp1c3RzIHRoZSBWaXJ0dWFsTWFjaGluZVBvb2wncyBkZXNpcmVkIHJlcGxpY2EgY291bnQgdGhyb3VnaCBpdHMgc2NhbGUgc3VicmVzb3VyY2UuIFRoZSBIUEEgdXNlcyBjb25maWd1cmVkIGJvdW5kcyBhbmQgcG9kIG1ldHJpY3MgZnJvbSB0aGUgdGFyZ2V0IGNsdXN0ZXIuIFdpdGhvdXQgYW4gSFBBIHRoZSBkZXNpcmVkIGNvdW50IHN0YXlzIGZpeGVkOyBzY2hlZHVsaW5nLCBjYXBhY2l0eSBhbmQgaGVhbHRoIGRldGVybWluZSByZWFkeSByZXBsaWNhcy4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0ia3Zhc2FoIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI2LjUiIG1hcmtlckhlaWdodD0iNi41IiBvcmllbnQ9ImF1dG8tc3RhcnQtcmV2ZXJzZSI+PHBhdGggZD0iTTAsMCBMMTAsNSBMMCwxMCB6IiBmaWxsPSIjOTRhM2I4Ii8+PC9tYXJrZXI+PC9kZWZzPgo8cmVjdCB4PSIxNiIgeT0iMzAiIHdpZHRoPSI4MDQiIGhlaWdodD0iMTQwIiByeD0iMTQiIGZpbGw9IiMxYTI2MzEiIHN0cm9rZT0iIzNkNGY2NiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNSIvPgo8dGV4dCB4PSIzNCIgeT0iNTIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiAjYzljZmQ4Ij5LVUJFUk5FVEVTIENMVVNURVIgwrcgU0NBTElORyBJUyBPUFRJT05BTDwvdGV4dD4KPHJlY3QgeD0iNDAiIHk9IjY2IiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjkwIiByeD0iMTIiIGZpbGw9IiMxYTMxMjYiIHN0cm9rZT0iIzA1OTY2OSIgc3Ryb2tlLXdpZHRoPSIxLjciLz4KPHRleHQgeD0iMTkwIiB5PSI5MiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDcwMCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzg7IGZvbnQtc2l6ZToxMXB4Ij5WaXJ0dWFsTWFjaGluZVBvb2w8L3RleHQ+Cjx0ZXh0IHg9IjE5MCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTAuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM4Ij5kZXNpcmVkIHJlcGxpY2FzID0gTjwvdGV4dD4KPHRleHQgeD0iMTkwIiB5PSIxMzIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OS41cHgiPmV4cG9zZXMgL3NjYWxlIHN1YnJlc291cmNlPC90ZXh0Pgo8bGluZSB4MT0iNTE2IiB5MT0iMTExIiB4Mj0iMzQ0IiB5Mj0iMTExIiBzdHJva2U9IiM0MTRlNjIiIHN0cm9rZS13aWR0aD0iMS42IiBzdHJva2UtZGFzaGFycmF5PSI0IDMiIG1hcmtlci1lbmQ9InVybCgja3Zhc2FoKSIvPgo8dGV4dCB4PSI0MzAiIHk9IjEwMyIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo4LjVweCI+L3NjYWxlPC90ZXh0Pgo8cmVjdCB4PSI1MjAiIHk9IjY2IiB3aWR0aD0iMjgwIiBoZWlnaHQ9IjkwIiByeD0iMTIiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIxLjQiIHN0cm9rZS1kYXNoYXJyYXk9IjUgNCIvPgo8dGV4dCB4PSI2NjAiIHk9IjkwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEwLjVweCI+SG9yaXpvbnRhbFBvZEF1dG9zY2FsZXI8L3RleHQ+Cjx0ZXh0IHg9IjY2MCIgeT0iMTA4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5vcHRpb25hbCDCtyBtaW5SZXBsaWNhcyDihpQgbWF4UmVwbGljYXM8L3RleHQ+Cjx0ZXh0IHg9IjY2MCIgeT0iMTI2IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjkuNXB4Ij5wb2QgY3B1IC8gbWVtIMK3IG1ldHJpY3Mtc2VydmVyPC90ZXh0Pgo8dGV4dCB4PSI2NjAiIHk9IjE0NCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDg7IGZvbnQtc2l6ZTo5cHgiPm5vIEhQQSDihpIgZml4ZWQgZGVzaXJlZCBjb3VudDwvdGV4dD4KPC9zdmc+" alt="On KubeVirt an optional HorizontalPodAutoscaler adjusts the VirtualMachinePool's desired replica count through its scale subresource. The HPA uses configured bounds and pod metrics from the target cluster. Without an HPA the desired count stays fixed; scheduling, capacity and health determine ready replicas." />
</div>

<p className="t9-caption">An optional HorizontalPodAutoscaler adjusts the pool's desired count through its scale subresource. Without one, that desired count stays fixed; ready capacity still depends on scheduling and health.</p>

#### Placement, health, and self-healing

Placement is the Kubernetes scheduler's job, not a cloud fleet's. The pool's VMs are scheduled onto your nodes, and across-zone or across-node spread comes from the scheduling rules you set: pod anti-affinity or topology-spread constraints against your nodes' zone or hostname labels. There is no cloud availability zone unless your nodes span zones and are labeled for it. Each selected zone also needs enough schedulable capacity for the requested VMs.

The pool **reconciles toward its desired replica count**: a VM that is deleted or whose node is lost needs replacement capacity. The number of running or ready VMs can lag behind `replicas`. Liveness checks identify failed guests for recovery; readiness checks remove unready guests from service. All of this runs on the cluster you operate, so the resilience is the target cluster's, not a cloud SLA.

* **Scheduler-driven spread:** across-zone/node spread comes from pod anti-affinity or topology-spread constraints against your nodes' labels, not from a cloud fleet's zonal distribution.
* **Desired capacity is reconciled:** replacing a deleted or node-lost VM requires schedulable capacity; check running and ready counts separately.
* **Health via probes:** liveness checks identify failed guests for recovery; readiness checks remove unready guests from service.

△ Auto Scaling differences

* **Spread and availability are the target cluster's:** multi-zone resilience exists only if your nodes span zones and your scheduling rules place replicas across them; there is no cloud AZ guarantee, and node-drain rescheduling is the cluster's behavior, not a cloud SLA.

#### Updates, lifecycle hooks, and warm pools

VirtualMachinePool does not provide the following Auto Scaling group features.

* **No managed rolling replacement:** the pool is not a Deployment; a template change applies to reconciled replicas but there is no built-in batched rolling-upgrade policy like the ASG's instance refresh.
* **Lifecycle hooks: no analog:** the ASG's launch/terminate lifecycle hooks have no VirtualMachinePool equivalent.
* **Warm pools: no analog:** there is no pre-initialized, stopped-VM pool.
* **Mixed-instances / Spot: not applicable:** there is no cloud instance market; a replica's size is the template's, on your own nodes.

△ Auto Scaling differences

* **ASG-proprietary orchestration is not reproduced:** instance refresh, lifecycle hooks, warm pools, and mixed-instances/Spot assume a cloud fleet control plane the pool does not have; the fleet's size and optional HPA scaling are preserved, that orchestration is not.

#### Limitations

The pool, its embedded template, and optional HPA scaling map directly on the cluster you operate. Two considerations frame how the running fleet behaves after cutover.

△ Auto Scaling differences

* **Declare scaling changes in infrastructure code:** runtime `SetDesiredCapacity` and scaling-policy mutations are outside this mapping. Unsupported infrastructure settings can be reported during the build; unsupported SDK requests return an error when called.
* **Sizing and operation are yours.** Tensor9 provisions the pool and, if declared, the HPA at build time; the actual scaling decisions run against metrics-server on the cluster you operate, so both the sizing cadence and the cluster's health are your responsibility rather than a cloud platform's.

#### Other considerations

Plan persistent storage, instance costs, and updates before deployment.

* **Instances are replaced, not repaired:** the pool recreates an unhealthy VM, so surviving state lives on PersistentVolumes or external storage, not the VM's ephemeral disk.
* **Scaling and operation run on the cluster you own:** the build provisions the pool and, if declared, an HPA; scaling decisions run against metrics-server on your cluster, so both the cadence and the cluster's health are yours to operate.
* **The pool consumes cluster capacity:** the VM pool consumes your cluster's own compute, so the fleet's size is bounded by the capacity you run rather than a cloud autoscaling budget.
* **Plan replacement of existing VMs.** The pool applies virtualMachineTemplate changes when it creates replicas; it has no built-in batched rolling-upgrade policy.

#### Fleet management scope

The fleet runs as a KubeVirt VirtualMachinePool with the horizontal pod autoscaler's sizing controls. See [fleet lifecycle and runtime management](/service-adapters/aws/compute-containers/ec2-auto-scaling#fleet-lifecycle-and-runtime-management) for logical group discovery/deletion and higher-level ownership. Desired-capacity and policy changes use infrastructure-as-code or the owning service; native readiness, placement and replacement follow this target's controls above.

[Service Catalog](/service-adapters/catalog).
