VPC Service Controls para Cloud Service Mesh (gerenciado)

do tipo

O Cloud Service Mesh (gerenciado) oferece suporte ao 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 a disponibilidade geral do VPC Service Controls, confira o estado do recurso da malha da sua associação para a condição VPCSC_GA_SUPPORTED.

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

A resposta é 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ê tiver um plano de controle que não informe a condição VPCSC_GA_SUPPORTED e quiser confiar no 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 por vários perímetros do VPC Service Controls.

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

    É preciso adicionar serviços específicos às listas de serviços permitidos e restritos no 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 Mesh Configuration 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 à VPC e defina essa opção como "Todos os serviços restritos". Assim, os serviços restritos na etapa acima ainda podem ser acessados de dentro do perímetro do VPC Service Controls.

  4. A menos que você esteja instalando o Cloud Service Mesh por uma rede dentro do perímetro, adicione uma 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 na página Configurar o Cloud Service Mesh gerenciado. Em seguida, verifique se o plano de controle foi provisionado com sucesso e se 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" da CRD ControlPlaneRevision exibe 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.