VPC Service Controls para Cloud Service Mesh (gerenciado)

Para mais informações, consulte Visão geral do Cloud Service Mesh.

O Cloud Service Mesh (gerenciado) é compatível com o VPC Service Controls como um recurso de disponibilidade geral (GA) para novos planos de controle.

Para verificar se o plano de controle é compatível com o VPC Service Controls GA, verifique o estado do recurso de malha da sua associação para a condição VPCSC_GA_SUPPORTED.

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

A saída é semelhante a:

(...)
membershipStates:
  projects/FLEET_PROJECT_NUMBER/locations/MEMBERSHIP_LOCATION/memberships/MEMBERSHIP_ID:
    servicemesh:
      conditions:
      - code: VPCSC_GA_SUPPORTED
        details: This control plane supports VPC Service Controls GA.
        documentationLink: http://cloud.google.com/service-mesh/docs/managed/VPC Service Controls
        severity: INFO
(...)

Se você já tem um plano de controle que não informa as VPCSC_GA_SUPPORTED e quiser depender do VPC Service Controls, entre em contato com o suporte.

Antes de começar

A política da organização e o perímetro de serviço do VPC Service Controls são configurados no nível da organização. Verifique se você recebeu os papéis adequados para administrar o VPC Service Controls.

Configurar o perímetro de serviço do VPC Service Controls

Crie ou atualize o perímetro de serviço:

  1. Adicione os projetos de cluster e de frota ao perímetro de serviço. Não é possível ter uma malha de serviço distribuída em vários perímetros do VPC Service Controls.

  2. Adicione serviços restritos ao perímetro de serviço.

    Você precisa adicionar serviços específicos às listas de serviços permitidos e restritos no o perímetro de serviço, para que o cluster do Cloud Service Mesh possa acessá-los. O acesso aos serviços também é restrito na rede de nuvem privada virtual (VPC) do cluster.

    Não adicionar esses serviços pode fazer com que a instalação do Cloud Service Mesh falhe ou não funcione corretamente. Por exemplo, se você não adicionar a API de configuração de malha ao perímetro de serviço, a instalação falhará e as cargas de trabalho não receberão a configuração do Envoy do plano de controle gerenciado.

    Console

    1. Siga as etapas em Como atualizar um perímetro de serviço para editar o perímetro.
    2. Clique na página Editar perímetro de serviço da VPC.
    3. Em Serviços restritos, Serviços a serem protegidos, clique em Adicionar serviços.
    4. Na caixa de diálogo Especificar serviços a serem restringidos, clique em Filtrar serviços e digite API de configuração de malha.
    5. Marque a caixa de seleção do serviço.
    6. Clique em Adicionar API Mesh Configuration.
    7. Repita as etapas de c a f para adicionar:
      • API Cloud Service Mesh Certificate Authority
      • API GKE Hub
      • API Cloud IAM
      • API Cloud Monitoring
      • Cloud Trace API
      • API Cloud Monitoring
      • API Google Cloud Resource Manager
      • API Google Compute Engine
      • API Google Container Registry
      • API Artifact Registry
      • API Google Cloud Storage
      • API Cloud Logging
      • API Security Token Service
    8. Clique em Salvar.

    gcloud

    Para atualizar a lista de serviços restritos, use o comando update e especifique os serviços a serem adicionados como uma lista delimitada por vírgulas:

    gcloud access-context-manager perimeters update PERIMETER_NAME \
      --add-restricted-services=meshconfig.googleapis.com,meshca.googleapis.com,gkehub.googleapis.com,iam.googleapis.com,monitoring.googleapis.com,cloudtrace.googleapis.com,monitoring.googleapis.com,cloudresourcemanager.googleapis.com,compute.googleapis.com,containerregistry.googleapis.com,artifactregistry.googleapis.com,storage.googleapis.com,logging.googleapis.com,sts.googleapis.com \
      --policy=POLICY_NAME

    Em que:

    • PERIMETER_NAME é o nome do perímetro de serviço que você quer atualizar.

    • POLICY_NAME é o nome numérico da política de acesso da sua organização. Por exemplo, 330193482019.

  3. Clique em Serviços acessíveis da VPC e defina como "Todos os serviços restritos" para que os serviços restritos na etapa acima continuem acessíveis no perímetro do VPC Service Controls.

  4. A menos que você esteja instalando o Cloud Service Mesh de uma rede no perímetro, adicione um regra de entrada para permitir que a identidade que executa o comando asmcli acesse o perímetro de serviço.

    Para mais informações, consulte Como atualizar um perímetro de serviço.

Instalar o Cloud Service Mesh gerenciado em um perímetro do VPC Service Controls

Siga as etapas em Configurar o Cloud Service Mesh gerenciado página. Depois, verificar se o plano de controle foi provisionado com sucesso e não há erros relacionados ao VPC Service Controls.

Solução de problemas

Não é possível criar o cluster com a imagem mais recente do GKE 1.22

Há um problema conhecido que impede a criação de um cluster com a imagem 1.22 mais recente em um ambiente restrito do VPC Service Controls. A solução é criar esse cluster primeiro com a imagem padrão do canal GKE e, em seguida, fazer upgrade da imagem:

gcloud container clusters create CLUSTER \
  --region REGION \
  --release-channel=rapid \
  --workload-pool=PROJECT_ID.svc.id.goog \
  --project PROJECT_ID
gcloud container clusters upgrade CLUSTER \
  --region REGION \
  --master --cluster-version 1.22 \
  --project PROJECT_ID

Os contêineres não podem fazer o download das imagens.

Isso pode acontecer se as imagens estiverem localizadas fora do perímetro de serviço. Mova as imagens para um bucket localizado dentro do perímetro ou atualize o perímetro para adicionar uma regra de saída. Normalmente, a regra de saída pode permitir que identidades selecionadas acessem a API Container Registry, a API Artifact Registry e a API Cloud Storage.

O campo "Status" do CRD ControlPlaneRevision mostra erros do VPC Service Controls

Caso contrário, execute este comando para mais informações sobre o erro:

gcloud logging read --project=PROJECT_ID \
'protoPayload.metadata.@type=type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata'

Em que:

  • PROJECT_ID é o ID do projeto que encontra erros.