Aprovisionar una VPC compartida
La VPC compartida te permite exportar subredes de una red de nube privada virtual (VPC) de un proyecto host a otros proyectos de servicio de la misma organización. Las instancias de los proyectos de servicio pueden tener conexiones de red en las subredes compartidas del proyecto del host. En esta página se describe cómo configurar y usar la VPC compartida, así como algunos preparativos administrativos necesarios para tu organización.
La VPC compartida admite la exportación de subredes de cualquier tipo de pila.
Para obtener información sobre cómo separar proyectos de servicio o eliminar por completo la configuración de VPC compartida, consulta Desaprovisionar una VPC compartida.
A las VPC compartidas también se les llama "XPN" en la API y en la interfaz de línea de comandos.
Cuotas, límites y recursos aptos
Antes de empezar, familiarízate con la VPC compartida y con IAM, en concreto:
Tenga en cuenta las cuotas y los límites que se aplican a la VPC compartida.
Asegúrate de saber qué recursos pueden participar.
Asegúrate de que la API Compute Engine y la facturación estén habilitadas en tu proyecto host y en todos los proyectos de servicio que quieras vincular al proyecto host.
Preparar la organización
Ten en cuenta la siguiente información al preparar tu organización.
Administradores y gestión de identidades y accesos
Para preparar tu organización, configurar proyectos host de VPC compartida y usar redes de VPC compartida, se necesitan al menos tres roles de gestión de identidades y accesos (IAM) diferentes. Para obtener más información sobre cada rol y sobre los roles opcionales, consulta la sección Administradores y gestión de identidades y accesos de la descripción general de la VPC compartida.
Restricciones de las políticas de organización
Las restricciones de las políticas de organización pueden proteger los recursos de la VPC compartida a nivel de proyecto, carpeta u organización. En las siguientes secciones se describe cada política.
Evitar la eliminación por accidente de proyectos del host
Si se elimina por error un proyecto host, se producirán interrupciones en todos los proyectos de servicio vinculados a él. Cuando un proyecto se configura como proyecto host de VPC compartida, se le asigna un bloqueo especial llamado retención. Mientras la retención esté presente, evitará que el proyecto se elimine por error. El bloqueo se elimina automáticamente del proyecto host cuando ya no está configurado para la VPC compartida.
Un usuario con el rol orgpolicy.policyAdmin
puede definir una restricción de política a nivel de organización (constraints/compute.restrictXpnProjectLienRemoval) que limite la eliminación de retenciones a los siguientes roles:
- Usuarios con el rol
roles/owner
oroles/resourcemanager.lienModifier
a nivel de organización - Usuario con roles personalizados que incluyen los permisos
resourcemanager.projects.get
yresourcemanager.projects.updateLiens
a nivel de organización
De esta forma, se evita que un propietario de un proyecto que no tenga el rol roles/owner
a nivel de organización o el rol resourcemanager.lienModifier
a nivel de organización pueda eliminar por error un proyecto host de VPC compartida. Para obtener más información sobre los permisos asociados al rol resourcemanager.lienModifier
, consulta el artículo Colocar un alias en un proyecto de la documentación de Resource Manager.
Basta con efectuar estos pasos una sola vez para restringir la eliminación de retenciones, ya que las políticas de organización se aplican a todos los proyectos de esta.
Autentícate en
gcloud
como administrador de la organización o como principal de IAM con el rolorgpolicy.policyAdmin
. SustituyeORG_ADMIN
por el nombre de un administrador de la organización:gcloud auth login ORG_ADMIN
Para determinar el número de ID de tu organización, consulta el resultado de este comando.
gcloud organizations list
Aplica la política
compute.restrictXpnProjectLienRemoval
en tu organización ejecutando este comando. SustituyeORG_ID
por el número que has determinado en el paso anterior.gcloud resource-manager org-policies enable-enforce \ --organization ORG_ID compute.restrictXpnProjectLienRemoval
Cierra la sesión de
gcloud
cuando hayas terminado de realizar tareas como administrador de la organización para proteger tu cuenta.gcloud auth revoke ORG_ADMIN
Restringir las asociaciones de proyectos del host
De forma predeterminada, un administrador de VPC compartida puede vincular un proyecto que no sea del host a cualquier proyecto del host de la misma organización. Un administrador de políticas de organización puede limitar el conjunto de proyectos host a los que se puede adjuntar un proyecto no host o proyectos no host de una carpeta u organización. Para obtener más información, consulta la constraints/compute.restrictSharedVpcHostProjects
restricción.
Restringe las subredes del proyecto del host que puede usar un proyecto del servicio
De forma predeterminada, después de configurar la VPC compartida, las entidades de gestión de identidades y accesos de los proyectos de servicio pueden usar cualquier subred del proyecto host si tienen los permisos de gestión de identidades y accesos adecuados.
Además de gestionar los permisos de usuarios concretos, un administrador de políticas de organización puede definir una política para determinar el conjunto de subredes a las que puede acceder un proyecto concreto o los proyectos de una carpeta u organización.
Para obtener más información, consulta la restricción constraints/compute.restrictSharedVpcSubnetworks
.
Evitar el cierre accidental de proyectos host
Si se desconecta la facturación de una red de VPC compartida, se pueden cerrar por completo todos los recursos dependientes, incluidos los proyectos de servicio. Para evitar que se cierre por error una VPC compartida debido a que la facturación esté inactiva o inhabilitada, protege el vínculo entre el proyecto host y su cuenta de facturación.
Nombrar administradores de la VPC compartida
Un administrador de la organización puede conceder a uno o varios principales de gestión de identidades y accesos los roles Administrador de VPC compartida y Administrador de gestión de identidades y accesos de proyectos.
El rol Administrador de gestión de identidades y accesos del proyecto otorga a los administradores de VPC compartida permiso para compartir todas las subredes actuales y futuras, no solo subredes concretas. Esta concesión crea un enlace a nivel de organización o carpeta, no a nivel de proyecto. Por lo tanto, las entidades principales de gestión de identidades y accesos deben definirse en la organización, no solo en un proyecto de la organización.
Consola
Para otorgar el rol Administrador de VPC compartida a nivel de organización
Inicia sesión en la Google Cloud consola como administrador de la organización y, a continuación, ve a la página Gestión de identidades y accesos.
En el menú de proyectos, selecciona tu organización.
Si seleccionas un proyecto, el menú Roles muestra entradas incorrectas.
Haz clic en Añadir.
Introduce las direcciones de correo de los nuevos directores.
En el menú Roles, selecciona Compute Engine > Administrador de VPC compartidas de Compute.
Haz clic en Añadir otro rol.
En el desplegable Roles, selecciona Administrador de recursos > Administrador de IAM de proyectos.
Haz clic en Guardar.
Para conceder el rol Administrador de VPC compartida a nivel de carpeta
Inicia sesión en la Google Cloud consola como administrador de la organización y, a continuación, ve a la página Gestión de identidades y accesos.
En el menú del proyecto, selecciona la carpeta.
Si seleccionas un proyecto o una organización, las opciones que verás no serán correctas.
Haz clic en Añadir.
Introduce las direcciones de correo de los nuevos directores.
En Seleccionar un rol, selecciona Compute Engine > Administrador de VPC compartidas de Compute.
Haz clic en Añadir otro rol.
En el menú Roles, selecciona Administrador de recursos > Administrador de IAM de proyectos.
Haz clic en Añadir otro rol.
En el menú Roles, selecciona Resource Manager > Compute Network Viewer.
Haz clic en Guardar.
gcloud
Autentícate en
gcloud
como administrador de la organización. SustituyeORG_ADMIN
por el nombre de un administrador de la organización:gcloud auth login ORG_ADMIN
Para determinar el número de ID de tu organización, consulta el resultado de este comando.
gcloud organizations list
Para asignar el rol Administrador de VPC compartida a nivel de organización, sigue estos pasos:
Aplica el rol Administrador de VPC compartida a una entidad de IAM que ya exista. Sustituye
ORG_ID
por el número de ID de la organización del paso anterior yEMAIL_ADDRESS
por la dirección de correo del usuario al que vas a conceder el rol Administrador de VPC compartida.gcloud organizations add-iam-policy-binding ORG_ID \ --member='user:EMAIL_ADDRESS' \ --role="roles/compute.xpnAdmin"
gcloud organizations add-iam-policy-binding ORG_ID \ --member='user:EMAIL_ADDRESS' \ --role="roles/resourcemanager.projectIamAdmin"
Para asignar el rol Administrador de VPC compartida a nivel de carpeta, haz lo siguiente:
Para determinar el ID de tu carpeta, consulta el resultado de este comando.
gcloud resource-manager folders list --organization=ORG_ID
Aplica el rol Administrador de VPC compartida a una entidad de IAM que ya exista. Sustituye
ORG_ID
por el número de ID de la organización del paso anterior yEMAIL_ADDRESS
por la dirección de correo del usuario al que vas a conceder el rol de administrador de VPC compartida.gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \ --member='user:EMAIL_ADDRESS' \ --role="roles/compute.xpnAdmin"
gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \ --member='user:EMAIL_ADDRESS' \ --role="roles/resourcemanager.projectIamAdmin"
gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \ --member='user:EMAIL_ADDRESS' \ --role="roles/compute.networkViewer"
Revoca el token de tu cuenta de administrador de organización en la herramienta de línea de comandos
gcloud
cuando hayas terminado de realizar tareas para proteger tu cuenta.gcloud auth revoke ORG_ADMIN
API
Para asignar el rol Administrador de VPC compartida a nivel de organización, sigue este procedimiento:
Determina el número de ID de tu organización.
POST https://cloudresourcemanager.googleapis.com/v1/organizations
Describe y registra los detalles de la política de tu organización.
POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
Sustituye
ORG_ID
por el ID de tu organización.Asigna el rol Administrador de VPC compartida.
POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ "user:EMAIL_ADDRESS" ], "role": "roles/compute.xpnAdmin" }, { "members": [ "user:EMAIL_ADDRESS" ], "role": "roles/resourcemanager.projectIamAdmin" } ], "etag": "ETAG", "version": 1, ...other existing policy details }
Haz los cambios siguientes:
ORG_ID
: el ID de la organización que contiene el usuario al que vas a asignar el rol de administrador de VPC compartida.EMAIL_ADDRESS
: la dirección de correo del usuario.ETAG
: un identificador único que obtuvo cuando describió la política actual. Evita colisiones si se envían varias solicitudes de actualización al mismo tiempo.
Para obtener más información, consulta el método
organizations.setIamPolicy
.
Para asignar el rol Administrador de VPC compartida a nivel de carpeta, usa la siguiente solicitud:
Determina el número de ID de tu organización.
POST https://cloudresourcemanager.googleapis.com/v1/organizations
Busca el ID de tu carpeta.
GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
Sustituye
ORG_ID
por el ID de tu organización.Describe y registra los detalles de la política de carpetas actual.
POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
Sustituye
FOLDER_ID
por el ID de tu carpeta.Asigna el rol Administrador de VPC compartida.
POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ "user:EMAIL_ADDRESS" ], "role": "roles/compute.xpnAdmin" }, { "members": [ "user:EMAIL_ADDRESS" ], "role": "roles/resourcemanager.projectIamAdmin" }, { "members": [ "user:EMAIL_ADDRESS" ], "role": "roles/compute.networkViewer" } ], "etag": "ETAG", "version": 1, ...other existing policy details }
Haz los cambios siguientes:
FOLDER_ID
: el ID de la organización que contiene el usuario al que vas a conceder el rol Administrador de VPC compartida.EMAIL_ADDRESS
: la dirección de correo del usuario.ETAG
: identificador único que ha obtenido al describir la política actual. Evita colisiones si se envían varias solicitudes de actualización al mismo tiempo.
Para obtener más información, consulta el método
folders.setIamPolicy
.
Configurar VPC compartida
Todas las tareas que se describen en esta sección debe realizarlas un administrador de VPC compartidas.
Habilitar proyectos del host
En una organización, los administradores de VPC compartida pueden designar proyectos como proyectos host de VPC compartida, sujetos a cuotas y límites, siguiendo este procedimiento.
Los administradores de VPC compartida también pueden crear y eliminar proyectos si tienen los roles Creador de proyectos y Eliminador de proyectos (roles/resourcemanager.projectCreator
y roles/resourcemanager.projectDeleter
) en tu organización.
Cuando habilitas un proyecto del host, los recursos de red del proyecto no se comparten automáticamente con los proyectos de servicio. Debes vincular proyectos de servicio al proyecto del host para compartir las redes y subredes seleccionadas con los proyectos de servicio.
Consola
Si aún no tienes el rol Administrador de VPC compartidas de Compute (roles/compute.xpnAdmin
), no podrás ver esta página en la consola de Google Cloud .
En la Google Cloud consola, ve a la página VPC compartida.
Inicia sesión como administrador de VPC compartida.
En el selector de proyectos, selecciona el proyecto que quieras habilitar como proyecto host de VPC compartida.
Haz clic en Configurar VPC compartida.
En la página siguiente, haga clic en Guardar y continuar en Habilitar proyecto host.
En Seleccionar subredes, efectúa los pasos siguientes:
- Haz clic en Compartir todas las subredes (permisos de nivel de proyecto) si necesitas compartir todas las subredes actuales y futuras de las redes de VPC del proyecto host con los proyectos de servicio y los administradores de proyectos de servicio especificados en los pasos siguientes.
- Haz clic en Subredes concretas (permisos de nivel de subred) si necesitas compartir de forma selectiva subredes de las redes de VPC del proyecto host con proyectos de servicio y administradores de proyectos de servicio. A continuación, selecciona Subredes que compartir.
Haz clic en Continuar.
Se muestra la siguiente pantalla.En Nombres de los proyectos, especifica los proyectos de servicio que quieras vincular al proyecto del host. Ten en cuenta que, al asociar proyectos de servicio, no se definen administradores de proyectos de servicio. Esto se hace en el paso siguiente.
En la sección Seleccionar usuarios según la función, añade administradores de proyectos de servicio. A estos usuarios se les asignará el rol de gestión de identidades y accesos
compute.networkUser
para las subredes compartidas. Solo los administradores del proyecto de servicio pueden crear recursos en las subredes del proyecto del host de la VPC compartida.Haz clic en Guardar.
gcloud
Autentícate en
gcloud
como administrador de VPC compartida. SustituyeSHARED_VPC_ADMIN
por el nombre del administrador de VPC compartida:gcloud auth login SHARED_VPC_ADMIN
Habilita la VPC compartida en el proyecto que quieras convertir en proyecto host. Sustituye
HOST_PROJECT_ID
por el ID del proyecto.gcloud compute shared-vpc enable HOST_PROJECT_ID
Confirma que el proyecto aparece como proyecto host de tu organización. Sustituye
ORG_ID
por el ID de tu organización (determinado porgcloud organizations list
).gcloud compute shared-vpc organizations list-host-projects ORG_ID
Si solo necesitas habilitar un proyecto host, puedes cerrar sesión en
gcloud
para proteger las credenciales de tu cuenta de administrador de la VPC compartida. De lo contrario, sáltate este paso y sigue los pasos para asociar proyectos de servicio.gcloud auth revoke SHARED_VPC_ADMIN
API
Habilita la VPC compartida en el proyecto con credenciales que tengan permisos de administrador de VPC compartida.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
Sustituye
HOST_PROJECT_ID
por el ID del proyecto que será el proyecto host de la VPC compartida.Para obtener más información, consulta el método
projects.enableXpnHost
.Confirma que el proyecto aparece como proyecto host.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
Sustituye
HOST_PROJECT_ID
por el ID del proyecto host de la VPC compartida.Para obtener más información, consulta el método
projects.listXpnHosts
.
Terraform
Puedes usar un recurso de Terraform para habilitar un proyecto del host.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Vincular proyectos de servicio
Un proyecto de servicio debe vincularse a un proyecto del host para que sus administradores puedan usar la VPC compartida. Un administrador de VPC compartida debe seguir estos pasos para completar la conexión.
Un proyecto de servicio solo se puede vincular a un proyecto del host, pero un proyecto del host permite varias vinculaciones de proyectos de servicio. Para obtener más información, consulta los límites específicos de la VPC compartida en la página de cuotas de VPC.
Consola
- Inicia sesión en la consola de Google Cloud como administrador de VPC compartida.
- En la Google Cloud consola, ve a la página VPC compartida.
Ve a la página VPC compartida - Haz clic en la pestaña Proyectos vinculados.
- En la pestaña Proyectos adjuntos, haz clic en el botón Adjuntar proyectos.
- Marca las casillas de los proyectos de servicio que quieras adjuntar en la sección Nombres de proyectos. Ten en cuenta que, al asociar proyectos de servicio, no se definen administradores de proyectos de servicio. Esto se hace en el paso siguiente.
- En la sección Permisos de red VPC, selecciona los roles cuyos
principales obtendrán el rol
compute.networkUser
. A las entidades de gestión de identidades y accesos se les asigna el rol Usuario de red en todo el proyecto del host o en determinadas subredes del proyecto del host, en función del modo de compartir la red de VPC. Estos principales se conocen como administradores de proyectos de servicio en sus respectivos proyectos de servicio. - En la sección Modo de uso compartido de la red de VPC, seleccione una de las siguientes opciones:
- Haz clic en Compartir todas las subredes (permisos de nivel de proyecto) para compartir todas las subredes actuales y futuras de las redes de VPC del proyecto host con todos los proyectos de servicio y administradores de proyectos de servicio.
- Haz clic en Subredes concretas (permisos de nivel de subred) si necesitas compartir de forma selectiva subredes de redes de VPC del proyecto host con proyectos de servicio y administradores de proyectos de servicio. A continuación, selecciona Subredes que compartir.
- Haz clic en Guardar.
gcloud
Si aún no lo has hecho, autentícate en
gcloud
como administrador de VPC compartida. SustituyeSHARED_VPC_ADMIN
por el nombre del administrador de VPC compartida:gcloud auth login SHARED_VPC_ADMIN
Vincular un proyecto del servicio a un proyecto del host que se haya habilitado previamente. Sustituye
SERVICE_PROJECT_ID
por el ID del proyecto de servicio yHOST_PROJECT_ID
por el ID del proyecto host.gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \ --host-project HOST_PROJECT_ID
Confirma que se ha vinculado el proyecto de servicio.
gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
También puedes enumerar los proyectos de servicio que están vinculados al proyecto host:
gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
Si solo necesitas adjuntar un proyecto de servicio, puedes cerrar sesión en
gcloud
para proteger las credenciales de tu cuenta de administrador de VPC compartida. De lo contrario, omite este paso y define administradores de proyectos de servicio para todas las subredes o para algunas subredes.gcloud auth revoke SHARED_VPC_ADMIN
API
Vincula un proyecto de servicio al proyecto host de la VPC compartida.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource { "xpnResource": { "id": "SERVICE_PROJECT" } }
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SERVICE_PROJECT
: el ID del proyecto de servicio que se va a adjuntar.
Para obtener más información, consulta el método
projects.enableXpnResource
.Confirma que los proyectos del servicio están vinculados al proyecto del host.
GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.
Para obtener más información, consulta el método
projects.getXpnResources
.
Terraform
Puedes usar un recurso de Terraform para adjuntar un proyecto de servicio.
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Administradores de proyectos de servicio para todas las subredes
Un administrador de VPC compartida puede asignar un principal de IAM de un proyecto de servicio para que sea administrador del proyecto de servicio con acceso a todas las subredes del proyecto del host. Los administradores de proyectos de servicio de este tipo tienen asignado el rol de compute.networkUser
para todo el proyecto host. Esto significa que tienen acceso a todas las subredes definidas y futuras del proyecto host.
Un usuario que tenga el rol compute.networkUser
en el proyecto host puede ver todas las subredes de los proyectos de servicio vinculados.
Consola
Para definir un principal de IAM de un proyecto de servicio como administrador del proyecto de servicio con acceso a todas las subredes de un proyecto host mediante laGoogle Cloud consola, consulta la sección Asociar proyectos de servicio.
gcloud
En estos pasos se explica cómo definir un principal de gestión de identidades y accesos de un proyecto de servicio como administrador de proyecto de servicio con acceso a todas las subredes de un proyecto de host. Antes de poder seguir estos pasos, debes habilitar un proyecto del host y vincular el proyecto de servicio al proyecto del host.
Si aún no lo has hecho, autentícate en
gcloud
como administrador de VPC compartida. SustituyeSHARED_VPC_ADMIN
por el nombre del administrador de VPC compartida:gcloud auth login SHARED_VPC_ADMIN
Crea un enlace de política para convertir un principal de gestión de identidades y accesos del proyecto de servicio en administrador del proyecto de servicio. Sustituye
HOST_PROJECT_ID
por el ID del proyecto host ySERVICE_PROJECT_ADMIN
por la dirección de correo del usuario administrador del proyecto de servicio.gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member "user:SERVICE_PROJECT_ADMIN" \ --role "roles/compute.networkUser"
Puedes especificar diferentes tipos de principales cambiando el formato del argumento
--member
:- Usa
group:
para especificar un grupo de Google (por dirección de correo electrónico) como principal. - Usa
domain:
para especificar un dominio de Google como principal. - Usa
serviceAccount:
para especificar una cuenta de servicio. Consulta Cuentas de servicio como administradores de proyectos de servicio para obtener más información sobre este caso práctico.
- Usa
Repite el paso anterior con cada administrador de proyecto de servicio adicional que quieras definir.
Cuando hayas terminado de definir los administradores del proyecto de servicio, puedes cerrar sesión en
gcloud
para proteger las credenciales de tu cuenta de administrador de VPC compartida.gcloud auth revoke SHARED_VPC_ADMIN
API
Describe y registra los detalles de la política de tu proyecto. Necesitarás la política y el valor
etag
.POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
Sustituye
HOST_PROJECT_ID
por el ID del proyecto host de la VPC compartida.Crea un enlace de política para designar a las entidades de gestión de identidades y accesos del proyecto de servicio como administradores del proyecto de servicio.
POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ PRINCIPAL, ...additional principals ], "role": "roles/compute.networkUser" }, ], "etag": "ETAG", "version": 1, ...other existing policy details }
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host que contiene la red de VPC compartida.PRINCIPAL
: una identidad a la que se asocia el rol, como un usuario, un grupo, un dominio o una cuenta de servicio. Para obtener más información, consulta el campomembers
en la documentación de Resource Manager.ETAG
: identificador único que ha obtenido al describir la política actual. Evita colisiones si se envían varias solicitudes de actualización al mismo tiempo.
Para obtener más información, consulta el método
projects.setIamPolicy
.
Administradores de proyectos de servicio para algunas subredes
Un administrador de VPC compartida puede asignar un principal de IAM de un proyecto de servicio para que sea un administrador del proyecto de servicio con acceso solo a algunas de las subredes del proyecto host. Esta opción ofrece una forma más detallada de definir administradores de proyectos de servicio, ya que les concede el rol compute.networkUser
solo para algunas subredes del proyecto host.
Un usuario que tenga el rol compute.networkUser
en el proyecto host puede ver todas las subredes de los proyectos de servicio vinculados.
Consola
Para definir un principal de IAM de un proyecto de servicio como administrador del proyecto de servicio con acceso solo a algunas subredes de un proyecto host mediante la consolaGoogle Cloud , consulta la sección Asociar proyectos de servicio.
gcloud
En estos pasos se explica cómo definir principales de gestión de identidades y accesos de un proyecto de servicio como administradores del proyecto de servicio con acceso solo a algunas subredes de un proyecto host. Para definirlos, debes habilitar un proyecto del host y vincular el proyecto de servicio al proyecto del host.
Si aún no lo has hecho, autentícate en
gcloud
como administrador de VPC compartida. SustituyeSHARED_VPC_ADMIN
por el nombre del administrador de VPC compartida:gcloud auth login SHARED_VPC_ADMIN
Elige la subred del proyecto host a la que deben tener acceso los administradores del proyecto de servicio. Obtener su política de gestión de identidades y accesos actual en formato JSON. Sustituye
SUBNET_NAME
por el nombre de la subred del proyecto host yHOST_PROJECT_ID
por el ID del proyecto host.gcloud compute networks subnets get-iam-policy SUBNET_NAME \ --region SUBNET_REGION \ --project HOST_PROJECT_ID \ --format json
Copia el resultado de JSON obtenido en el paso anterior y guárdalo en un archivo. Para que las instrucciones sean claras, en estos pasos se guarda en un archivo llamado
subnet-policy.json
.Modifica el archivo
subnet-policy.json
y añade las entidades de gestión de identidades y accesos que se convertirán en administradores del proyecto de servicio con acceso a la subred. Sustituye cadaSERVICE_PROJECT_ADMIN
por la dirección de correo de un usuario de IAM del proyecto de servicio.{ "bindings": [ { "members": [ "user:[SERVICE_PROJECT_ADMIN]", "user:[SERVICE_PROJECT_ADMIN]" ], "role": "roles/compute.networkUser" } ], "etag": "[ETAG_STRING]" }
Ten en cuenta que puedes especificar diferentes tipos de principales de IAM (que no sean usuarios) en la política:
- Cambia
user:
porgroup:
para especificar un grupo de Google (por dirección de correo electrónico) como principal. - Cambia
user:
pordomain:
para especificar un dominio de Google como principal. - Usa
serviceAccount:
para especificar una cuenta de servicio. Consulta Cuentas de servicio como administradores de proyectos de servicio para obtener más información sobre este caso práctico.
- Cambia
Actualiza la vinculación de la política de la subred con el contenido del archivo
subnet-policy.json
.gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \ --region SUBNET_REGION \ --project HOST_PROJECT_ID
Cuando hayas terminado de definir los administradores del proyecto de servicio, puedes cerrar sesión en
gcloud
para proteger las credenciales de tu cuenta de administrador de VPC compartida.gcloud auth revoke SHARED_VPC_ADMIN
API
Describe y registra los detalles de tu política de subred. Necesitarás la política y el valor
etag
.GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host que contiene la red de VPC compartida.SUBNET_NAME
: el nombre de la subred que se va a compartir.SUBNET_REGION
: la región en la que se encuentra la subred.
Concede a los administradores del proyecto de servicio acceso a las subredes del proyecto del host actualizando la política de subred.
POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ PRINCIPAL, ...additional principals ], "role": "roles/compute.networkUser" }, ], "etag": "ETAG", "version": 1, ...other existing policy details }
Haz los cambios siguientes:
ETAG
: identificador único que ha obtenido al describir la política actual. Evita colisiones si se envían varias solicitudes de actualización al mismo tiempo.HOST_PROJECT_ID
: el ID del proyecto host que contiene la red de VPC compartida.PRINCIPAL
: una identidad a la que se asocia el rol, como un usuario, un grupo, un dominio o una cuenta de servicio. Para obtener más información, consulta el campomembers
en la documentación de Resource Manager.SUBNET_NAME
: el nombre de la subred que se va a compartir.SUBNET_REGION
: la región en la que se encuentra la subred.
Para obtener más información, consulta el método
subnetworks.setIamPolicy
.
Cuentas de servicio como administradores de proyectos de servicio
Un administrador de VPC compartidas puede definir cuentas de servicio de proyectos de servicio como administradores de proyecto de servicio. En esta sección se muestra cómo definir dos tipos diferentes de cuentas de servicio como administradores de proyectos de servicio:
Cuentas de servicio gestionadas por los usuarios con este formato:
USER_ID
@SERVICE_PROJECT_ID
.iam.gserviceaccount.comLa cuenta de servicio de las APIs de Google tiene este formato:
SERVICE_PROJECT_NUMBER
@cloudservices.gserviceaccount.com
El rol Administrador de proyecto de servicio (compute.networkUser
) se puede conceder para
todas las subredes o
solo algunas subredes del proyecto del host. Sin embargo, para simplificar las instrucciones, en esta sección solo se muestra cómo definir cada uno de los dos tipos de cuentas de servicio como administradores del proyecto de servicio de todas las subredes del proyecto host.
Cuentas de servicio administradas por el usuario como administradores de proyectos de servicio
En estas instrucciones se describe cómo definir una cuenta de servicio administrada por el usuario como administrador de proyectos de servicio para todas las subredes del proyecto del host de VPC compartida.
Consola
- Inicia sesión en la consola de Google Cloud como administrador de VPC compartida.
- En la Google Cloud consola, ve a la página Configuración.
Ve a la página Configuración - Cambia al proyecto de servicio que contiene la cuenta de servicio que se debe definir como administrador del proyecto de servicio.
- Copia el ID de proyecto del proyecto de servicio. Para mayor claridad, en este procedimiento se hace referencia al ID del proyecto de servicio como
SERVICE_PROJECT_ID
. - Cambia el proyecto al proyecto del host de VPC compartido.
- Ve a la página Gestión de identidades y accesos de la Google Cloud consola.
Ir a la página de gestión de identidades y accesos - Haz clic en Añadir.
- Añade
SERVICE_ACCOUNT_NAME
@SERVICE_PROJECT_ID
.iam.gserviceaccount.com al campo Principales, sustituyendoSERVICE_ACCOUNT_NAME
por el nombre de la cuenta de servicio. - En el menú Roles, selecciona Compute Engine > Usuario de red de Compute.
- Haz clic en Añadir.
gcloud
Si aún no lo has hecho, autentícate en
gcloud
como administrador de VPC compartida. SustituyeSHARED_VPC_ADMIN
por el nombre del administrador de VPC compartida:gcloud auth login SHARED_VPC_ADMIN
Si no sabes el ID del proyecto de servicio, puedes listar todos los proyectos de tu organización. En esta lista se muestra el ID de cada proyecto.
gcloud projects list
Crea un enlace de política para convertir la cuenta de servicio en administrador del proyecto de servicio. Sustituye
HOST_PROJECT_ID
por el ID del proyecto host,SERVICE_ACCOUNT_NAME
por el nombre de la cuenta de servicio ySERVICE_PROJECT_ID
por el ID del proyecto de servicio.gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
API
Describe y registra los detalles de la política de tu proyecto. Necesitarás la política y el valor
etag
.POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
Sustituye
HOST_PROJECT_ID
por el ID del proyecto host de la VPC compartida.Crea un enlace de política para designar cuentas de servicio como administradores de proyectos de servicio.
POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com", ...include additional service accounts ], "role": "roles/compute.networkUser" }, ], "etag": "ETAG", "version": 1, ...other existing policy details }
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host que contiene la red de VPC compartida.SERVICE_ACCOUNT_NAME
: el nombre de la cuenta de servicio.SERVICE_PROJECT_ID
: el ID del proyecto de servicio que contiene la cuenta de servicio.ETAG
: identificador único que ha obtenido al describir la política actual. Evita colisiones si se envían varias solicitudes de actualización al mismo tiempo.
Para obtener más información, consulta el método
projects.setIamPolicy
.
Cuenta de servicio de las APIs de Google como administrador de proyectos de servicio
En estas instrucciones se describe cómo definir la cuenta de servicio de las APIs de Google como administrador del proyecto de servicio de todas las subredes del proyecto host de la VPC compartida. Para usar grupos de instancias gestionados con una VPC compartida, es necesario que la cuenta de servicio de las APIs de Google sea administrador del proyecto de servicio, ya que este tipo de cuenta de servicio realiza tareas como la creación de instancias. Para obtener más información sobre esta relación, consulta Grupos de instancias gestionadas e IAM.
Consola
- Inicia sesión en la consola de Google Cloud como administrador de VPC compartida.
- En la Google Cloud consola, ve a la página Configuración.
Ve a la página Configuración - Cambia al proyecto de servicio que contiene la cuenta de servicio que se debe definir como administrador del proyecto de servicio.
- Copia el número del proyecto de servicio. Para que las instrucciones sean claras, en este procedimiento se hace referencia al número del proyecto de servicio como
SERVICE_PROJECT_NUMBER
. - Cambia el proyecto al proyecto del host de VPC compartido.
- Ve a la página Gestión de identidades y accesos de la Google Cloud consola.
Ir a la página de gestión de identidades y accesos - Haz clic en Añadir.
- Añade
SERVICE_PROJECT_NUMBER
@cloudservices.gserviceaccount.com al campo Miembros. - En el menú Roles, selecciona Compute Engine > Usuario de red de Compute.
- Haz clic en Añadir.
gcloud
Si aún no lo has hecho, autentícate en
gcloud
como administrador de VPC compartida. SustituyeSHARED_VPC_ADMIN
por el nombre del administrador de VPC compartida:gcloud auth login SHARED_VPC_ADMIN
Determina el número del proyecto de servicio. Para mayor claridad, en este procedimiento se hace referencia al número del proyecto de servicio como
SERVICE_PROJECT_NUMBER
. SustituyeSERVICE_PROJECT_ID
por el ID del proyecto de servicio.gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
Si no sabes el ID del proyecto de servicio, puedes enumerar todos los proyectos de tu organización. En esta lista se muestra el número de proyecto de cada uno.
gcloud projects list
Crea un enlace de política para convertir la cuenta de servicio en administrador del proyecto de servicio. Sustituye
HOST_PROJECT_ID
por el ID del proyecto del host ySERVICE_PROJECT_NUMBER
por el número del proyecto de servicio.gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \ --role "roles/compute.networkUser"
API
Describe y registra los detalles de la política de tu proyecto. Necesitarás la política y el valor
etag
.POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
Sustituye
HOST_PROJECT_ID
por el ID del proyecto host de la VPC compartida.Busca tu proyecto para encontrar su número.
GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
Sustituye
SERVICE_PROJECT_ID
por el ID del proyecto de servicio en el que se encuentra la cuenta de servicio.Crea un enlace de política para designar cuentas de servicio como administradores de proyectos de servicio.
POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy { "bindings": [ ...copy existing bindings { "members": [ "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" ], "role": "roles/compute.networkUser" }, ], "etag": "ETAG", "version": 1, ...other existing policy details }
Haz los cambios siguientes:
HOST_PROJECT_ID
: el ID del proyecto host que contiene la red de VPC compartida.SERVICE_PROJECT_NUMBER
: el número del proyecto de servicio que contiene la cuenta de servicio.ETAG
: identificador único que ha obtenido al describir la política actual. Evita colisiones si se envían varias solicitudes de actualización al mismo tiempo.
Para obtener más información, consulta el método
projects.setIamPolicy
.
Usar VPC compartida
Una vez que un administrador de VPC compartida haya completado las tareas de habilitar un proyecto host, asociar los proyectos de servicio necesarios y definir administradores de proyectos de servicio para todos o algunos de los proyectos de servicio, estos administradores podrán crear instancias, plantillas y balanceadores de carga internos en los proyectos de servicio mediante las subredes del proyecto host.
Todas las tareas que se describen en esta sección debe efectuarlas un administrador de proyectos de servicio.
Es importante tener en cuenta que un administrador de VPC compartida solo concede el rol Usuario de red de Compute (roles/compute.networkUser
) a los administradores del proyecto de servicio, ya sea en todo el proyecto del host o solo en algunas de sus subredes. Los administradores de proyectos de servicio también deben tener los demás roles necesarios para administrar sus respectivos proyectos de servicio. Por ejemplo, un administrador de proyectos de servicio también puede ser propietario del proyecto o, al menos, tener el rol Administrador de instancias de Compute (roles/compute.instanceAdmin
) del proyecto.
Mostrar las subredes disponibles
Los administradores de proyectos de servicio pueden enumerar las subredes a las que se les ha concedido permiso siguiendo estos pasos.
Consola
En la Google Cloud consola, ve a la página VPC compartida.
gcloud
Si aún no lo has hecho, autentícate en
gcloud
como administrador del proyecto de servicio. SustituyeSERVICE_PROJECT_ADMIN
por el nombre del administrador del proyecto de servicio:gcloud auth login SERVICE_PROJECT_ADMIN
Ejecuta el siguiente comando y sustituye
HOST_PROJECT_ID
por el ID del proyecto host de la VPC compartida:gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
En el siguiente ejemplo se muestran las subredes disponibles en el proyecto de host
project-1
:$ gcloud compute networks subnets list-usable --project project-1 PROJECT REGION NETWORK SUBNET RANGE SECONDARY_RANGES project-1 us-west1 net-1 subnet-1 10.138.0.0/20 project-1 us-central1 net-1 subnet-2 10.128.0.0/20 r-1 192.168.2.0/24 r-2 192.168.3.0/24 project-1 us-east1 net-1 subnet-3 10.142.0.0/20
Para obtener más información, consulta el comando list-usable
en la documentación del SDK.
API
Lista de las subredes disponibles en el proyecto del host. Haz la solicitud como administrador del proyecto de servicio.
GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable
Sustituye HOST_PROJECT_ID
por el ID del proyecto host de la VPC compartida.
Para obtener más información, consulta el método subnetworks.listUsable
.
Reservar una dirección IPv4 o IPv6 interna estática
Los administradores de proyectos de servicio pueden reservar una dirección IPv4 o IPv6 interna en una subred de una red de VPC compartida. El objeto de configuración de la dirección IP se crea en el proyecto de servicio, mientras que su valor procede del intervalo de direcciones IPv4 disponibles en la subred compartida elegida.
Para reservar una dirección IP interna independiente en el proyecto de servicio, sigue estos pasos.
Consola
- Configura VPC compartida.
En la Google Cloud consola, ve a la página VPC compartida.
Inicia sesión como administrador de VPC compartida.
Selecciona el proyecto de servicio en el selector de proyectos.
Ve a la página Direcciones IP seleccionando Red de VPC > Direcciones IP.
Haz clic en Reservar dirección IP estática interna.
En el campo Nombre, introduce un nombre para la dirección IP.
En la lista Versión de IP, selecciona la versión de IP que necesites:
- Para reservar una dirección IPv4 interna estática, selecciona IPv4.
- Para reservar una dirección IPv6 interna estática, selecciona IPv6.
Haz clic en el botón Redes compartidas conmigo.
En las listas Red y Subred, selecciona una red VPC y una subred, respectivamente.
Especifica cómo quieres reservar la dirección IP:
- En el caso de las direcciones IPv4, para especificar una dirección IPv4 interna estática que quieras reservar, en Dirección IP estática, selecciona Permitirme elegir y, a continuación, introduce una dirección IP personalizada. De lo contrario, el sistema asignará automáticamente una dirección IPv4 interna estática en la subred.
- En el caso de las direcciones IPv6, el sistema asigna automáticamente una dirección IPv6 interna estática del intervalo de direcciones IPv6 internas de la subred.
Opcional: Si quieres compartir la dirección IPv4 interna estática en diferentes frontends, en Propósito, elige Compartida. La opción predeterminada es No compartido.
Haz clic en Reservar.
gcloud
Si aún no lo has hecho, autentícate en la CLI de Google Cloud como administrador del proyecto de servicio. Sustituye
SERVICE_PROJECT_ADMIN
por el nombre del administrador del proyecto de servicio:gcloud auth login SERVICE_PROJECT_ADMIN
Usa el comando
compute addresses create
.Reserva direcciones IPv4:
gcloud compute addresses create IP_ADDR_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --region=REGION --ip-version=IPV4
Reservar direcciones IPv6:
gcloud compute addresses create IP_ADDR_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --region=REGION --ip-version=IPV6
Haz los cambios siguientes:
IP_ADDR_NAME
: nombre del objeto de dirección IPv4.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.
Puede consultar más detalles sobre cómo crear direcciones IP en la documentación del SDK.
API
Usa el método addresses.insert
.
Reserva una dirección IPv4 interna estática como administrador de proyecto de servicio:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses { "name": "ADDRESS_NAME", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "addressType": "INTERNAL" }
Haz los cambios siguientes:
ADDRESS_NAME
: un nombre para la dirección IP interna reservada.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región en la que se ubicará la dirección IPv4 reservada y la subred compartida.SERVICE_PROJECT_ID
: el ID del proyecto de servicio en el que vas a reservar la dirección IPv4.SUBNET_NAME
: el nombre de la subred compartida.
Para obtener más información, consulta el método addresses.insert
.
Terraform
Puedes usar un bloque de datos de Terraform para especificar la información de la subred del host.
A continuación, usa un recurso de Terraform
para reservar una dirección IPv4 interna estática. Si omite el argumento opcional
address
, se seleccionará y reservará una dirección IPv4 disponible.
Especifica la subred del host:
Reserva una dirección IPv4 de la subred del proyecto host para usarla en el proyecto de servicio:
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Reservar una dirección IPv4 externa estática
Un recurso de un proyecto de servicio puede usar una dirección IPv4 externa estática regional definida en el proyecto de servicio o en el proyecto host. Por lo tanto, un recurso de los proyectos de servicio adjuntos puede usar una dirección IPv4 externa estática regional reservada en el proyecto host.
Reservar una dirección IPv6 externa estática
Los administradores de proyectos de servicio pueden reservar una dirección IPv6 externa estática en un proyecto de servicio. El objeto de configuración de la dirección IPv6 se crea en el proyecto de servicio, mientras que su valor procede del intervalo de direcciones IPv6 disponibles en la subred compartida elegida.
Consola
Puedes reservar una dirección IPv6 externa independiente en el proyecto de servicio mediante la consolaGoogle Cloud :
- Configura VPC compartida.
- En la Google Cloud consola, ve a la página VPC compartida.
Ve a la página VPC compartida - Inicia sesión como administrador de VPC compartida.
- Selecciona el proyecto de servicio en el selector de proyectos.
- Para ir a la página Direcciones IP, selecciona Red de VPC > Direcciones IP.
- Haz clic en Reservar dirección IP estática externa.
- Elige un nombre para la nueva dirección.
- Especifica si el nivel de servicio de red es Premium o Standard. La reserva de direcciones estáticas IPv6 solo se admite en el nivel Premium.
- En Versión de IP, selecciona IPv6.
- Especifica si esta dirección IP es Regional o Global.
- Si vas a reservar una dirección IP estática para un balanceador de carga global, elige Global.
- Si vas a reservar una dirección IP estática para una instancia o para un balanceador de carga regional, elige Regional y, a continuación, selecciona la región en la que quieras crear la dirección.
- Elige lo siguiente:
- Redes de este proyecto: elige esta opción si quieres reservar una dirección IPv6 externa en una subred de la misma red de nube privada virtual (VPC) en la que vas a reservar la dirección IPv6.
- Redes compartidas conmigo: elige esta opción si quieres reservar una dirección IPv6 externa en una subred de una red de VPC compartida.
En función de tu elección, haz lo siguiente:
- Red: la red de VPC
- Subred: la subred desde la que se asignará la dirección IPv6 regional estática.
- Tipo de endpoint: elige Instancia de VM o Balanceador de carga de red.
Opcional: Si has elegido Instancia de VM como tipo de endpoint, selecciona una instancia de VM a la que adjuntar la dirección IPv6.
Haz clic en Reservar.
gcloud
Si aún no lo has hecho, autentícate en
gcloud
como administrador del proyecto de servicio. SustituyeSERVICE_PROJECT_ADMIN
por el nombre del administrador del proyecto de servicio:gcloud auth login SERVICE_PROJECT_ADMIN
Usa el comando
gcloud compute addresses create
:gcloud compute addresses create IP_ADDR_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --region=REGION \ --ip-version=IPV6 \ --endpoint-type=[VM | NETLB]
Haz los cambios siguientes:
IP_ADDR_NAME
: nombre del objeto de dirección IPv6.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET
: el nombre de la subred compartida.REGION
: la región que contiene la subred compartida.
API
Para reservar una dirección IPv6 interna estática como administrador de un proyecto de servicio, usa el método addresses.insert
:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses { "name": "ADDRESS_NAME", "ipVersion": "IPV6", "ipv6EndpointType": "VM|LB", "networkTier": "PREMIUM", "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "addressType": "EXTERNAL" }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio en el que vas a reservar la dirección IPv6.REGION
: la región en la que se encuentran la dirección IPv6 reservada y la subred compartida.ADDRESS_NAME
: nombre de la dirección IPv6 externa estática reservada.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET_NAME
: el nombre de la subred compartida.
Crear una instancia
Ten en cuenta lo siguiente cuando uses una VPC compartida para crear una instancia:
El proceso estándar para crear una instancia implica seleccionar una zona, una red y una subred. La subred y la zona seleccionadas deben estar en la misma región. Cuando un administrador de un proyecto de servicio crea una instancia mediante una subred de una red de VPC compartida, la zona seleccionada para esa instancia debe estar en la misma región que la subred seleccionada.
Cuando creas una instancia con una dirección IPv4 interna estática reservada, la subred y la región ya están seleccionadas cuando se crea la dirección IPv4 estática. En esta sección se muestra un ejemplo de
gcloud
para crear una instancia con una dirección IPv4 interna estática.Los administradores de proyectos de servicio solo pueden crear instancias mediante subredes a las que se les haya concedido permiso. Para determinar qué subredes están disponibles, consulta Listar subredes disponibles.
Cuando Google Cloud recibe una solicitud para crear una instancia en una subred de una red de VPC compartida, comprueba si la entidad de gestión de identidades y accesos que hace la solicitud tiene permiso para usar esa subred compartida. Si no se supera la comprobación, no se creará la instancia y Google Cloud devolverá un error de permisos. Para obtener ayuda, ponte en contacto con el administrador de la VPC compartida.
El tipo de pila de la instancia que crees debe ser compatible con la subred compartida en la que crees la instancia. Para obtener más información, consulta Tipos de subredes. En el caso de las instancias con direcciones IPv6, el tipo de acceso IPv6 de la subred determina si la dirección IPv6 asignada a la instancia es interna o externa.
Consola
- Configura VPC compartida.
En la Google Cloud consola, ve a la página VPC compartida.
Inicia sesión como administrador de VPC compartida.
Selecciona el proyecto de servicio en el selector de proyectos.
Para ir a la página Crear una instancia, selecciona Compute Engine > Instancias de VM > Crear instancia.
Escribe el nombre de la instancia.
En Región, selecciona una región que contenga una subred compartida.
Haz clic en Redes en Opciones avanzadas.
En Interfaces de red, haz clic en el botón de selección Redes compartidas conmigo.
En la lista Subred compartida, selecciona la subred en la que quieras crear la instancia:
- En el caso de una instancia solo IPv4, selecciona una subred solo IPv4 o de doble pila (IPv4 e IPv6).
- En el caso de una instancia de doble pila, selecciona una subred de doble pila con el tipo de acceso IPv6 necesario.
- En el caso de una instancia solo con IPv6, selecciona una subred de doble pila o una subred solo con IPv6 con el tipo de acceso IPv6 necesario.
Seleccione el tipo de pila de IP:
- IPv4 (pila única)
- IPv4 e IPv6 (pila dual)
- IPv6 (pila única)
Especifica cualquier otro parámetro necesario de la instancia.
Haz clic en Crear.
gcloud
Consulta los siguientes ejemplos:
Crea una instancia con una dirección IPv4 interna efímera en una subred compartida de una red de VPC compartida:
gcloud compute instances create INSTANCE_NAME \ --project SERVICE_PROJECT_ID \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --zone ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.ZONE
: una zona de la región especificada.
Crea una instancia con una dirección IPv4 interna estática reservada en una red de VPC compartida:
- Reserva una dirección IPv4 interna estática en el proyecto de servicio del intervalo de direcciones disponibles del proyecto host.
Crea la instancia:
gcloud compute instances create INSTANCE_NAME \ --project SERVICE_PROJECT_ID \ --private-network-ip IP_ADDR_NAME \ --zone ZONE \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.IP_ADDR_NAME
: el nombre de la dirección IP estática.ZONE
: una zona de la misma región queIP_ADDR_NAME
.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida asociada a la dirección IPv4 interna estática.
Crea una instancia con una dirección IPv4 interna efímera y una dirección IPv6 efímera:
gcloud compute instances create INSTANCE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type IPV4_IPV6 \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --zone ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.ZONE
: una zona de la región especificada.
Crea una instancia con una dirección IPv6 externa estática reservada:
gcloud compute instances create INSTANCE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type STACK_TYPE \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --ipv6-address IPV6_ADDRESS \ --external-ipv6-prefix-length=96 \ --ipv6-network-tier PREMIUM \ --zone ZONE
Haz los cambios siguientes:
INSTANCE_NAME
: el nombre de la instancia.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.STACK_TYPE
:IPV4_IPV6
oIPV6_ONLY
(Vista previa), en función de si quieres que la instancia también tenga una dirección IPv4.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.IPV6_ADDRESS
: la dirección IPv6 que se asignará a la VM.ZONE
: una zona de la región especificada.
API
Consulta los siguientes ejemplos:
Para crear una instancia con una dirección IPv4 interna efímera, especifica solo la subred:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances { "machineType": "MACHINE_TYPE", "name": "INSTANCE_NAME", "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "SOURCE_IMAGE" } } ] }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.ZONE
: una zona de la región especificada.MACHINE_TYPE
: un tipo de máquina para la instancia.INSTANCE_NAME
: un nombre para la instancia.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.SOURCE_IMAGE
: una imagen de la instancia.
Para obtener más información, consulta el método
instances.insert
.Para crear una instancia con una dirección IPv4 interna reservada, especifica la subred y el nombre de la dirección IPv4 reservada:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances { "machineType": "MACHINE_TYPE", "name": "INSTANCE_NAME", "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "SOURCE_IMAGE" } } ] }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.ZONE
: una zona de la región especificada.MACHINE_TYPE
: un tipo de máquina para la instancia.INSTANCE_NAME
: un nombre para la instancia.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET_NAME
: el nombre de la subred compartida.ADDRESS_NAME
: el nombre de la dirección IPv4 interna reservada.SOURCE_IMAGE
: una imagen de la instancia.
Para obtener más información, consulta el método
instances.insert
.Para crear una instancia con una dirección IPv4 interna efímera y una dirección IPv6 efímera, especifica la subred y el tipo de pila:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances { "machineType": "MACHINE_TYPE", "name": "INSTANCE_NAME", "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "stackType": "IPV4_IPV6" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "SOURCE_IMAGE" } } ] }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.ZONE
: una zona de la región especificada.MACHINE_TYPE
: un tipo de máquina para la instancia.INSTANCE_NAME
: un nombre para la instancia.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.SOURCE_IMAGE
: una imagen de la instancia.
Para obtener más información, consulta el método
instances.insert
.Para crear una instancia con una dirección IPv6 efímera, especifica la subred y el tipo de pila:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances { "machineType": "MACHINE_TYPE", "name": "INSTANCE_NAME", "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "stackType": "IPV6_ONLY" } ], "disks": [ { "boot": true, "initializeParams": { "sourceImage": "SOURCE_IMAGE" } } ] }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.ZONE
: una zona de la región especificada.MACHINE_TYPE
: un tipo de máquina para la instancia.INSTANCE_NAME
: un nombre para la instancia.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET
: el nombre de la subred compartida.SOURCE_IMAGE
: una imagen de la instancia.
Para obtener más información, consulta el método
instances.insert
.
Terraform
Puedes usar un bloque de datos de Terraform para especificar la información de la subred del host. A continuación, usa un recurso de Terraform para crear una instancia de VM en un proyecto de servicio.
Especifica la subred del host:
Crea una instancia de VM en un proyecto de servicio con una dirección IPv4 efímera de la subred compartida del proyecto host:
Crea una instancia de VM en un proyecto de servicio con una dirección IPv4 estática reservada de la subred compartida del proyecto del host:
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Crear una plantilla de instancia
Ten en cuenta lo siguiente cuando uses una VPC compartida para crear una plantilla de instancia:
El proceso para crear una plantilla de instancia implica seleccionar una red y una subred.
Las plantillas creadas para usarse en una red VPC compartida en modo personalizado deben especificar tanto la red como una subred.
Las plantillas creadas para usarse en una red de VPC compartida en modo automático pueden aplazar opcionalmente la selección de una subred. En estos casos, se selecciona automáticamente una subred en la misma región que cualquier grupo de instancias gestionadas que utilice la plantilla. Las redes en modo automático tienen una subred en cada región por definición.
Cuando una entidad de gestión de identidades y accesos crea una plantilla de instancia,Google Cloud no comprueba los permisos para ver si la entidad puede usar la subred especificada. Esta comprobación de permisos siempre se aplaza hasta que se solicita un grupo de instancias gestionado que usa la plantilla.
El tipo de pila de la plantilla de instancia que crees debe ser compatible con la subred compartida en la que crees la plantilla de instancia. Para obtener más información, consulta Tipos de subredes. En el caso de las instancias con direcciones IPv6, el tipo de acceso IPv6 de la subred determina si la dirección IPv6 asignada a la instancia es interna o externa.
Consola
- Configura VPC compartida.
- En la Google Cloud consola, ve a la página VPC compartida.
Ve a la página VPC compartida - Inicia sesión como administrador de VPC compartida.
- Selecciona el proyecto de servicio en el selector de proyectos.
- Para ir a la página Crear una plantilla de instancia, selecciona Compute Engine > Plantillas de instancia > Crear plantilla de instancia.
- Especifica un nombre para la plantilla de instancia.
- En la sección Opciones avanzadas, haz clic en Redes.
- En la sección Interfaces de red, haz clic en el botón de radio Redes compartidas conmigo.
- En la lista Subred compartida, seleccione la subred en la que quiera crear la plantilla de instancia:
- En el caso de una plantilla de instancia solo IPv4, selecciona una subred solo IPv4 o de doble pila (IPv4 e IPv6).
- En el caso de una plantilla de instancia de doble pila, selecciona una subred de doble pila con el tipo de acceso IPv6 necesario.
- En el caso de una plantilla de instancia solo IPv6, selecciona una subred de doble pila o una subred solo IPv6 con el tipo de acceso IPv6 necesario.
- Selecciona el tipo de pila de IP de la plantilla de instancia:
- IPv4 (pila única)
- IPv4 e IPv6 (pila dual)
- IPv6 (pila única)
- Especifica cualquier otro parámetro necesario de la plantilla de instancia.
- Haz clic en Crear.
gcloud
Crea una plantilla de instancia solo IPv4 para usarla en cualquier subred creada automáticamente de una red de VPC compartida en modo automático:
gcloud compute instance-templates create TEMPLATE_NAME \ --project SERVICE_PROJECT_ID \ --network projects/HOST_PROJECT_ID/global/networks/NETWORK
Haz los cambios siguientes:
TEMPLATE_NAME
: el nombre de la plantilla.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.NETWORK
: el nombre de la red de VPC compartida.
Para crear una plantilla de instancia solo IPv4 para una subred creada manualmente en una red de VPC compartida (en modo automático o personalizado), sigue estos pasos:
gcloud compute instance-templates create TEMPLATE_NAME \ --project SERVICE_PROJECT_ID \ --region REGION \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
Haz los cambios siguientes:
TEMPLATE_NAME
: el nombre de la plantilla.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.REGION
: la región que contiene la subred compartida.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET
: el nombre de la subred compartida.
Crea una plantilla de instancia de pila dual que use una subred en una red de VPC compartida en modo personalizado:
gcloud compute instance-templates create TEMPLATE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type IPV4_IPV6 \ --region REGION \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
Haz los cambios siguientes:
TEMPLATE_NAME
: el nombre de la plantilla.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.REGION
: la región que contiene la subred compartida.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET
: el nombre de la subred compartida.
Crea una plantilla de instancia solo IPv6 que use una subred en una red de VPC compartida en modo personalizado:
gcloud compute instance-templates create TEMPLATE_NAME \ --project SERVICE_PROJECT_ID \ --stack-type IPV6_ONLY \ --region REGION \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
Haz los cambios siguientes:
TEMPLATE_NAME
: el nombre de la plantilla.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.REGION
: la región que contiene la subred compartida.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET
: el nombre de la subred compartida.
API
Para crear una plantilla de instancia solo IPv4 que use cualquier subred creada automáticamente de una red de VPC compartida en modo automático, especifica la red de VPC:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK" } ] ... }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto que contiene la red de VPC compartida.NETWORK
: el nombre de la red de VPC compartida.
Para obtener más información, consulta el método
instanceTemplates.insert
.Para crear una plantilla de instancia solo IPv4 que utilice una subred creada manualmente en una red de VPC compartida (modo automático o personalizado), especifica la subred:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME" } ] ... }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto que contiene la red de VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET_NAME
: el nombre de la subred compartida.
Para obtener más información, consulta el método
instanceTemplates.insert
.Para crear una plantilla de instancia de doble pila que use una subred en una red de VPC compartida en modo personalizado, especifica la subred y el tipo de pila:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "stackType": "IPV4_IPV6" } ] ... }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto que contiene la red de VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET_NAME
: el nombre de la subred compartida.
Para obtener más información, consulta el método
instanceTemplates.insert
.Para crear una plantilla de instancia solo IPv6 que use una subred en una red de VPC compartida en modo personalizado, especifica la subred y el tipo de pila:
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates { "properties": { "networkInterfaces": [ { "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME", "stackType": "IPV6_ONLY" } ] ... }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.HOST_PROJECT_ID
: el ID del proyecto que contiene la red de VPC compartida.REGION
: la región que contiene la subred compartida.SUBNET_NAME
: el nombre de la subred compartida.
Para obtener más información, consulta el método
instanceTemplates.insert
.
Terraform
Puedes usar un bloque de datos de Terraform para especificar la información de la subred del host. A continuación, usa un recurso de Terraform para crear una plantilla de instancia de VM. Las direcciones IPv4 de las VMs proceden de la subred compartida del proyecto del host.
La subred debe estar en la misma región en la que se crearán las instancias de VM.
Especifica la subred del host:
Crea una plantilla de instancia de VM en el proyecto de servicio:
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Crear un grupo de instancias gestionado
Cuando crees un grupo de instancias gestionado con una VPC compartida, ten en cuenta lo siguiente:
Los grupos de instancias gestionados que se usan con VPC compartida requieren que la cuenta de servicio de las APIs de Google sea administrador del proyecto de servicio, ya que esa cuenta de servicio realiza tareas como la creación automática de instancias mediante el autoescalado.
El proceso estándar para crear un grupo de instancias gestionadas implica seleccionar una zona o una región, según el tipo de grupo, y una plantilla de instancia. Los detalles de la red y la subred están vinculados a la plantilla de instancia. Las plantillas de instancia aptas solo pueden hacer referencia a subredes de la misma región que el grupo de instancias gestionado.
Los administradores de proyectos de servicio solo pueden crear grupos de instancias gestionadas cuyos miembros utilicen subredes para las que tengan permiso. Como los detalles de la red y la subred están vinculados a la plantilla de instancia, los administradores del proyecto de servicio solo pueden usar plantillas que hagan referencia a subredes para las que tengan autorización.
Cuando Google Cloud recibe una solicitud para crear un grupo de instancias gestionadas, comprueba si la entidad de gestión de identidades y accesos que hace la solicitud tiene permiso para usar la subred (en la misma región que el grupo) especificada en la plantilla de instancia. Si la comprobación falla, no se crea el grupo de instancias gestionado y Google Cloud devuelve un error:
Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME
.Lista las subredes disponibles para determinar cuáles se pueden usar y ponte en contacto con el administrador de VPC compartida si la cuenta de servicio necesita acceso adicional. Para obtener más información, consulta Cuentas de servicio como administradores de proyectos de servicio.
Para obtener más información, consulta el artículo Crear grupos de instancias gestionadas de la documentación de Compute Engine.
Crear un balanceador de carga HTTP(S)
Hay muchas formas de configurar balanceadores de carga de aplicaciones externos en una red de VPC compartida. Independientemente del tipo de implementación, todos los componentes del balanceador de carga deben estar en la misma organización y en la misma red VPC compartida.
Para obtener más información sobre las arquitecturas de VPC compartida admitidas, consulta lo siguiente:
- Arquitectura de VPC compartida para balanceadores de carga de aplicaciones externos.
- Arquitectura de VPC compartida para balanceadores de carga de aplicaciones internos.
Crear un balanceador de carga de red de paso a través interno
En el siguiente ejemplo se muestra lo que debe tener en cuenta al crear un balanceador de carga de red de pases interno en una red de VPC compartida. Los administradores del proyecto de servicio pueden crear un balanceador de carga de red de paso a través interno que utilice una subred (en el proyecto host) a la que tengan acceso. La regla de reenvío interna del balanceador de carga se define en el proyecto de servicio, pero su referencia de subred apunta a una subred de una red de VPC compartida del proyecto del host.
Antes de crear un balanceador de carga de red interno de tipo pasarela en un entorno de VPC compartida, consulta la arquitectura de VPC compartida.
Consola
Ve a la página Balanceo de carga de la Google Cloud consola.
Ir a la página Balanceo de cargaCrea tu balanceador de carga TCP/UDP interno y haz el siguiente ajuste: en la sección Configurar servicios de frontend, selecciona la subred de VPC compartida que necesites en la sección Redes compartidas por otros proyectos del menú Subred.
Termina de crear el balanceador de carga.
gcloud
Cuando cree la regla de reenvío interna, especifique una subred en el proyecto host con la marca --subnet
:
gcloud compute forwarding-rules create FR_NAME \ --project SERVICE_PROJECT_ID \ --load-balancing-scheme internal \ --region REGION \ --ip-protocol IP_PROTOCOL \ --ports PORT,PORT,... \ --backend-service BACKEND_SERVICE_NAME \ --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \ --address INTERNAL_IP
Haz los cambios siguientes:
FR_NAME
: el nombre de la regla de reenvío.SERVICE_PROJECT_ID
: el ID del proyecto de servicio.REGION
: la región que contiene la subred compartida.IP_PROTOCOL
:TCP
oUDP
, según el protocolo del servicio de backend del balanceador de carga.PORT
: el puerto numérico o la lista de puertos del balanceador de carga.BACKEND_SERVICE_NAME
: el nombre del servicio de backend (ya creado como parte del procedimiento general para crear un balanceador de carga de red de paso a través interno).HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET
: el nombre de la subred compartida.INTERNAL_IP
: una dirección IP interna de la subred compartida (si no se especifica, se seleccionará una disponible).
Para ver más opciones, consulta el comando gcloud compute forwarding-rules create
.
API
Crea la regla de reenvío interna y especifica una subred en el proyecto host.
POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules { "name": "FR_NAME", "IPAddress": "IP_ADDRESS", "IPProtocol": "IP_PROTOCOL", "ports": [ "PORT", ... ], "loadBalancingScheme": "INTERNAL", "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET", "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME", "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME", "networkTier": "PREMIUM" }
Haz los cambios siguientes:
SERVICE_PROJECT_ID
: el ID del proyecto de servicio.REGION
: la región que contiene la subred compartida.FR_NAME
: el nombre de la regla de reenvío.IP_ADDRESS
: una dirección IP interna de la subred compartida.IP_PROTOCOL
:TCP
oUDP
, según el protocolo del servicio de backend del balanceador de carga.PORT
: el puerto numérico o la lista de puertos del balanceador de carga.HOST_PROJECT_ID
: el ID del proyecto host de la VPC compartida.SUBNET
: el nombre de la subred compartida.NETWORK_NAME
: el nombre de la red.BE_NAME
: el nombre del servicio de backend (ya creado como parte del procedimiento general para crear un balanceador de carga de red de paso a través interno).
Para obtener más información, consulta el método forwardingRules.insert
.
Terraform
Puedes usar un bloque de datos de Terraform para especificar la subred del host y la red del host. A continuación, usa un recurso de Terraform para crear la regla de reenvío.
Especifica la red del host:
Especifica la subred del host:
En el proyecto de servicio, crea una regla de reenvío en la red y la subred del proyecto del host:
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.
Siguientes pasos
- Para obtener más información sobre la VPC compartida, consulta VPC compartida.
- Para obtener instrucciones sobre cómo configurar clústeres de Google Kubernetes Engine con una VPC compartida, consulta el artículo Configurar clústeres con una VPC compartida.
- Consulta cómo configurar el acceso a una red de VPC compartida desde Cloud Run, funciones de Cloud Run o el entorno estándar de App Engine.
- Para obtener instrucciones sobre cómo eliminar una configuración de VPC compartida, consulta Dar de baja una VPC compartida.