Como configurar o Container Registry para clusters particulares do GKE

Nesta página, descrevemos como configurar entradas DNS para o uso do Container Registry com um cluster particular do Google Kubernetes Engine e com o VPC Service Controls. Essas etapas são necessárias apenas se o cluster particular do GKE usa o Container Registry.

Antes de começar

Antes de criar um perímetro de serviço, configure um novo cluster privado ou identifique os clusters particulares atuais que você quer proteger.

Como configurar o DNS

Para dar suporte a clusters privados do GKE que usam o Container Registry dentro de um perímetro de serviço, primeiro é necessário configurar seu servidor DNS para que as solicitações enviadas aos endereços do Container Registry sejam resolvidas para restricted.googleapis.com, o VIP restrito. Faça isso usando as zonas DNS particulares do Cloud DNS.

  1. Criar uma zona particular gerenciada

    gcloud beta dns managed-zones create ZONE_NAME \
        --visibility=private \
        --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK \
        --description=DESCRIPTION \
        --dns-name=gcr.io \
        --project=PROJECT_ID
    

    Em que:

    • ZONE_NAME é um nome para a zona que você está criando. Por exemplo, gcr. Esse nome será usado em cada uma das etapas a seguir.

    • PROJECT_ID é o código do projeto que hospeda seu cluster particular do GKE.

    • NETWORK é o nome da rede de clusters de onde você quer redirecionar as solicitações. A rede padrão é default.

    • DESCRIPTION é uma descrição opcional, legível por humanos, da zona gerenciada.

  2. Inicie uma transação.

    gcloud dns record-sets transaction start \
      --zone=ZONE_NAME \
      --project=PROJECT_ID
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.

    • PROJECT_ID é o código do projeto que hospeda seu cluster particular do GKE.

  3. Adicione um registro CNAME para *.gcr.io.

    gcloud dns record-sets transaction add \
      --name=*.gcr.io.
      --type=CNAME gcr.io. \
      --zone=ZONE_NAME \
      --ttl=300 \
      --project=PROJECT_ID
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.

    • PROJECT_ID é o código do projeto que hospeda seu cluster particular do GKE.

  4. Adicione um registro A ao VIP restrito.

    gcloud dns record-sets transaction add \
      --name=gcr.io. \
      --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \
      --zone=ZONE_NAME \
      --ttl=300 \
      --project=PROJECT_ID
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.

    • PROJECT_ID é o código do projeto que hospeda seu cluster particular do GKE.

  5. Execute a transação.

    gcloud dns record-sets transaction execute \
      --zone=ZONE_NAME \
      --project=PROJECT_ID
    

    Em que:

    • ZONE_NAME é o nome da zona que você criou na primeira etapa.

    • PROJECT_ID é o código do projeto que hospeda seu cluster particular do GKE.

Como configurar o perímetro de serviço

Depois de configurar os registros DNS, crie um novo perímetro de serviço ou atualize um perímetro atual e, em seguida, adicione o serviço Container Registry à lista de serviços que você quer proteger usando o perímetro de serviço.

Como verificar se o perímetro funciona

Depois de configurar o perímetro de serviço, siga o tutorial do livro de visitas em PHP para verificar se o perímetro está funcionando conforme o esperado.

Se a configuração estiver funcionando corretamente, o pod da interface da Web do aplicativo do livro de visitas não poderá ser iniciado.

A mensagem de erro a seguir é um exemplo do que deverá ser retornado se o perímetro estiver configurado corretamente:

Events:
  Type     Reason                 Age               From                                               Message
  ----     ------                 ----              ----                                               -------
  Normal   Scheduled              8m                default-scheduler                                  Successfully assigned sample-67f11b22f-t7ltj to gke-netpolicy-default-pool-02ad111e-06tk
  Normal   SuccessfulMountVolume  8m                kubelet, gke-netpolicy-default-pool-02ad111e-06tk  MountVolume.SetUp succeeded for volume "default-token-lhx2s"
  Normal   Pulling                6m (x4 over 8m)   kubelet, gke-netpolicy-default-pool-02ad111e-06tk  pulling image "gcr.io/google_samples/gb-frontend:v4"
  Warning  Failed                 6m (x4 over 8m)   kubelet, gke-netpolicy-default-pool-02ad111e-06tk  Failed to pull image "gcr.io/google_samples/gb-frontend:v4": rpc error: code = Unknown desc = Error response from daemon: Get https://gcr.io/v2/google_samples/gb-frontend/manifests/v4: denied: Request is prohibited by organization's policy
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

VPC Service Controls