Sobre o agente convidado

Este documento oferece uma visão geral da arquitetura do agente convidado. O agente convidado é um componente essencial do ambiente de convidado. O ambiente de convidado contém scripts, daemons e binários que as instâncias precisam para serem executadas no Compute Engine. Para mais informações, consulte Ambiente de convidado.

O agente convidado configura serviços e define configurações mínimas para recursos como execução de script de snapshot, failover do Windows, login do SO e autenticação SSH baseada em metadados. Para mais informações sobre as funções principais do agente convidado, consulte Funcionalidade do agente convidado.

Arquitetura do agente convidado

A partir da versão 20250901.00, a arquitetura do agente convidado foi atualizada de um design monolítico para um sistema moderno baseado em plug-ins. Essa evolução melhora a flexibilidade, a confiabilidade e a capacidade de extensão.

  • Arquitetura monolítica: os agentes convidados anteriores à versão 20250901.00 apresentam um processo único e unificado centrado na descrição das instâncias do servidor de metadados. O servidor de metadados é um servidor HTTP por instância que é executado ao lado de cada instância do Compute Engine. Para mais informações sobre o servidor de metadados, consulte Metadados da VM.

    O agente convidado faz uma pesquisa longa no servidor de metadados e age com base nas mudanças de estado. Com essa arquitetura, o estado do agente é compartilhado em todas as tarefas, como SSH e configuração de rede. Essa abordagem monolítica não tinha isolamento de interface e componentes. As mudanças ou introduções de recursos em uma área do agente afetam todo o sistema simultaneamente. Esse padrão dificulta a adição de recursos e a cobertura de testes.

  • Arquitetura baseada em plug-ins: a partir da versão 20250901.00, o agente convidado é dividido em plug-ins distintos e independentes gerenciados por um gerenciador central. Cada plug-in pode interagir com o servidor de metadados e, conforme orientado por um gerenciador central, faz mudanças conforme necessário. Essa abordagem modular garante que uma falha em um plug-in não afete o agente principal ou outros plug-ins.

A arquitetura baseada em plug-ins

Essa arquitetura é criada em torno de um gerenciador central que controla vários plug-ins, separando as funcionalidades principais dos plug-ins opcionais específicos do serviço, chamados de extensões.

Principais componentes

O diagrama a seguir mostra os principais componentes do agente convidado e as interações deles.

Um gerente central de agentes convidados controla um plug-in principal e extensões.
    O gerenciador de agentes convidados se comunica com o Gerenciador de extensões de VM no back-end do Google para gerenciar as extensões.
Figura 1. Arquitetura do agente convidado
  • Plug-in principal: esse plug-in encapsula a funcionalidade do agente convidado original. Ele realiza as tarefas essenciais de que a instância precisa para ser executada em Google Cloud. Isso inclui tarefas como as seguintes:

    • Configuração de rede: configura a interface de rede principal para ativar a comunicação.
    • Acesso SSH: gerencia as chaves SSH do usuário para permitir conexões seguras à instância.
    • Acesso a metadados: fornece um caminho para a instância acessar metadados de instância e de projeto.

    Não é possível desativar o plug-in principal.

    Para mais informações sobre as funções principais do agente convidado, consulte Funcionalidade do agente convidado.

  • Extensões (plug-ins opcionais): é possível provisionar essas extensões para integrar a outros Google Cloud serviços e realizar tarefas como:

    Para mais informações sobre como instalar e gerenciar essas extensões, consulte Gerenciador de extensões de VM.

  • Gerenciador de extensões de VM: esse serviço Google Cloud gerenciado é executado na infraestrutura de back-end do Google. O Gerenciador de extensões de VM gerencia o ciclo de vida das extensões, incluindo instalação, atualizações e configuração, comunicando-se com o gerenciador de agentes convidados na instância.

  • Gerenciador de agentes convidados: esse processo central inicia, interrompe e monitora o status de todos os plug-ins. O gerenciador de agentes convidados facilita a comunicação entre o plug-in principal e o Gerenciador de extensões de VM. O gerenciamento do ciclo de vida das extensões inclui o seguinte:

    • Instalação e atualizações: o gerenciador de agentes convidados instala, inicia, interrompe e configura extensões com base nas instruções do Gerenciador de extensões de VM.
    • Monitoramento de integridade: o gerenciador de agentes convidados monitora a integridade e o status das extensões, incluindo o uso de CPU e memória, e informa essas informações ao Gerenciador de extensões de VM.
    • Gerenciamento de políticas: use as APIs do Compute Engine para criar políticas que controlam a instalação e o controle de versões de extensões.

Benefícios

A arquitetura baseada em plug-ins oferece várias vantagens em relação ao design monolítico. Esses benefícios incluem:

  • Isolamento de plug-ins: cada plug-in é executado em um processo separado. Portanto, uma falha em um deles não afeta o agente principal ou outros plug-ins.
  • Proteção de recursos: o agente convidado usa recursos no nível do SO para aplicar limites de recursos aos plug-ins, impedindo que um único plug-in consuma CPU ou memória excessivas.
  • Recuperação automática de falhas: o sistema se recupera automaticamente de uma falha de plug-in interrompendo e reiniciando o plug-in.
  • Ativação seletiva: é possível desativar extensões que não são necessárias, o que permite proteger ou otimizar a instância.
  • Redução da sobrecarga de extensões: o gerenciador de agentes convidados processa automaticamente a instalação e as atualizações de extensões, reduzindo o esforço manual necessário para mantê-las atualizadas.

Endpoints de API

