> ## Content Index
> Fetch the complete content index at: https://www.azurebrasil.cloud/llms.txt
> Use this file to discover other available public pages before exploring further.

# Gerenciando imagens de máquinas com Azure Compute Gallery: consistência e automação de VMs
- URL: https://www.azurebrasil.cloud/blog/gerenciando-imagens-de-maquinas-com-azure-compute-gallery-consistencia-e-automacao-de-vms/
- Published: 2025-06-30T15:27:34.000Z
- Updated: 2025-06-30T17:22:10.000Z
- Author: Ricardo Martins

## Introdução

Manter consistência na criação de máquinas virtuais (VMs) e clusters do Azure Kubernetes Service (AKS) é um desafio comum em ambientes corporativos. O **Azure Compute Gallery (ACG)** é a solução recomendada pela Microsoft para padronizar, distribuir e versionar imagens de sistema operacional e aplicações em escala.

Neste artigo, você vai aprender como usar o ACG para padronizar ambientes de máquinas virtuais, como replicar imagens entre regiões e como aplicar práticas de governança com infraestrutura como código.

## O que é Azure Compute Gallery?

O **Azure Compute Gallery** (antigo Shared Image Gallery) é um serviço gerenciado que permite:

- Versionamento e controle de mudanças
- Compartilhamento com múltiplas subscriptions e tenants
- Replicação regional de imagens
- Uso consistente em VMs e VM Scale Sets

## Estrutura do ACG

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2025/06/Editor-_-Mermaid-Chart-2025-06-30-135149.png)

- **Image definition**: o “nome” da imagem (ex: `ubuntu-dev`)
- **Image version**: versões específicas com data e região
- **Target region**: para replicação de imagem

## Exemplo prático: criando uma imagem e usando no deploy  

### 1\. Criar uma imagem personalizada

Use o Azure CLI para capturar uma imagem de uma VM:

```bash
az vm deallocate --resource-group rg --name vm-base
az vm generalize --resource-group rg --name vm-base

az image create \
  --resource-group rg \
  --name image-base \
  --source vm-base
```

### 2\. Criar a Azure Compute Gallery

```bash
az sig create --resource-group rg --gallery-name devGallery
```

### 3\. Criar uma definição de imagem

```bash
az sig image-definition create \
  --resource-group rg \
  --gallery-name devGallery \
  --gallery-image-definition ubuntu-dev \
  --publisher mycompany \
  --offer devlinux \
  --sku 20_04-lts \
  --os-type Linux
```

### 4\. Criar uma versão da imagem

```bash
az sig image-version create \
  --resource-group rg \
  --gallery-name devGallery \
  --gallery-image-definition ubuntu-dev \
  --gallery-image-version 1.0.0 \
  --target-regions eastus westeurope \
  --managed-image image-base
```

### Usando em uma VM

```bash
az vm create \
  --resource-group rg \
  --name vm-from-gallery \
  --image "/subscriptions/.../resourceGroups/rg/providers/Microsoft.Compute/galleries/devGallery/images/ubuntu-dev/versions/1.0.0" \
  --admin-username azureuser \
  --generate-ssh-keys
```

### Sobre imagens personalizadas em AKS

Atualmente, **o Azure Kubernetes Service (AKS) não permite o uso de imagens personalizadas de sistema operacional** (BYO image) nos node pools.

Em vez disso, use as abordagens suportadas abaixo para customização:

### 1\. Custom Node Configuration

Permite configurar parâmetros como `swap`, `kubelet`, `max pods`, entre outros.

🔗 [Custom node configuration – AKS](https://learn.microsoft.com/en-us/azure/aks/custom-node-configuration?ref=azurebrasil.cloud)

### 2\. DaemonSets para bootstrap

Use DaemonSets para instalar agentes, certificados ou configurações automaticamente em todos os nós.

```yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: install-monitor-agent
spec:
  selector:
    matchLabels:
      name: install-monitor-agent
  template:
    metadata:
      labels:
        name: install-monitor-agent
    spec:
      containers:
      - name: setup
        image: myregistry/init-agent:latest
        volumeMounts:
        - mountPath: /host/etc
          name: etc-volume
        securityContext:
          privileged: true
      volumes:
      - name: etc-volume
        hostPath:
          path: /etc

```

### Boas práticas com Azure Compute Gallery

| Prática                          | Benefício                        |
| -------------------------------- | -------------------------------- |
| Versões bem definidas e nomeadas | Rastreabilidade e rollback fácil |
| Replicação geográfica de imagens | Deploy rápido e resiliente       |
| Integração com pipelines DevOps  | Automação de imagens golden      |
| Imagens validadas e endurecidas  | Segurança e conformidade         |

### Monitoramento e controle

- Use **Azure Policy** para forçar uso de imagens da galeria
- Use **Azure Monitor** e **Activity Logs** para rastrear uso e alterações

### Referências oficiais

- [Azure Compute Gallery overview](https://learn.microsoft.com/en-us/azure/virtual-machines/shared-image-galleries?ref=azurebrasil.cloud)
- [Create and use shared images](https://learn.microsoft.com/en-us/azure/virtual-machines/linux/shared-images?ref=azurebrasil.cloud)
- [Custom node configuration in AKS](https://learn.microsoft.com/en-us/azure/aks/custom-node-configuration?ref=azurebrasil.cloud)
- [Limitations of custom images in AKS](https://github.com/Azure/AKS/issues/3751?ref=azurebrasil.cloud)

---

## Conclusão

O Azure Compute Gallery é uma ferramenta poderosa para padronizar e escalar ambientes em nuvem com segurança e eficiência.

Usar imagens versionadas, validadas e replicadas reduz erros operacionais, acelera o provisionamento e garante consistência em todo o ciclo de vida da infraestrutura.