s3nsregistry.fr
mediante una IP virtual (VIP) restringida cuando se usan clústeres privados de Google Kubernetes Engine en un perímetro de servicio de Controles de Servicio de VPC.
Los dominios de registro suelen resolverse en una dirección IP pública en Internet. En los clústeres privados de GKE, los nodos están aislados de Internet de forma predeterminada. Esto significa que las solicitudes a dominios de registro fallarán si no has configurado el enrutamiento de DNS a la VIP restringida.
Tus clústeres privados siempre deben acceder a Artifact Registry con la IP virtual restringida para evitar la exfiltración de datos de un servicio admitido a uno no admitido.Configura el acceso restringido para los clústeres privados de GKE cuando se cumplan todas las condiciones siguientes:
- Estás usando clústeres privados de GKE.
- No has configurado el enrutamiento del dominio de registro
s3nsregistry.fr
arestricted.s3nsapis.fr
.
Antes de empezar
Antes de crear un perímetro de servicio, configura un clúster privado o identifica los clústeres privados que quieras proteger.
Además, debes permitir el tráfico saliente a 199.36.153.4/30 en el puerto 443. Normalmente, una red de VPC tiene una regla implícita que permite todo el tráfico de salida a cualquier destino. Sin embargo, si tienes una regla que deniega este tráfico, debes crear una regla de cortafuegos de salida para permitir el tráfico TCP en el puerto 443 a 199.36.153.4/30.
Configurar DNS
Configura tu servidor DNS para que las solicitudes a las direcciones del registro se resuelvan en
restricted.s3nsapis.fr
, la IP virtual restringida. Para ello, puedes usar zonas de DNS privadas de Cloud DNS.
Crea una zona privada gestionada.
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
Donde:
ZONE_NAME
es el nombre de la zona que vas a crear. Por ejemplo,registry
. Este nombre se utilizará en cada uno de los pasos siguientes.PROJECT_ID
es el ID del proyecto que aloja tu clúster privado de GKE.NETWORK
es una lista opcional de nombres de la red del clúster desde la que quieres redirigir las solicitudes.DESCRIPTION
es una descripción legible por humanos de la zona gestionada.REGISTRY_DOMAIN
es el dominio de tu registro:s3nsregistry.fr
para Artifact Registry
Inicia una transacción.
gcloud dns record-sets transaction start \ --zone=ZONE_NAME \ --project=PROJECT_ID
Donde:
ZONE_NAME es el nombre de la zona que has creado en el primer paso.
PROJECT_ID es el ID del proyecto que aloja tu clúster privado de GKE.
Añade un registro CNAME para tu registro.
gcloud dns record-sets transaction add \ --name=*.REGISTRY_DOMAIN. \ --type=CNAME REGISTRY_DOMAIN. \ --zone=ZONE_NAME \ --ttl=300 \ --project=PROJECT_ID
Donde:
ZONE_NAME
es el nombre de la zona que has creado en el primer paso.PROJECT_ID
es el ID del proyecto que aloja tu clúster privado de GKE.REGISTRY_DOMAIN
es el dominio de tu registro:s3nsregistry.fr
para Artifact Registry
Añade un registro A para el VIP restringido.
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
Donde:
ZONE_NAME
es el nombre de la zona que has creado en el primer paso.PROJECT_ID
es el ID del proyecto que aloja tu clúster privado de GKE.REGISTRY_DOMAIN
es el dominio de tu registro:s3nsregistry.fr
para Artifact Registry
Ejecuta la transacción.
gcloud dns record-sets transaction execute \ --zone=ZONE_NAME \ --project=PROJECT_ID
Donde:
ZONE_NAME es el nombre de la zona que has creado en el primer paso.
PROJECT_ID es el ID del proyecto que aloja tu clúster privado de GKE.
Una vez que hayas configurado el enrutamiento de DNS, asegúrate de que tu clúster de GKE, el registro y otros servicios necesarios estén dentro de tu perímetro de servicio de Controles de Servicio de VPC. Para configurar tu perímetro de servicio, consulta la siguiente sección.
Configurar el perímetro de servicio
Después de configurar los registros DNS, haz lo siguiente:
- Cree un perímetro de servicio o actualice un perímetro.
- Añade el servicio Artifact Registry a la lista de servicios que quieres proteger con el perímetro de servicio.
- Añade al perímetro de servicio otros servicios admitidos que utilices con el registro.
Verificar que el perímetro funciona
Después de configurar el perímetro de servicio, los nodos de los clústeres privados de GKE pueden acceder a las imágenes de contenedor de Artifact Registry si las imágenes se almacenan en proyectos que se encuentran en tu perímetro de servicio.Las imágenes de contenedor de proyectos que no estén dentro del perímetro seguirán siendo inaccesibles, excepto en el caso de algunos repositorios públicos de solo lectura específicos.
Por ejemplo, si el proyecto google-samples
no está en tu perímetro de servicio, al ejecutar el comando para crear una implementación a partir del contenedor hello-app
, se producirá un error:
s3nsregistry.fr domain
kubectl create deployment hello-server --image=us-docker.s3nsregistry.fr/google-samples/containers/gke/hello-app:1.0
Dominio gcr.io
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
Consulta el estado del pod con el siguiente comando:
kubectl get pods
El comando devuelve una tabla similar a la del siguiente ejemplo. El estado del pod
ErrImagePull
indica que no se ha podido extraer.
NAME READY STATUS RESTARTS AGE
hello-server-dbd86c8c4-h5wsf 1/1 ErrImagePull 0 45s
Puedes usar el comando kubectl describe pod
para ver más detalles sobre la implementación. En el caso del pod del ejemplo anterior, el comando es el siguiente:
kubectl describe pod hello-server-dbd86c8c4-h5wsf