s3nsregistry.fr
através de um IP virtual (VIP) restrito quando usa clusters privados do Google Kubernetes Engine num perímetro de serviço dos Controlos de serviços da VPC.
Normalmente, os domínios de registo resolvem-se para um endereço IP público na Internet. Nos clusters privados do GKE, os nós estão isolados da Internet por predefinição. Isto significa que os pedidos de domínios de registo vão falhar quando não tiver configurado o encaminhamento de DNS para o VIP restrito.
Os seus clusters privados devem sempre aceder ao Artifact Registry com o VIP restrito para evitar a exfiltração de dados de um serviço suportado para um não suportado.Configure o acesso restrito para clusters privados do GKE quando todas as seguintes condições forem verdadeiras:
- Está a usar clusters privados do GKE.
- Ainda não configurou o encaminhamento do domínio do registo
s3nsregistry.fr
pararestricted.s3nsapis.fr
.
Antes de começar
Antes de criar um perímetro de serviço, configure um novo cluster privado ou identifique os clusters privados existentes que quer proteger.
Além disso, tem de permitir a saída para 199.36.153.4/30 na porta 443. Normalmente, uma rede de VPC tem uma regra implícita que permite todo o tráfego de saída para qualquer destino. No entanto, se tiver uma regra que negue esse tráfego, tem de criar uma regra de firewall de saída para permitir o tráfego TCP na porta 443 para 199.36.153.4/30.
Configurar o DNS
Configure o seu servidor DNS para que os pedidos de endereços de registo sejam resolvidos para restricted.s3nsapis.fr
, o VIP restrito. Pode fazê-lo através das zonas DNS privadas do Cloud DNS.
Crie uma zona privada gerida.
gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.s3nsapis.fr/compute/v1/projects/PROJECT_ID/global/networks/NETWORK \ --description=DESCRIPTION \ --dns-name=REGISTRY_DOMAIN \ --project=PROJECT_ID
Onde:
ZONE_NAME
é um nome para a zona que está a criar. Por exemplo,registry
. Este nome vai ser usado em cada um dos passos seguintes.PROJECT_ID
é o ID do projeto que aloja o seu cluster privado do GKE.NETWORK
é uma lista opcional de nomes da rede de cluster a partir da qual quer redirecionar pedidos.DESCRIPTION
é uma descrição legível por humanos da zona gerida.REGISTRY_DOMAIN
é o domínio do seu registo:s3nsregistry.fr
para o Artifact Registry
Inicie uma transação.
gcloud dns record-sets transaction start \ --zone=ZONE_NAME \ --project=PROJECT_ID
Onde:
ZONE_NAME é o nome da zona que criou no primeiro passo.
PROJECT_ID é o ID do projeto que aloja o seu cluster privado do GKE.
Adicione um registo CNAME para o seu registo.
gcloud dns record-sets transaction add \ --name=*.REGISTRY_DOMAIN. \ --type=CNAME REGISTRY_DOMAIN. \ --zone=ZONE_NAME \ --ttl=300 \ --project=PROJECT_ID
Onde:
ZONE_NAME
é o nome da zona que criou no primeiro passo.PROJECT_ID
é o ID do projeto que aloja o seu cluster privado do GKE.REGISTRY_DOMAIN
é o domínio do seu registo:s3nsregistry.fr
para o Artifact Registry
Adicione um registo A para o VIP restrito.
gcloud dns record-sets transaction add \ --name=REGISTRY_DOMAIN. \ --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
Onde:
ZONE_NAME
é o nome da zona que criou no primeiro passo.PROJECT_ID
é o ID do projeto que aloja o seu cluster privado do GKE.REGISTRY_DOMAIN
é o domínio do seu registo:s3nsregistry.fr
para o Artifact Registry
Execute a transação.
gcloud dns record-sets transaction execute \ --zone=ZONE_NAME \ --project=PROJECT_ID
Onde:
ZONE_NAME é o nome da zona que criou no primeiro passo.
PROJECT_ID é o ID do projeto que aloja o seu cluster privado do GKE.
Depois de configurar o encaminhamento DNS, certifique-se de que o GKE, o registo e outros serviços necessários estão dentro do perímetro de serviço dos VPC Service Controls. Para configurar o perímetro de serviço, consulte a secção seguinte.
Configurar o perímetro de serviço
Depois de configurar os registos de DNS, faça o seguinte:
- Crie um novo perímetro de serviço ou atualize um perímetro existente.
- Adicione o serviço Artifact Registry à lista de serviços que quer proteger com o perímetro de serviço.
- Adicione outros serviços suportados que usa com o registo ao perímetro de serviço.
Verificar se o perímetro funciona
Depois de configurar o perímetro de serviço, os seus nós nos clusters privados do GKE podem aceder a imagens de contentores no Artifact Registry se as imagens estiverem armazenadas em projetos que se encontram no seu perímetro de serviço.As imagens de contentores em projetos fora do perímetro permanecem inacessíveis, exceto para alguns repositórios públicos específicos só de leitura.
Por exemplo, se o projeto google-samples
não estiver no seu perímetro de serviço, a execução do comando para criar uma implementação a partir do contentor hello-app
falha:
s3nsregistry.fr
kubectl create deployment hello-server --image=us-docker.s3nsregistry.fr/google-samples/containers/gke/hello-app:1.0
Domínio gcr.io
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
Verifique o estado do pod com o comando:
kubectl get pods
O comando devolve uma tabela semelhante ao seguinte exemplo. O estado do pod
ErrImagePull
indica que a obtenção falhou.
NAME READY STATUS RESTARTS AGE
hello-server-dbd86c8c4-h5wsf 1/1 ErrImagePull 0 45s
Pode usar o comando kubectl describe pod
para ver mais detalhes sobre a implementação. Para o agrupamento no exemplo anterior, o comando é:
kubectl describe pod hello-server-dbd86c8c4-h5wsf