Puedes habilitar tu servicio o trabajo de Cloud Run para que envíe tráfico a una red de VPC configurando un conector de acceso a VPC sin servidor.
de Acceso a VPC sin servidor.Antes de empezar
Si aún no tienes una red de VPC en tu proyecto, crea una.
Si usas VPC compartida, consulta el artículo Conexión a una red de VPC compartida.
En la Google Cloud consola, comprueba que la API Acceso a VPC sin servidor esté habilitada en tu proyecto.
Cada conector de Acceso a VPC sin servidor requiere su propia subred
/28
para colocar instancias del conector. Esta subred no debe tener ningún otro recurso que no sea el conector. Si no usas la VPC compartida, puedes crear una subred para que la use el conector o especificar un intervalo de IP personalizado que no esté en uso para que el conector cree una subred para su uso. Si eliges el intervalo de IP personalizado, la subred que se cree estará oculta y no se podrá usar en reglas de cortafuegos ni en configuraciones de NAT.
Crear conector
Para enviar solicitudes a tu red de VPC y recibir las respuestas correspondientes sin usar Internet pública, puedes usar un conector de acceso a VPC sin servidor.
Si tu conector se encuentra en el mismo proyecto que su red de VPC, puedes crear un conector con una subred que ya tengas o crear un conector y una subred.
Si tu conector se encuentra en un proyecto de servicio y utiliza una red de VPC compartida, el conector y su red de VPC asociada estarán en proyectos diferentes. Cuando un conector y su red de VPC están en proyectos diferentes, un administrador de la red de VPC compartida debe crear la subred del conector en la red de VPC compartida antes de que puedas crear el conector y debes crear el conector con una subred que ya exista.
Para obtener más información sobre los requisitos de las subredes, consulta los requisitos de las subredes de conectores.
Para obtener información sobre el rendimiento de los conectores, incluidos el tipo de máquina y el escalado, consulta Rendimiento y escalado.
Puedes crear un conector mediante la Google Cloud consola, la CLI de Google Cloud o Terraform.
Consola
Ve a la página de resumen de Acceso a VPC sin servidor.
Haz clic en Crear conector.
En el campo Nombre, introduzca un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine, así como los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.
En el campo Región, selecciona una región para tu conector. Debe coincidir con la región de tu servicio sin servidores.
Si tu servicio o trabajo se encuentra en la región
us-central
oeurope-west
, usaus-central1
oeurope-west1
.En el campo Red, selecciona la red de VPC a la que quieras adjuntar el conector.
En el campo Subred, seleccione una de las siguientes opciones:
Crear un conector con una subred: seleccione la subred en el campo Subred.
Crear un conector y una subred: selecciona Intervalo de IP personalizado en el campo Subred. A continuación, introduce la primera dirección de un
/28
CIDR que no esté en uso (por ejemplo,10.8.0.0/28
) para usarla como intervalo de direcciones IPv4 principal de una nueva subred que Google Cloud cree en la red de VPC del conector. Asegúrate de que el intervalo de IPs no entre en conflicto con ninguna ruta de la red de VPC del conector. El nombre de la nueva subred empieza por el prefijo "aet-".
(Opcional) Para definir opciones de escalado y tener más control sobre el conector, haz clic en Mostrar ajustes de escalado para que se muestre el formulario de escalado.
- Define el número mínimo y máximo de instancias de tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se amplía hasta el máximo especificado si el uso del tráfico lo requiere, pero no se reduce cuando el tráfico disminuye. Debes usar valores entre
2
y10
. - En el menú Tipo de instancia, elige el tipo de máquina que se va a usar para el conector o usa el valor predeterminado
e2-micro
. Fíjate en la barra lateral de costes de la derecha cuando elijas el tipo de instancia, que muestra las estimaciones de ancho de banda y costes.
- Define el número mínimo y máximo de instancias de tu conector o usa los valores predeterminados, que son 2 (mínimo) y 10 (máximo). El conector se amplía hasta el máximo especificado si el uso del tráfico lo requiere, pero no se reduce cuando el tráfico disminuye. Debes usar valores entre
Haz clic en Crear.
Cuando el conector esté listo para usarse, aparecerá una marca de verificación de color verde junto a su nombre.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Actualiza los componentes de
gcloud
a la versión más reciente:gcloud components update
Asegúrate de que la API Acceso a VPC sin servidor esté habilitada en tu proyecto:
gcloud services enable vpcaccess.googleapis.com
Crea el conector con una de las siguientes opciones:
Para obtener más información y argumentos opcionales, consulta la
gcloud
referencia.Crea un conector con una subred que ya tengas:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --subnet SUBNET_NAME \ --subnet-project HOST_PROJECT_ID \ --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Haz los cambios siguientes:
CONNECTOR_NAME
: un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine y los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.REGION
: una región para tu conector que coincida con la región de tu servicio o trabajo sin servidor. Si tu servicio o trabajo es enus-central
oeurope-west
, usaus-central1
oeurope-west1
.SUBNET_NAME
: el nombre de la subred.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida. Si el conector y la subred ya creada se encuentran en el mismo proyecto, omite la marca--subnet-project
.MIN
: número mínimo de instancias que se van a usar en el conector. Usa un número entero entre2
(el valor predeterminado) y9
.MAX
: número máximo de instancias que se van a usar en el conector. Usa un número entero entre3
y10
(el valor predeterminado). Si el conector se escala hasta el número máximo de instancias, no se vuelve a reducir.MACHINE_TYPE
: debe ser uno de los siguientes valores:f1-micro
,e2-micro
oe2-standard-4
.
Crear un conector y una subred:
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region REGION \ --network VPC_NETWORK \ --range IP_RANGE --min-instances MIN \ --max-instances MAX \ --machine-type MACHINE_TYPE
Haz los cambios siguientes:
CONNECTOR_NAME
: un nombre para el conector que cumpla las convenciones de nomenclatura de Compute Engine y los requisitos adicionales de que el nombre debe tener menos de 21 caracteres y que los guiones (-) cuentan como dos caracteres.REGION
: una región para tu conector que coincida con la región de tu servicio o trabajo sin servidor. Si tu servicio o trabajo es enus-central
oeurope-west
, usaus-central1
oeurope-west1
.VPC_NETWORK
: el nombre de la red VPC a la que quieres adjuntar el conector. El conector y la red VPC deben estar en el mismo proyecto.IP_RANGE
: proporciona un CIDR/28
que no esté en uso (por ejemplo,10.8.0.0/28
) para usarlo como intervalo de direcciones IPv4 principal de una subred que Google Cloud cree en la red de VPC del conector. Asegúrate de que el intervalo de IPs no entre en conflicto con ninguna ruta de la red de VPC del conector. El nombre de la nueva subred empieza por el prefijo "aet-".MIN
: número mínimo de instancias que se van a usar en el conector. Usa un número entero entre2
(el valor predeterminado) y9
.MAX
: número máximo de instancias que se van a usar en el conector. Usa un número entero entre3
y10
(el valor predeterminado). Si el conector se escala hasta el número máximo de instancias, no se vuelve a reducir.MACHINE_TYPE
: debe ser uno de los siguientes valores:f1-micro
,e2-micro
oe2-standard-4
.
Verifica que el conector esté en el estado
READY
antes de usarlo:gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \ --region REGION
Haz los cambios siguientes:
CONNECTOR_NAME
: el nombre del conector, que es el que has especificado en el paso anterior.REGION
: la región de tu conector. Es la región que especificaste en el paso anterior.
El resultado debe contener la línea
state: READY
.
Terraform
Puede usar un recurso de Terraform para habilitar la API vpcaccess.googleapis.com
.
Puedes usar módulos de Terraform para crear una red VPC y una subred, y, a continuación, crear el conector.
Configurar el servicio
Puedes configurar tu servicio de Cloud Run para que use un conector de acceso a VPC sin servidor para enviar tráfico de salida. Para ello, puedes usar la Google Cloud consola, la CLI de Google Cloud o un archivo YAML cuando crees un servicio o despliegues una revisión:
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Redes.
-
En el campo Red, elija una de las siguientes opciones del menú:
- Para desconectar tu servicio de una red VPC, selecciona Ninguna.
- Para usar un conector que ya tengas, selecciónalo en la lista desplegable o elige Personalizado para usar un conector que no aparezca en la lista desplegable.
- Para crear un conector, selecciona Añadir conector de VPC. Para obtener más información sobre cómo crear un conector, consulta el artículo Crear un conector de Acceso a VPC sin servidor.
- En Enrutamiento del tráfico, seleccione una de las siguientes opciones:
- Dirige solo las solicitudes a IP privadas a la VPC para enviar solo tráfico a direcciones internas a través de la red VPC.
- Dirige todo el tráfico a la VPC para enviar todo el tráfico de salida a través de la red de VPC.
-
En el campo Red, elija una de las siguientes opciones del menú:
Haz clic en Crear o en Implementar.
gcloud
Para especificar un conector durante la implementación, usa la marca --vpc-connector
:
gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. CONNECTOR_NAME
: el nombre de tu conector.
Para adjuntar, actualizar o quitar un conector de un servicio, usa el comando
gcloud run services update
con una de las siguientes marcas, según sea necesario:
Por ejemplo, para adjuntar o actualizar un conector, sigue estos pasos:
gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.CONNECTOR_NAME
: el nombre de tu conector.
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Añada o actualice el atributo
run.googleapis.com/vpc-access-connector
en el atributoannotations
, que a su vez se encuentra en el atributospec
de nivel superior:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME name: REVISION
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- CONNECTOR_NAME: el nombre de tu conector.
- REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
- Empieza por
SERVICE-
- Contiene solo letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Empieza por
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Terraform
Puedes usar un recurso de Terraform para crear un servicio y configurarlo de forma que use tu conector.
Configurar un trabajo
Una vez que hayas creado un conector de acceso a VPC sin servidor, podrás configurar tu trabajo de Cloud Run para que lo use. Para ello, puedes usar la Google Cloud consola, la CLI de Google Cloud o YAML cuando crees un trabajo:
Consola
En la Google Cloud consola, ve a la página de trabajos de Cloud Run:
Seleccione Trabajos en el menú y haga clic en Implementar contenedor para rellenar la página de configuración inicial del trabajo. Si vas a configurar un trabajo que ya existe, selecciona el trabajo y haz clic en Editar.
Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.
Haz clic en la pestaña Conexiones.
-
En el campo Red, elija una de las siguientes opciones del menú:
- Para desconectar el trabajo de una red VPC, selecciona Ninguna.
- Para usar un conector que ya tengas, selecciónalo en la lista desplegable o elige Personalizado para usar un conector que no aparezca en la lista desplegable.
- Para crear un conector, selecciona Añadir conector de VPC. Para obtener más información sobre cómo crear un conector, consulta el artículo Crear un conector de Acceso a VPC sin servidor.
-
En el campo Red, elija una de las siguientes opciones del menú:
Haz clic en Crear o en Actualizar.
gcloud
Para especificar un conector durante la implementación del trabajo, usa la marca --vpc-connector
:
gcloud run jobs create JOB --image IMAGE_URL --vpc-connector CONNECTOR_NAME
Haz los cambios siguientes:
JOB
: el nombre de tu trabajo.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. CONNECTOR_NAME
: el nombre de tu conector.
Para adjuntar, actualizar o quitar un conector de un servicio, usa el comando
gcloud run jobs update
con una de las siguientes marcas, según sea necesario:
Por ejemplo, para adjuntar o actualizar un conector, sigue estos pasos:
gcloud run jobs update JOB --vpc-connector CONNECTOR_NAME
Haz los cambios siguientes:
JOB
: el nombre de tu trabajo.CONNECTOR_NAME
: el nombre de tu conector.
YAML
Puedes descargar y ver una configuración de trabajo con el comando gcloud run jobs describe --format export
, que genera resultados limpios en formato YAML. A continuación, puedes modificar los campos que se describen más abajo y subir el archivo YAML modificado con el comando gcloud run jobs replace
.
Asegúrese de modificar solo los campos que se indican en la documentación.
Para ver y descargar la configuración, sigue estos pasos:
gcloud run jobs describe JOB --format export > job.yaml
Añada o actualice el atributo
run.googleapis.com/vpc-access-connector
en el atributoannotations
, que a su vez se encuentra en el atributospec
de nivel superior:apiVersion: serving.knative.dev/v1 kind: Job metadata: name: JOB spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
Haz los cambios siguientes:
- JOB: el nombre de tu tarea de Cloud Run.
- CONNECTOR_NAME: el nombre del conector.
El atributo
run.googleapis.com/vpc-access-connector
es obligatorio cuando se especifica un ajuste de salida.
Sustituye el trabajo por su nueva configuración con el siguiente comando:
gcloud run jobs replace job.yaml
Acceso a recursos de VPC
Puedes restringir el acceso desde tu conector mediante reglas y políticas de cortafuegos, y puedes añadir restricciones adicionales configurando los ajustes de entrada y salida.
Reglas de cortafuegos y configuración de políticas
Reglas de cortafuegos necesarias para los conectores de proyectos de servicio
Si creas un conector en una red VPC independiente o en el proyecto host de una red VPC compartida, Google Cloud crea todas las reglas de cortafuegos necesarias para que el conector funcione. Para obtener más información, consulta Reglas de cortafuegos para conectores en redes de VPC independientes o proyectos host de VPC compartida.
Sin embargo, si creas un conector en un proyecto de servicio y el conector tiene como destino una red de VPC compartida en el proyecto del host, debes añadir reglas de cortafuegos para permitir el tráfico necesario para el funcionamiento del conector desde los siguientes intervalos:
- Intervalo de IPs de la infraestructura sin servidor:
35.199.224.0/19
- Intervalos de IPs de sondeo de comprobación del estado:
35.191.0.0/16
,35.191.192.0/18
y130.211.0.0/22
La infraestructura de Google subyacente a Cloud Run, las funciones de Cloud Run y el entorno estándar de App Engine usa estos intervalos. Todas las solicitudes de estas direcciones IP proceden de la infraestructura de Google para asegurarse de que cada recurso sin servidor solo se comunica con el conector al que está conectado.
También debes permitir el tráfico de la subred del conector a los recursos de tu red de VPC.
Para llevar a cabo estos pasos, debes tener uno de los siguientes roles en el proyecto host:
- Rol de propietario (
roles/owner
) - Rol Administrador de seguridad de Compute (
roles/compute.securityAdmin
) - Rol Gestión de Identidades y Accesos (IAM) personalizado con el permiso
compute.firewalls.create
habilitado
Para una configuración básica, aplica las reglas para permitir que los recursos sin servidor de cualquier proyecto de servicio conectado a la red de VPC compartida envíen solicitudes a cualquier recurso de la red.
Para aplicar estas reglas, ejecuta los siguientes comandos en el proyecto host:
Crea reglas de cortafuegos que permitan que las solicitudes de la infraestructura sin servidor de Google y las comprobaciones del estado lleguen a todos los conectores de la red. En estos comandos, los puertos UDP y TCP se usan como proxies y para las comprobaciones de estado HTTP, respectivamente. No cambies los puertos especificados.
gcloud compute firewall-rules create serverless-to-vpc-connector \ --allow tcp:667,udp:665-666,icmp \ --source-ranges=35.199.224.0/19 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-to-serverless \ --allow tcp:667,udp:665-666,icmp \ --destination-ranges=35.199.224.0/19 \ --direction=EGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
gcloud compute firewall-rules create vpc-connector-health-checks \ --allow tcp:667 \ --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \ --direction=INGRESS \ --target-tags vpc-connector \ --network=VPC_NETWORK
Sustituye
VPC_NETWORK
por el nombre de la red VPC a la que quieras conectar tu conector.Crea una regla de cortafuegos de entrada en tu red de VPC para permitir las solicitudes de los conectores que tengan como destino esta red:
gcloud compute firewall-rules create vpc-connector-requests \ --allow tcp,udp,icmp \ --direction=INGRESS \ --source-tags vpc-connector \ --network=VPC_NETWORK
Esta regla da al conector acceso a todos los recursos de la red. Para limitar los recursos a los que puede acceder tu entorno sin servidor mediante el acceso a VPC sin servidor, consulta Restringir el acceso de la VM del conector a los recursos de la red de VPC.
Crear reglas de cortafuegos para conectores específicos
Si sigues el procedimiento que se describe en Reglas de cortafuegos obligatorias para los conectores de proyectos de servicio, se crearán reglas de cortafuegos que se aplicarán a todos los conectores, tanto a los actuales como a los que se creen en el futuro. Si no quieres que esto ocurra y, en su lugar, quieres crear reglas solo para conectores específicos, puedes acotar las reglas para que se apliquen únicamente a esos conectores.
Para limitar el ámbito de las reglas a conectores específicos, puedes usar uno de los siguientes mecanismos:
- Etiquetas de red: cada conector tiene dos etiquetas de red:
vpc-connector
yvpc-connector-REGION-CONNECTOR_NAME
. Usa el segundo formato para limitar el ámbito de tus reglas de cortafuegos a un conector específico. - Intervalos de IP: úsalo solo para las reglas de salida, ya que no funciona con las reglas de entrada. Puedes usar el intervalo de IPs de la subred del conector para limitar el ámbito de tus reglas de cortafuegos a un solo conector de VPC.
Restringir el acceso de la VM del conector a los recursos de la red de VPC
Puedes restringir el acceso de tu conector a los recursos de su red de VPC de destino mediante reglas de cortafuegos de VPC o reglas de políticas de cortafuegos. Puedes aplicar estas restricciones mediante una de las siguientes estrategias:
- Crea reglas de entrada cuyos destinos representen los recursos a los que quieras limitar el acceso de las VMs del conector y cuyos orígenes representen las VMs del conector.
- Crea reglas de salida cuyos destinos representen las VMs del conector y cuyos destinos representen los recursos a los que quieras limitar el acceso de las VMs del conector.
En los siguientes ejemplos se ilustra cada estrategia.
Restringir el acceso mediante reglas de entrada
Elige etiquetas de red o intervalos CIDR para controlar el tráfico entrante a tu red de VPC.
Etiquetas de red
En los pasos siguientes se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red de VPC en función de las etiquetas de red del conector.
Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Rol Administrador de seguridad de Compute
- Rol de gestión de identidades y accesos personalizado con el permiso
compute.firewalls.create
habilitado
Deniega el tráfico del conector en tu red VPC.
Crea una regla de cortafuegos de entrada con una prioridad inferior a 1000 en tu red de VPC para denegar la entrada desde la etiqueta de red del conector. De esta forma, se anula la regla de cortafuegos implícita que Acceso a VPC sin servidor crea en tu red de VPC de forma predeterminada.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
deny-vpc-connector
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos:
ah
,all
,esp
,icmp
,ipip
ysctp
.VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector universal si quiere restringir el acceso a todos los conectores (incluidos los que cree en el futuro) o la etiqueta de red única si quiere restringir el acceso a un conector específico.
- Etiqueta de red universal:
vpc-connector
Etiqueta de red única:
vpc-connector-REGION-CONNECTOR_NAME
Sustituye:
- REGION: la región del conector que quieras restringir
- CONNECTOR_NAME: el nombre del conector que quieras restringir
Para obtener más información sobre las etiquetas de red de conectores, consulta Etiquetas de red.
- Etiqueta de red universal:
VPC_NETWORK: el nombre de tu red de VPC
PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.
Permite el tráfico del conector al recurso que debería recibirlo.
Usa las marcas
allow
ytarget-tags
para crear una regla de cortafuegos de entrada dirigida al recurso de tu red de VPC al que quieres que acceda el conector de VPC. Asigne a esta regla una prioridad inferior a la de la regla que ha creado en el paso anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-tags=VPC_CONNECTOR_NETWORK_TAG \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector universal si quiere restringir el acceso a todos los conectores (incluidos los que cree en el futuro) o la etiqueta de red única si quiere restringir el acceso a un conector específico. Debe coincidir con la etiqueta de red que ha especificado en el paso anterior.
- Etiqueta de red universal:
vpc-connector
Etiqueta de red única:
vpc-connector-REGION-CONNECTOR_NAME
Sustituye:
- REGION: la región del conector que quieras restringir
- CONNECTOR_NAME: el nombre del conector que quieras restringir
Para obtener más información sobre las etiquetas de red de conectores, consulta Etiquetas de red.
- Etiqueta de red universal:
VPC_NETWORK: el nombre de tu red de VPC
RESOURCE_TAG: la etiqueta de red del recurso de VPC al que quieres que acceda tu conector de VPC
PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.
Para obtener más información sobre las marcas obligatorias y opcionales para crear reglas de firewall, consulta la documentación de gcloud compute firewall-rules create
.
Intervalo CIDR
En los pasos siguientes se muestra cómo crear reglas de entrada que restrinjan el acceso de un conector a tu red VPC en función del intervalo CIDR del conector.
Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Rol Administrador de seguridad de Compute
- Rol de gestión de identidades y accesos personalizado con el permiso
compute.firewalls.create
habilitado
Deniega el tráfico del conector en tu red VPC.
Crea una regla de cortafuegos de entrada con una prioridad inferior a 1000 en tu red de VPC para denegar la entrada desde el intervalo CIDR del conector. De esta forma, se anula la regla de cortafuegos implícita que Acceso a VPC sin servidor crea en tu red de VPC de forma predeterminada.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
deny-vpc-connector
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos:
ah
,all
,esp
,icmp
,ipip
ysctp
.VPC_CONNECTOR_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso quieres restringir
VPC_NETWORK: el nombre de tu red de VPC
PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.
Permite el tráfico del conector al recurso que debería recibirlo.
Usa las marcas
allow
ytarget-tags
para crear una regla de cortafuegos de entrada dirigida al recurso de tu red de VPC al que quieres que acceda el conector de VPC. Asigne a esta regla una prioridad inferior a la de la regla que ha creado en el paso anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --source-ranges=VPC_CONNECTOR_CIDR_RANGE \ --direction=INGRESS \ --network=VPC_NETWORK \ --target-tags=RESOURCE_TAG \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.VPC_CONNECTOR_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso estás restringiendo
VPC_NETWORK: el nombre de tu red de VPC
RESOURCE_TAG: la etiqueta de red del recurso de VPC al que quieres que acceda tu conector de VPC
PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.
Para obtener más información sobre las marcas obligatorias y opcionales para crear reglas de firewall, consulta la documentación de gcloud compute firewall-rules create
.
Restringir el acceso mediante reglas de salida
En los siguientes pasos se muestra cómo crear reglas de salida para restringir el acceso a los conectores.
Asegúrate de que tienes los permisos necesarios para insertar reglas de cortafuegos. Debes tener uno de los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Rol Administrador de seguridad de Compute
- Rol de gestión de identidades y accesos personalizado con el permiso
compute.firewalls.create
habilitado
Deniega el tráfico de salida de tu conector.
Crea una regla de cortafuegos de salida en tu conector de acceso a VPC sin servidor para evitar que envíe tráfico saliente a cualquier destino, excepto las respuestas establecidas.
gcloud compute firewall-rules create RULE_NAME \ --action=DENY \ --rules=PROTOCOL \ --direction=EGRESS \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --network=VPC_NETWORK \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
deny-vpc-connector
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.Por motivos de seguridad y validación, también puede configurar reglas de denegación para bloquear el tráfico de los siguientes protocolos no admitidos:
ah
,all
,esp
,icmp
,ipip
ysctp
.VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector de VPC universal si quieres que la regla se aplique a todos los conectores de VPC que ya tengas y a los que crees en el futuro. O bien, la etiqueta de red única del conector de VPC si quieres controlar un conector específico.
VPC_NETWORK: el nombre de tu red de VPC
PRIORITY: un número entero entre 0 y 65535. Por ejemplo, 0 establece la prioridad más alta.
Permite el tráfico de salida cuando el destino esté en el intervalo CIDR al que quieras que acceda tu conector.
Usa las marcas
allow
ydestination-ranges
para crear una regla de cortafuegos que permita el tráfico de salida de tu conector a un intervalo de destino específico. Define el intervalo de destino como el intervalo CIDR del recurso de tu red de VPC al que quieras que pueda acceder tu conector. Asigne a esta regla una prioridad inferior a la de la regla que ha creado en el paso anterior.gcloud compute firewall-rules create RULE_NAME \ --allow=PROTOCOL \ --destination-ranges=RESOURCE_CIDR_RANGE \ --direction=EGRESS \ --network=VPC_NETWORK \ --target-tags=VPC_CONNECTOR_NETWORK_TAG \ --priority=PRIORITY
Haz los cambios siguientes:
RULE_NAME: el nombre de la nueva regla de cortafuegos. Por ejemplo,
allow-vpc-connector-for-select-resources
.PROTOCOL: uno o varios protocolos que quieras permitir desde tu conector de VPC. Los protocolos admitidos son
tcp
yudp
. Por ejemplo,tcp:80,udp
permite el tráfico TCP a través del puerto 80 y el tráfico UDP. Para obtener más información, consulta la documentación de la marcaallow
.RESOURCE_CIDR_RANGE: el intervalo CIDR del conector cuyo acceso quieres restringir
VPC_NETWORK: el nombre de tu red de VPC
VPC_CONNECTOR_NETWORK_TAG: la etiqueta de red del conector de VPC universal si quieres que la regla se aplique a todos los conectores de VPC que ya tengas y a los que crees en el futuro. O bien, la etiqueta de red única del conector de VPC si quieres controlar un conector específico. Si ha usado la etiqueta de red única en el paso anterior, use la etiqueta de red única.
PRIORITY: un número entero inferior a la prioridad que hayas definido en el paso anterior. Por ejemplo, si has asignado la prioridad 990 a la regla que has creado en el paso anterior, prueba con 980.
Para obtener más información sobre las marcas obligatorias y opcionales para crear reglas de firewall, consulta la documentación de gcloud compute firewall-rules create
.
Gestionar tu conector
De forma predeterminada, solo las solicitudes a determinados destinos de direcciones IPv4 internas (incluidos los destinos IPv4 internos resueltos por respuestas DNS) se enrutan a través de un conector de acceso a VPC sin servidor. Sin embargo, en algunos casos, puede que quieras que todas las solicitudes salientes de tu servicio o trabajo se enruten a tu red VPC.
Acceso a VPC sin servidor solo admite el enrutamiento del tráfico IPv4. No se admite el tráfico IPv6, aunque tengas rutas IPv6 en tu red de VPC.
Para controlar el enrutamiento de las solicitudes salientes de tu servicio o trabajo, puedes definir la salida de VPC en una de las siguientes opciones:
La ruta solo realiza solicitudes a IP privadas a la VPC: es el valor predeterminado. El tráfico se enruta a través de la red VPC solo si los paquetes que lo transportan tienen destinos que coinciden con lo siguiente:
Los paquetes que se envían a cualquier otro destino se enrutan desde Cloud Run a Internet (no a través de ninguna red de VPC).
Dirigir todo el tráfico a la VPC: el tráfico siempre se dirige a través de la red VPC asociada al conector, para todos los destinos de paquetes. Debes usar esta opción en las siguientes circunstancias:
- Si necesitas enviar tráfico a intervalos de subredes de VPC con intervalos de direcciones IP externas usadas de forma privada. Para obtener más información sobre los intervalos de subredes de VPC, consulta Intervalos de IPv4 válidos en la descripción general de las subredes.
- Si necesitas enviar tráfico a un punto final de Private Service Connect para APIs de Google cuya dirección sea una dirección IP externa de uso privado. Para obtener más información sobre los puntos finales de Private Service Connect para las APIs de Google, consulta el artículo Acceder a las APIs de Google a través de puntos finales.
- Si necesitas enviar tráfico a cualquier otro destino de dirección IP externa usada de forma privada que se pueda enrutar en la red de VPC del conector. Otros ejemplos de destinos que abarcan direcciones IP externas usadas de forma privada podrían incluir intervalos de subredes de emparejamiento (e intervalos de subredes de emparejamiento creados a partir de Intervalos de direcciones IP asignados para servicios) y aquellos destinos a los que se puede acceder mediante rutas personalizadas en la abreviatura de VPC.
Si tu red de VPC incluye una ruta predeterminada, los paquetes se pueden seguir enrutando a Internet después de que los procese el conector si configuras una pasarela Cloud NAT para proporcionar servicios de NAT a la subred que usa el conector. Estos paquetes están sujetos a las rutas de tu red de VPC y a las reglas de cortafuegos que se aplican a tu red de VPC. Puedes usar la configuración de rutas y cortafuegos para controlar la salida a Internet de todas las solicitudes salientes enviadas por tu función a través de un conector de acceso a VPC sin servidor.
Controlar el tráfico de servicios de salida
Puedes especificar un ajuste de salida de VPC mediante la consola, la CLI de Google Cloud o un archivo YAML al crear un servicio o implementar una revisión:Google Cloud
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Redes.
- Después de seleccionar un conector VPC, elige La ruta solo realiza solicitudes a IPs privadas mediante el conector VPC o La ruta envía todo el tráfico a la VPC.
Haz clic en Crear o en Implementar.
gcloud
Para especificar un ajuste de salida, usa la marca --vpc-egress
. Puedes especificar
un ajuste de salida durante la implementación:
gcloud run deploy SERVICE \ --image IMAGE_URL \ --vpc-connector CONNECTOR_NAME \ --vpc-egress EGRESS_SETTING
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. CONNECTOR_NAME
: el nombre de tu conector.EGRESS_SETTING
: un valor de ajuste de salida:all-traffic
: envía todo el tráfico saliente a través del conector.private-ranges-only
: envía solo tráfico a direcciones internas a través del conector de VPC.
También puede actualizar un servicio y cambiar el ajuste de salida:
gcloud run services update SERVICE --vpc-egress EGRESS_SETTING
Haz los cambios siguientes:
SERVICE
: el nombre de tu servicio.EGRESS_SETTING
: un valor de ajuste de salida como se indica más arriba.
YAML
Si va a crear un servicio, puede saltarse este paso. Si va a actualizar un servicio, descargue su configuración YAML:
gcloud run services describe SERVICE --format export > service.yaml
Añada o actualice el atributo
run.googleapis.com/vpc-access-egress
en el atributoannotations
, que a su vez se encuentra en el atributospec
de nivel superior:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME run.googleapis.com/vpc-access-egress: EGRESS_SETTING name: REVISION
Haz los cambios siguientes:
- SERVICE: el nombre de tu servicio de Cloud Run.
- CONNECTOR_NAME: el nombre del conector.
El atributo
run.googleapis.com/vpc-access-connector
es obligatorio cuando se especifica un ajuste de salida. - EGRESS_SETTING: uno de los siguientes:
all-traffic
: envía todo el tráfico saliente a través del conector.private-ranges-only
: envía solo tráfico a direcciones internas a través del conector de VPC.- REVISION con un nuevo nombre de revisión o elimínelo (si está presente). Si proporcionas un nuevo nombre de revisión, debe cumplir los siguientes criterios:
- Empieza por
SERVICE-
- Contiene solo letras minúsculas, números y
-
- No termina con
-
- No supera los 63 caracteres
- Empieza por
Crea o actualiza el servicio con el siguiente comando:
gcloud run services replace service.yaml
Controlar el tráfico de tareas de salida
Puedes especificar un ajuste de salida de VPC mediante laGoogle Cloud consola, la CLI de Google Cloud o un archivo YAML al crear o actualizar un trabajo:
Consola
En la Google Cloud consola, ve a la página de trabajos de Cloud Run:
Seleccione Trabajos en el menú y haga clic en Implementar contenedor para rellenar la página de configuración inicial del trabajo. Si vas a configurar un trabajo que ya existe, selecciona el trabajo y haz clic en Editar.
Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.
Haz clic en la pestaña Conexiones.
- Después de seleccionar un conector, elige La ruta solo realiza solicitudes a IPs privadas mediante el conector VPC o La ruta envía todo el tráfico a la VPC.
Haz clic en Crear o en Actualizar.
gcloud
Para especificar un ajuste de salida, usa la marca --vpc-egress
. Puedes especificar
un ajuste de salida durante el proceso de implementación del trabajo:
gcloud run jobs create JOB \ --image IMAGE_URL \ --vpc-connector CONNECTOR_NAME \ --vpc-egress EGRESS_SETTING
Haz los cambios siguientes:
JOB
: el nombre de tu trabajo.- IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo,
us-docker.pkg.dev/cloudrun/container/hello:latest
. Si usas Artifact Registry, el repositorio REPO_NAME ya debe estar creado. La URL sigue el formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. CONNECTOR_NAME
: el nombre de tu conector.EGRESS_SETTING
: un valor de ajuste de salida:all-traffic
: envía todo el tráfico saliente a través del conector.private-ranges-only
: envía solo tráfico a direcciones internas a través del conector de VPC.
También puede actualizar un trabajo y cambiar el ajuste de salida:
gcloud run jobs update JOB --vpc-egress EGRESS_SETTING
Haz los cambios siguientes:
JOB
: el nombre de tu trabajo.EGRESS_SETTING
: un valor de ajuste de salida como se indica más arriba.
YAML
Puedes descargar y ver una configuración de trabajo con el comando gcloud run jobs describe --format export
, que genera resultados limpios en formato YAML. A continuación, puedes modificar los campos que se describen más abajo y subir el archivo YAML modificado con el comando gcloud run jobs replace
.
Asegúrese de modificar solo los campos que se indican en la documentación.
Sustituye el trabajo por su nueva configuración con el siguiente comando:
gcloud run jobs replace job.yaml
Añada o actualice el atributo
run.googleapis.com/vpc-access-egress
en el atributoannotations
, que a su vez se encuentra en el atributospec
de nivel superior:apiVersion: serving.knative.dev/v1 kind: Job metadata: name: JOB spec: template: metadata: annotations: run.googleapis.com/vpc-access-connector: CONNECTOR_NAME run.googleapis.com/vpc-access-egress: EGRESS_SETTING
Haz los cambios siguientes:
- JOB: el nombre de tu tarea de Cloud Run.
- CONNECTOR_NAME: el nombre del conector. El atributo
run.googleapis.com/vpc-access-connector
es obligatorio cuando se especifica un ajuste de salida. - EGRESS_SETTING: uno de los siguientes:
all-traffic
: envía todo el tráfico saliente a través del conector.private-ranges-only
: envía solo tráfico a direcciones internas a través del conector de VPC.
Sustituye el trabajo por su nueva configuración con el siguiente comando:
gcloud run jobs replace job.yaml
Ver la configuración del conector
Para ver la configuración actual del conector de Acceso a VPC sin servidor de tu servicio o tarea, puedes usar la consola de Google Cloud o la herramienta de línea de comandos gcloud
:
Consola
Haz clic en el servicio o el trabajo que te interese para abrir la página de detalles.
En el caso de un servicio, haz clic en la pestaña Revisiones.
En un trabajo, haz clic en la pestaña Configuración.
El ajuste del conector de Acceso a VPC sin servidor se encuentra en la pestaña Redes.
gcloud
Usa el siguiente comando para ver los ajustes de tu servicio:
gcloud run services describe SERVICE
Usa el siguiente comando para ver los ajustes de tu trabajo:
gcloud run jobs describe JOB
Busca el ajuste del conector de Acceso a VPC sin servidor en la configuración devuelta.
Desconectarse de una red de VPC
Desconectar un servicio
Para desconectar un servicio de tu red de VPC, puedes usar la Google Cloud consola o la CLI de Google Cloud:
Consola
En la Google Cloud consola, ve a Cloud Run:
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio. Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Redes.
- En el campo Red, selecciona Ninguna para desconectar tu servicio de una red VPC.
Haz clic en Crear o en Implementar.
gcloud
Para desconectar un servicio, usa el comando gcloud run services update
con la siguiente marca:
gcloud run services update SERVICE --clear-vpc-connector
- Sustituye SERVICE por el nombre de tu servicio.
Los conectores siguen generando cargos aunque no tengan tráfico y estén desconectados. Para obtener más información, consulta los precios. Si ya no necesitas el conector, elimínalo para evitar que se te siga facturando.
Desconectar una tarea
Para desconectar un trabajo de tu red de VPC, puedes usar la Google Cloud consola o la CLI de Google Cloud:
Consola
En la Google Cloud consola, ve a la página de trabajos de Cloud Run:
Seleccione Trabajos en el menú y haga clic en Implementar contenedor para rellenar la página de configuración inicial del trabajo. Si vas a configurar un trabajo que ya existe, selecciona el trabajo y haz clic en Editar.
Haz clic en Contenedores, volúmenes, conexiones y seguridad para desplegar la página de propiedades del trabajo.
Haz clic en la pestaña Conexiones.
- En el campo Red, selecciona Ninguna para desconectar el trabajo de una red de VPC.
Haz clic en Crear o en Actualizar.
gcloud
Para desconectar un trabajo, usa el comando gcloud run jobs update
con la siguiente marca:
gcloud run jobs update JOB --clear-vpc-connector
Sustituye JOB por el nombre del trabajo.
Los conectores siguen generando cargos aunque no tengan tráfico y estén desconectados. Para obtener más información, consulta los precios. Si ya no necesitas el conector, elimínalo para evitar que se te siga facturando.
Actualizar un conector
Puede actualizar y monitorizar los siguientes atributos de su conector mediante la Google Cloud consola, la CLI de Google Cloud o la API:
- Tipo de máquina (instancia)
- Número mínimo y máximo de instancias
- Rendimiento reciente, número de instancias y uso de CPU
Actualizar el tipo de máquina
Consola
Ve a la página de resumen de Acceso a VPC sin servidor.
Selecciona el conector que quieras editar y haz clic en Editar.
En la lista Tipo de instancia, selecciona el tipo de máquina (instancia) que prefieras. Para obtener información sobre los tipos de máquinas disponibles, consulta la documentación sobre rendimiento y escalado.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para actualizar el tipo de máquina del conector, ejecuta el siguiente comando en el terminal:
Sustituye lo siguiente:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
CONNECTOR_NAME
: el nombre de tu conectorREGION
: el nombre de la región de tu conectorMACHINE_TYPE
: el tipo de máquina que prefieras. Para obtener información sobre los tipos de máquinas disponibles, consulta la documentación sobre rendimiento y escalado.
Reducir el número mínimo y máximo de instancias
Para reducir el número mínimo y máximo de instancias, debes hacer lo siguiente:
- Crea un conector con los valores que prefieras.
- Actualiza tu servicio o función para usar el nuevo conector.
- Elimina el conector antiguo cuando hayas migrado su tráfico.
Aumentar el número mínimo y máximo de instancias
Consola
Ve a la página de resumen de Acceso a VPC sin servidor.
Selecciona el conector que quieras editar y haz clic en Editar.
En el campo Instancias mínimas, selecciona el número mínimo de instancias que prefieras.
El valor más pequeño posible de este campo es el valor actual. El valor más alto posible de este campo es el valor actual del campo Número máximo de instancias menos 1. Por ejemplo, si el valor del campo Máximo de instancias es 8, el valor más alto posible del campo Mínimo de instancias es 7.
En el campo Número máximo de instancias, selecciona el número máximo de instancias que prefieras.
El valor más pequeño posible de este campo es el valor actual. El valor máximo posible de este campo es 10.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para aumentar el número mínimo o máximo de instancias del conector, ejecuta el siguiente comando en tu terminal:
Sustituye lo siguiente:gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
CONNECTOR_NAME
: el nombre de tu conectorREGION
: el nombre de la región de tu conectorMIN_INSTANCES
: el número mínimo de instancias que prefieras.- El valor más pequeño posible de este campo es el valor actual de
min_instances
. Para ver el valor actual, consulte Buscar los valores de atributo actuales. - El valor más alto posible para este campo es el valor actual de
max_instances
menos 1, ya quemin_instances
debe ser inferior amax_instances
. Por ejemplo, simax_instances
es 8, el valor más alto posible de este campo es 7. Si tu conector usa el valor predeterminadomax-instances
de 10, el valor máximo posible de este campo es 9. Para encontrar el valor demax-instances
, consulte Buscar los valores de atributo actuales.
- El valor más pequeño posible de este campo es el valor actual de
MAX_INSTANCES
:- El valor más pequeño posible de este campo es el valor actual de
max_instances
. Para ver el valor actual, consulte Buscar los valores de atributo actuales. - El valor máximo posible de este campo es 10.
Si solo quiere aumentar el número mínimo de instancias, pero no el máximo, debe especificar el número máximo de instancias. Por el contrario, si solo quiere actualizar el número máximo de instancias, pero no el mínimo, debe especificar el número mínimo de instancias. Para mantener el número mínimo o máximo de instancias en su valor actual, especifica dicho valor. Para consultar su valor actual, consulte Buscar los valores de atributo actuales.
- El valor más pequeño posible de este campo es el valor actual de
Buscar los valores de atributo actuales
Para encontrar los valores de atributo actuales de tu conector, ejecuta lo siguiente en tu terminal:
gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
CONNECTOR_NAME
: el nombre de tu conectorREGION
: el nombre de la región de tu conectorPROJECT
: el nombre de tu Google Cloud proyecto
Monitorizar el uso de conectores
Monitorizar el uso a lo largo del tiempo puede ayudarte a determinar cuándo ajustar la configuración de un conector. Por ejemplo, si la utilización de la CPU aumenta de forma repentina, puede probar a aumentar el número máximo de instancias para obtener mejores resultados. O bien, si estás alcanzando el límite de rendimiento, puedes cambiar a un tipo de máquina más grande.
Para ver gráficos del rendimiento, el número de instancias y las métricas de utilización de CPU del conector a lo largo del tiempo mediante la consola, sigue estos pasos: Google Cloud
Ve a la página de resumen de Acceso a VPC sin servidor.
Haz clic en el nombre del conector que quieras monitorizar.
Seleccione el número de días que quiere mostrar (entre 1 y 90).
En el gráfico Rendimiento, mantén el puntero sobre el gráfico para ver el rendimiento reciente del conector.
En el gráfico Número de instancias, coloque el puntero sobre el gráfico para ver el número de instancias que ha usado recientemente el conector.
En el gráfico Uso de la CPU, mantén el puntero sobre el gráfico para ver el uso reciente de la CPU del conector. El gráfico muestra el uso de la CPU distribuido entre las instancias de los percentiles 50, 95 y 99.
Eliminar un conector
Antes de eliminar un conector, debes quitarlo de los recursos sin servidor que aún lo utilicen. Si eliminas un conector antes de quitarlo de tus recursos sin servidor, no podrás eliminar la red de VPC más adelante.
Los usuarios de la VPC compartida que configuren conectores en el proyecto host de la VPC compartida pueden usar el comando
gcloud compute networks vpc-access connectors describe
para enumerar los proyectos en los que haya recursos sin servidor que usen un conector determinado.
Para eliminar un conector, usa la consola de Google Cloud o Google Cloud CLI:
Consola
Ve a la página de resumen de Acceso a VPC sin servidor en laGoogle Cloud consola:
Selecciona el conector que quieras eliminar.
Haz clic en Eliminar.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el siguiente comando
gcloud
para eliminar un conector:gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
Haz los cambios siguientes:
- CONNECTOR_NAME con el nombre del conector que quieras eliminar
- REGION por la región en la que se encuentra el conector
Gestionar restricciones personalizadas de proyectos
En esta sección se describe cómo crear restricciones personalizadas para los conectores de acceso a VPC sin servidor y cómo aplicarlas a nivel de proyecto. Para obtener información sobre las políticas de organización personalizadas, consulta el artículo Crear y gestionar políticas de organización personalizadas.
Google Cloud La política de organización te ofrece un control centralizado y programático sobre los recursos de tu organización. Como administrador de políticas de la organización, puedes definir una política de la organización, que es un conjunto de restricciones llamadas restricciones que se aplican a losGoogle Cloud recursos y a los elementos descendientes de esos recursos en la Google Cloud jerarquía de recursos. Puedes aplicar políticas de organización a nivel de organización, carpeta o proyecto.
La política de organización proporciona restricciones predefinidas para varios servicios deGoogle Cloud . Sin embargo, si quieres tener un control más granular y personalizable sobre los campos específicos que están restringidos en las políticas de tu organización, también puedes crear políticas de organización personalizadas.
Ventajas
Acceso a VPC sin servidor te permite escribir cualquier número de restricciones personalizadas usando la mayoría de los campos configurados por el usuario en la API Acceso a VPC sin servidor. Por ejemplo, puedes crear una restricción personalizada que especifique qué subredes puede usar un conector de acceso a VPC sin servidor.
Una vez aplicada, las solicitudes que infrinjan una política que aplique una restricción personalizada mostrarán un mensaje de error en la CLI de gcloud y en los registros de acceso a VPC sin servidor. El mensaje de error contiene el ID de la restricción y la descripción de la restricción personalizada infringida.
Herencia de políticas
De forma predeterminada, las políticas de organización se heredan de los descendientes de los recursos en los que apliques la política. Por ejemplo, si aplicas una política a una carpeta, Google Cloud se aplicará a todos los proyectos de la carpeta. Para obtener más información sobre este comportamiento y cómo cambiarlo, consulta las reglas de evaluación de la jerarquía.
Limitaciones
No se admite la especificación del tipo de máquina, el número mínimo de instancias ni el número máximo de instancias.
Antes de empezar
Asegúrate de que conoces el ID de tu organización.
Roles obligatorios
Para obtener los permisos que necesitas para gestionar las políticas de la organización,
pide a tu administrador que te conceda el
rol de gestión de identidades y accesos administrador de políticas de la organización (roles/orgpolicy.policyAdmin
)
en el recurso de la organización.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.
Crear una restricción personalizada
Una restricción personalizada se define en un archivo YAML mediante los recursos, los métodos, las condiciones y las acciones que admite el servicio en el que se aplica la política de la organización. Las condiciones de tus restricciones personalizadas se definen mediante el lenguaje de expresión común (CEL). Para obtener más información sobre cómo crear condiciones en restricciones personalizadas con CEL, consulta la sección sobre CEL del artículo Crear y gestionar restricciones personalizadas.
Para crear un archivo YAML para una restricción personalizada de Acceso a VPC sin servidor, consulta el siguiente ejemplo:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Haz los cambios siguientes:
ORGANIZATION_ID
: el ID de tu organización, como123456789
.CONSTRAINT_NAME
: el nombre que quieras asignar a la nueva restricción personalizada. Una restricción personalizada debe empezar porcustom.
y solo puede incluir letras mayúsculas, letras minúsculas o números. Por ejemplo, custom.defaultNetworkConstraint. La longitud máxima de este campo es de 70 caracteres, sin contar el prefijo.CONDITION
: una condición CEL que se escribe en una representación de un recurso de servicio compatible. Este campo tiene una longitud máxima de 1000 caracteres. Por ejemplo,"resource.network == default"
.ACTION
: la acción que se debe llevar a cabo si se cumple la condicióncondition
. Puede serALLOW
oDENY
.DISPLAY_NAME
: nombre descriptivo de la restricción. Este campo tiene una longitud máxima de 200 caracteres.DESCRIPTION
: descripción de la restricción que se muestra como mensaje de error cuando se infringe la política. Por ejemplo,"Require network to not be set to default."
Este campo tiene una longitud máxima de 2000 caracteres.
Para obtener más información sobre cómo crear una restricción personalizada, consulta Definir restricciones personalizadas.
Configurar una restricción personalizada
Una vez que hayas creado el archivo YAML de una nueva restricción personalizada, debes configurarla para que esté disponible en las políticas de organización de tu organización. Para configurar una restricción personalizada, usa el comandogcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
por la ruta completa a tu archivo de restricciones personalizadas. Por ejemplo, /home/user/customconstraint.yaml
.
Una vez completado el proceso, las restricciones personalizadas estarán disponibles como políticas de organización en la lista de Google Cloud políticas de organización.
Para verificar que la restricción personalizada existe, usa el comando gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
por el ID del recurso de tu organización.
Para obtener más información, consulta Ver políticas de la organización.
Aplicar una restricción personalizada
Para aplicar una restricción, crea una política de organización que haga referencia a ella y, a continuación, aplica esa política de organización a un Google Cloud recurso.Consola
- En la Google Cloud consola, ve a la página Políticas de la organización.
- En el selector de proyectos, elige el proyecto para el que quieras definir la política de organización.
- En la lista de la página Políticas de organización, selecciona la restricción para ver la página Detalles de la política correspondiente.
- Para configurar la política de la organización de este recurso, haz clic en Gestionar política.
- En la página Editar política, selecciona Anular política del recurso superior.
- Haz clic en Añadir regla.
- En la sección Aplicación, selecciona si quieres activar o desactivar la aplicación de esta política de la organización.
- Opcional: Para que la política de la organización dependa de una etiqueta, haz clic en Añadir condición. Ten en cuenta que, si añades una regla condicional a una política de organización, debes añadir al menos una regla incondicional o la política no se podrá guardar. Para obtener más información, consulta Configurar una política de organización con etiquetas.
- Haz clic en Probar cambios para simular el efecto de la política de la organización. La simulación de políticas no está disponible para las restricciones gestionadas antiguas. Para obtener más información, consulta el artículo Probar los cambios en las políticas de la organización con el simulador de políticas.
- Para finalizar y aplicar la política de organización, haz clic en Definir política. La política tarda hasta 15 minutos en aplicarse.
gcloud
Para crear una política de organización con reglas booleanas, crea un archivo YAML de política que haga referencia a la restricción:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Haz los cambios siguientes:
-
PROJECT_ID
: el proyecto en el que quieras aplicar la restricción. -
CONSTRAINT_NAME
: el nombre que has definido para tu restricción personalizada. Por ejemplo,custom.defaultNetworkConstraint
.
Para aplicar la política de la organización que contiene la restricción, ejecuta el siguiente comando:
gcloud org-policies set-policy POLICY_PATH
Sustituye POLICY_PATH
por la ruta completa al archivo YAML de la política de tu organización. La política tarda hasta 15 minutos en aplicarse.
Probar la restricción personalizada
Para probar el ejemplo que restringe la configuración de entrada, implementa un conector en el proyecto con la red configurada como default
:
gcloud compute networks vpc-access connectors create org-policy-test \
--project=PROJECT_ID \
--region=REGION_ID \
--network=default
El resultado es el siguiente:
Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]
Ejemplos de políticas de organización personalizadas para casos prácticos habituales
En la siguiente tabla se muestran ejemplos de restricciones personalizadas que pueden ser útiles con los conectores de Acceso a VPC sin servidor:
Descripción | Sintaxis de las restricciones |
---|---|
Requerir que los conectores de acceso a VPC sin servidor solo puedan usar una red específica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.network == 'allowlisted-network'" actionType: ALLOW displayName: allowlistNetworks description: Require connectors to use a specific network. |
Descripción | Sintaxis de las restricciones |
Requerir que los conectores de acceso a VPC sin servidor solo tengan acceso a una subred específica. |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject resourceTypes: - vpcaccess.googleapis.com/Connector methodTypes: - CREATE condition: "resource.subnet.name == 'allocated-subnet'" actionType: ALLOW displayName: restrictSubnetForProject description: This project is only allowed to use the subnet "allocated-subnet". |
Solución de problemas
Permisos de cuenta de servicio
Para realizar operaciones en tu proyecto de Google Cloud , Acceso a VPC sin servidor usa la cuenta de servicio Agente de servicios de Acceso a VPC sin servidor. La dirección de correo de esta cuenta de servicio tiene el siguiente formato:
service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com
De forma predeterminada, esta cuenta de servicio tiene el rol Agente de servicio de acceso a VPC sin servidor (roles/vpcaccess.serviceAgent
). Las operaciones de acceso a VPC sin servidor pueden fallar si cambias los permisos de esta cuenta.
Rendimiento de red deficiente o uso elevado de la CPU inactiva
Usar un solo conector para miles de instancias puede provocar una degradación del rendimiento y un aumento del uso de la CPU en reposo. Para solucionar este problema, fragmenta tus servicios entre varios conectores.
Problemas con la MTU personalizada
Si tienes problemas con una MTU personalizada, asegúrate de usar el ajuste de MTU predeterminado de Cloud Run.
Errores
Error que indica que la cuenta de servicio necesita el rol de agente de servicio
Si usas la restricción de política de organización
Restrict Resource Service Usage
para bloquear Cloud Deployment Manager (deploymentmanager.googleapis.com
), es posible que veas el siguiente mensaje de error:
Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.
Define la política de la organización para quitar Deployment Manager de la lista de denegación o añadirlo a la lista de permitidos.
Error al crear el conector
Si se produce un error al crear un conector, prueba lo siguiente:
- Especifica un intervalo de IP internas RFC 1918 que no se solape con ninguna reserva de direcciones IP de la red de VPC.
- Concede a tu proyecto permiso para usar imágenes de máquinas virtuales de Compute Engine del proyecto con el ID
serverless-vpc-access-images
. Para obtener más información sobre cómo actualizar la política de tu organización, consulta el artículo Definir restricciones de acceso a imágenes.
No se puede acceder a los recursos
Si has especificado un conector, pero sigues sin poder acceder a los recursos de tu red de VPC, asegúrate de que no haya reglas de cortafuegos en tu red de VPC con una prioridad inferior a 1000 que denieguen el acceso desde el intervalo de direcciones IP de tu conector.
Si configuras un conector en un proyecto de servicio de VPC compartida, asegúrate de que tus reglas de cortafuegos permitan la entrada desde tu infraestructura sin servidor al conector.
Error de conexión rechazada
Si recibes errores connection refused
o connection timeout
que degradan el rendimiento de la red, es posible que tus conexiones crezcan sin límite en las invocaciones de tu aplicación sin servidor. Para limitar el número máximo de conexiones que se usan por instancia, usa una biblioteca de cliente que admita grupos de conexiones. Para ver ejemplos detallados de cómo usar los grupos de conexiones, consulta Gestionar conexiones de bases de datos.
Error de recurso no encontrado
Cuando eliminas una red de VPC o una regla de cortafuegos, es posible que veas un mensaje similar al siguiente: The resource
"aet-uscentral1-subnet--1-egrfw" was not found.
Para obtener información sobre este error y su solución, consulta el artículo Error "Resource not found" (Recurso no encontrado) en la documentación sobre reglas de cortafuegos de VPC.
Pasos siguientes
- Monitoriza la actividad de los administradores con los registros de auditoría de Acceso a VPC sin servidor.
- Protege los recursos y los datos creando un perímetro de servicio con Controles de Servicio de VPC.
- Usa roles de gestión de identidades y accesos (IAM) asociados a Acceso a VPC sin servidor. Consulta los roles de acceso a VPC sin servidor en la documentación de gestión de identidades y accesos para ver una lista de los permisos asociados a cada rol.
- Conéctate a Memorystore.