O agente convidado se comunica com várias APIs e endpoints do Google para funcionar. Se você tiver regras de firewall específicas ou usar o VPC Service Controls e depender da funcionalidade do agente que o usa, verifique se as instâncias podem acessar os endpoints correspondentes:

  • Servidor de metadados (metadata.google.internal): o agente convidado depende do servidor de metadados para recuperar metadados de instância e de projeto, como chaves SSH e configurações de rede, para configurar a instância. Para mais informações, consulte Funcionalidade principal e Endpoints do servidor de metadados.
  • Cloud Storage (storage.googleapis.com): o agente convidado pode fazer o download de scripts de metadados do Cloud Storage se os metadados da instância fornecerem um URL que aponta para um bucket do Cloud Storage. Para mais informações, consulte Execução de script de metadados e Endpoints de solicitação na documentação do Cloud Storage.
  • Gerenciador de extensões de VM (*.agentcommunication.googleapis.com): o gerenciador de agentes convidados se comunica com o Serviço de comunicação do agente (ACS, na sigla em inglês) para gerenciar o ciclo de vida das extensões e informar métricas. Para mais informações, consulte Gerenciador de extensões de VM.
  • Cloud Logging (logging.googleapis.com): por padrão, o agente convidado tem o Cloud Logging ativado para registros. Para mais informações, consulte Visão geral da API Cloud Logging.

Para uma lista completa de endpoints regionais, consulte Endpoints de serviço regionais.

Local dos binários do agente convidado

As tabelas a seguir listam os caminhos de arquivo para os diferentes binários do agente convidado em instâncias do Linux e do Windows, dependendo da arquitetura.

Binários de agente baseados em plug-ins

Esta tabela lista os caminhos de arquivo para os binários do agente convidado baseados em plug-ins em instâncias do Linux e do Windows:

Componente Caminho no Linux Caminho no Windows
Gerenciador de agentes convidados /usr/bin/google_guest_agent_manager C:\ProgramData\Google\Compute Engine\agent\GCEWindowsAgentManager.exe
Binário do plug-in principal /usr/lib/google/guest_agent/core_plugin C:\Program Files\Google\Compute Engine\agent\CorePlugin.exe
Executor do script de metadados /usr/bin/gce_metadata_script_runner C:\Program Files\Google\Compute Engine\agent\GCEMetadataScriptRunner.exe

Binários de agente monolíticos

A tabela a seguir lista os caminhos de arquivo para os binários do agente convidado monolíticos em instâncias do Linux e do Windows:

Componente Caminho no Linux Caminho no Windows
Agente convidado /usr/bin/google_guest_agent C:\Program Files\Google\Compute Engine\agent\GCEWindowsAgent.exe
Executor do script de metadados /usr/bin/google_metadata_script_runner C:\Program Files\Google\Compute Engine\metadata_scripts\GCEMetadataScripts.exe
Chaves autorizadas Não relevante C:\Program Files\Google\Compute Engine\agent\GCEAuthorizedKeys.exe

Serviços de daemon do agente convidado

As tabelas a seguir listam os serviços de daemon do agente convidado instalados em instâncias do Linux e do Windows. Esses serviços são executados como unidades systemd no Linux e como serviços do Windows no Windows.

Componente Nome do serviço no Linux Nome do serviço no Windows Status
Gerenciador de agentes convidados google-guest-agent-manager.service GCEAgentManager Ativado em todos os modos, incluindo compatibilidade com versões anteriores.
Agente convidado google-guest-agent.service GCEAgent Desativado por padrão.
Ativado apenas em modo de compatibilidade com versões anteriores.
Gerenciador de compatibilidade do agente convidado google-guest-compat-manager.service GCEWindowsCompatManager Ativado em todos os modos, incluindo compatibilidade com versões anteriores.
Atualizador de certificado de carga de trabalho gce-workload-cert-refresh.timer N/A Desativado por padrão.
Ativado apenas no modo de compatibilidade com versões anteriores.
Scripts de inicialização google-startup-scripts.service GCEStartup
Scripts de encerramento google-shutdown-scripts.service Shutdown

Compatibilidade com versões anteriores

Para garantir uma transição tranquila do agente convidado monolítico anterior para o sistema baseado em plug-ins, o pacote do agente convidado inclui vários componentes projetados para compatibilidade com versões anteriores. Esses componentes não fazem parte da arquitetura baseada em plug-ins e são ativados apenas se você escolher manualmente reverter para o agente monolítico definindo o atributo de metadados enable-guest-agent-core-plugin como false.

Os componentes que oferecem suporte a essa compatibilidade incluem:

  • Gerenciador de compatibilidade do agente convidado: esse pacote gerencia a alternância entre o agente baseado em plug-ins e o agente monolítico.
  • Gerenciador de compatibilidade do executor de script de metadados: esse pacote garante que o executor de script correto seja usado, dependendo se o agente monolítico ou baseado em plug-ins está ativo.
  • Gerenciador de compatibilidade de chaves autorizadas (somente Windows): esse pacote processa chaves SSH, garantindo que as chaves corretas sejam usadas para o agente antigo ou novo.
Componente Caminho no Linux Caminho no Windows
Gerenciador de compatibilidade do agente convidado /usr/bin/google_guest_compat_manager C:\Program Files\Google\Compute Engine\agent\GCEWindowsCompatManager.exe
Gerenciador de compatibilidade do executor de script de metadados /usr/bin/metadata_script_runner_compat C:\Program Files\Google\Compute Engine\metadata_scripts\GCECompatMetadataScripts.exe
Gerenciador de compatibilidade de chaves autorizadas Não relevante C:\Program Files\Google\Compute Engine\agent\GCEWindowsAuthorizedKeysCompat.exe

A seguir