Acessar recursos globais regionalmente para alta disponibilidade

Ao usar scripts de escalonamento automático ou serviços de ambiente de execução no Compute Engine, é possível automatizar pipelines de integração e implantação contínuas (CI/CD). No entanto, como esses recursos dependem muito das definições de recursos globais ao consultar endpoints de API globais, essa abordagem pode introduzir um único ponto de falha na arquitetura multirregional.

Para reduzir esse risco, configure seus serviços para acessar visualizações regionais de recursos globais. Ao enviar solicitações GET e LIST para endpoints somente leitura regionalizados na região exata em que as cargas de trabalho de computação são executadas, seus serviços isolam o consumo de API de possíveis interrupções no plano de controle global ou em outras regiões. Para mais informações sobre endpoints somente leitura regionalizados e práticas recomendadas de resiliência, consulte Usar visualizações regionais para leituras resilientes do plano de controle.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma sua identidade para acesso a Google Cloud serviços e APIs do. Para executar código ou amostras de um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com uma destas opções:

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o Google Cloud console para acessar Google Cloud serviços e APIs, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  • Defina uma região e uma zona padrão.
  • REST

    Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Funções exigidas

Para ter as permissões necessárias para acessar recursos globais regionalmente, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto ou nas imagens do SO. Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.

Esse papel predefinido contém as permissões necessárias para acessar recursos globais regionalmente. Para acessar as permissões exatas que são necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As permissões a seguir são necessárias para acessar recursos globais regionalmente:

  • Para receber visualizações regionais de um projeto: compute.projects.get no projeto
  • Para receber visualizações regionais de imagens do SO: compute.images.get e compute.images.list no projeto ou nas imagens do SO

Essas permissões também podem ser concedidas com papéis personalizados ou outros papéis predefinidos.

Recurso do projeto

É possível receber visualizações regionais do recurso de projeto global usando o endpoint somente leitura projectViews. Ao consultar o endpoint projectViews, o Compute Engine retorna o objeto de recurso compute.Project global padrão. O recurso em si permanece global.

Receber uma visualização regional de um recurso de projeto

É possível receber uma visualização regional do projeto global usando a Google Cloud CLI ou a API REST.

gcloud

Para descrever seu projeto global pelo plano de controle de uma região específica, execute o gcloud compute project-views describe comando:

gcloud compute project-views describe \
    --region=REGION \
    --project=PROJECT_ID

Substitua:

  • REGION: a Google Cloud região da solicitação de API, por exemplo, us-central1.
  • PROJECT_ID: o ID do projeto.

REST

Para descrever seu projeto global pelo plano de controle de uma região específica, envie uma GET solicitação para o projectViews método.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/projectViews"

Substitua:

  • PROJECT_ID: o ID do projeto.
  • REGION: a Google Cloud região da solicitação de API , por exemplo, us-central1.

A API retorna a representação de recurso compute.Project padrão diretamente.

{
  "kind": "compute#project",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-project12345",
  "commonInstanceMetadata": {
    "items": [
      {
        "key": "example-key",
        "value": "example-value"
      }
    ]
  },
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345",
  "defaultServiceAccount": "SERVICE_ACCOUNT_EMAIL"
}

Recurso de imagem do SO

É possível receber visualizações regionais do recurso de imagem do SO global usando o endpoint somente leitura imageViews. Ao consultar o endpoint imageViews, o Compute Engine retorna o objeto de recurso compute.Image global padrão. O recurso em si permanece global.

Receber uma lista regional de recursos de imagem do SO

É possível listar todas as imagens do SO globais disponíveis para seu projeto por um endpoint regional específico usando a CLI gcloud ou a API REST.

gcloud

Para listar imagens do SO globais usando um endpoint regional, execute o gcloud compute image-views list comando:

gcloud compute image-views list \
    --region=REGION \
    --project=PROJECT_ID

Substitua:

  • REGION: a Google Cloud região da solicitação de API , por exemplo, us-central1.
  • PROJECT_ID: o ID do projeto.

REST

Para listar imagens do SO globais usando um endpoint regional, envie uma solicitação GET para o método imageViews:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews"

Substitua:

  • PROJECT_ID: o ID do projeto.
  • REGION: a Google Cloud região da solicitação de API , por exemplo, us-central1.

Receber uma visualização regional de um recurso de imagem do SO

É possível recuperar informações de uma imagem do SO global específica por um endpoint regional usando a CLI gcloud ou a API REST.

gcloud

Para recuperar detalhes de uma imagem do SO global usando um endpoint regional, execute o gcloud compute image-views describe comando:

gcloud compute image-views describe IMAGE_NAME \
    --region=REGION \
    --project=PROJECT_ID

Substitua:

  • IMAGE_NAME: o nome do recurso de imagem do SO global.
  • REGION: a Google Cloud região da solicitação de API , por exemplo, us-central1.
  • PROJECT_ID: o ID do projeto.

REST

Para recuperar detalhes de uma imagem do SO global usando um endpoint regional, envie uma GET solicitação para o específico imageViews método:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews/IMAGE_NAME"

Substitua:

  • PROJECT_ID: o ID do projeto.
  • REGION: a Google Cloud região da solicitação de API, por exemplo, us-central1.
  • IMAGE_NAME: o nome do recurso de imagem do SO global.

A API retorna a representação de recurso compute.Image padrão diretamente.

{
  "kind": "compute#image",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-image12345",
  "sourceDisk": "https://www.googleapis.com/compute/v1/projects/my-project12345/zones/us-central1-a/disks/my-disk12345",
  "sourceDiskId": "1234567890123456789",
  "sourceType": "RAW",
  "status": "READY",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345/global/images/my-image12345"
}

A seguir