Configura un balanceador de cargas de aplicaciones externo regional con buckets de Cloud Storage en un entorno de VPC compartida

En este documento, se muestran dos opciones de configuración de muestra para un balanceador de cargas de aplicaciones regional externo en un entorno de VPC compartida con buckets de Cloud Storage:

  • En el primer ejemplo, se crean todos los componentes y backends del balanceador de cargas en un proyecto de servicio.
  • En el segundo ejemplo, se crean los componentes de frontend y el mapa de URL del balanceador de cargas en un proyecto de servicio, mientras que el bucket de backend y los buckets de Cloud Storage del balanceador de cargas se crean en un proyecto de servicio diferente.

Ambos ejemplos requieren la misma configuración inicial para otorgar los roles necesarios y configurar una VPC compartida antes de que puedas comenzar a crear balanceadores de cargas.

Además de las configuraciones de ejemplo mencionadas en este documento, también puedes configurar una implementación de VPC compartida en la que el frontend y el mapa de URL del balanceador de cargas se creen en el proyecto host, y los buckets de backend, junto con los buckets de Cloud Storage, se creen en un proyecto de servicio. Para obtener más información sobre otras arquitecturas válidas de VPC compartida, consulta Arquitecturas de VPC compartida.

Si no deseas usar una red de VPC compartida, consulta Configura un balanceador de cargas de aplicaciones externo regional con buckets de Cloud Storage.

Antes de comenzar

Asegúrate de que tu configuración cumpla con los requisitos.

Crear proyectos de Google Cloud

Crea Google Cloud proyectos para un host y dos proyectos de servicio.

Roles obligatorios

Para obtener los permisos que necesitas para configurar un balanceador de cargas de aplicaciones externo regional en un entorno de VPC compartida con buckets de Cloud Storage, pídele a tu administrador que te otorgue los siguientes roles de IAM :

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Configura un entorno de VPC compartida

Completa los siguientes pasos en el proyecto host para configurar un entorno de VPC compartida:

  1. Configura una red de VPC en modo personalizado.
  2. Configura una subred de solo proxy.
  3. Configura una VPC compartida en el proyecto host.

No es necesario realizar los pasos de esta sección cada vez que quieras crear un balanceador de cargas nuevo. Sin embargo, debes asegurarte de tener acceso a los recursos descritos aquí antes de continuar con la creación del balanceador de cargas.

En este ejemplo, se usan la siguiente red de VPC, región y subred de solo proxy:

  • Red. Es una red de VPC de modo personalizado con el nombre lb-network.

  • Subred para proxies de Envoy. Una subred llamada proxy-only-subnet-us en la región us-east1 usa 10.129.0.0/23 para su rango de IP principal.

Configura una red de VPC en modo personalizado

Console

  1. En la consola de Google Cloud , ve a la página Redes de VPC.

    Ir a Redes de VPC

  2. Haz clic en Crear red de VPC.

  3. En Nombre, ingresa lb-network.

  4. Haz clic en Crear.

gcloud

  1. Crea una red de VPC personalizada, llamada lb-network, con el comando gcloud compute networks create.

      gcloud compute networks create lb-network \
          --subnet-mode=custom \
          --project=HOST_PROJECT_ID
    

    Reemplaza HOST_PROJECT_ID por elGoogle Cloud ID del proyecto asignado al proyecto que está habilitado como proyecto host en un entorno de VPC compartida.

Configura una subred de solo proxy

Una subred de solo proxy proporciona un conjunto de direcciones IP que Google Cloud usa para ejecutar proxies de Envoy en tu nombre. Los proxies finalizan las conexiones del cliente y crean conexiones nuevas a los backends.

Todos los balanceadores de cargas regionales basados en Envoy usan esta subred de solo proxy en la misma región de la red de VPC. Solo puede haber una subred de solo proxy activa para un propósito determinado, por región y por red.

Console

  1. En la consola de Google Cloud , ve a la página Redes de VPC.

    Ir a las redes de VPC

  2. Haz clic en el nombre de la red de VPC que creaste.

  3. En la pestaña Subred, haz clic en Agregar subred.

  4. Ingresa la siguiente información:

    • Nombre: proxy-only-subnet-us
    • Región: us-east1
    • Propósito: Proxy administrado regional
    • Rangos de direcciones IP: 10.129.0.0/23
  5. Haz clic en Agregar.

gcloud

  1. Crea una subred de solo proxy en la región us-east1 con el comando gcloud compute networks subnets create.

    gcloud compute networks subnets create proxy-only-subnet-us \
        --purpose=REGIONAL_MANAGED_PROXY \
        --role=ACTIVE \
        --region=us-east1 \
        --network=lb-network \
        --range=10.129.0.0/23 \
        --project=HOST_PROJECT_ID
    

    Reemplaza HOST_PROJECT_ID por elGoogle Cloud ID del proyecto asignado al proyecto host.

Configura una VPC compartida en el proyecto host

Puedes habilitar un proyecto host de VPC compartida y conectar proyectos de servicio al proyecto host para que los proyectos de servicio puedan usar la red de VPC compartida. Para configurar una VPC compartida en el proyecto host, consulta las siguientes páginas:

Después de completar los pasos anteriores, puedes realizar una de las siguientes configuraciones:

Configura un balanceador de cargas en el proyecto de servicio

En este ejemplo, se crea un balanceador de cargas de aplicaciones regional externo en el que todos los componentes de balanceo de cargas (regla de reenvío, proxy de destino, mapa de URL y bucket de backend) y los buckets de Cloud Storage se crean en el proyecto de servicio.

Los recursos de redes del balanceador de cargas de aplicaciones externo regional, como la subred de solo proxy, se crean en el proyecto host.

Figura 1. Balanceador de cargas HTTP(S) regional externo en un entorno de VPC compartida con buckets de Cloud Storage
Figura 1. Balanceador de cargas de aplicaciones externo regional en un entorno de VPC compartida con buckets de Cloud Storage

En esta sección, se muestra cómo configurar el balanceador de cargas y los backends.

En los ejemplos de configuración de esta página, se configura de manera explícita una dirección IP reservada para la regla de reenvío del balanceador de cargas de aplicaciones externo regional, en lugar de permitir que se asigne una dirección IP efímera. Recomendamos reservar direcciones IP para las reglas de reenvío.

Configura tus buckets de Cloud Storage

El proceso para configurar tus buckets de Cloud Storage es el siguiente:

  1. Crea los buckets de Cloud Storage.
  2. Copia contenido en los buckets de Cloud Storage.
  3. Haz que los buckets de Cloud Storage sean de acceso público.

Crea los buckets de Cloud Storage

En este ejemplo, crearás dos buckets de Cloud Storage en la región us-east1.

Console

  1. En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. Haga clic en Crear.

  3. En la sección Primeros pasos, ingresa un nombre global único que siga los lineamientos de nomenclatura.

  4. Haz clic en Elige dónde almacenar tus datos.

  5. Configura Tipo de ubicación como Región.

  6. En la lista de regiones, selecciona us-east1.

  7. Haz clic en Crear.

  8. Haz clic en Buckets para volver a la página Buckets de Cloud Storage. Usa estas instrucciones para crear un segundo bucket en la región us-east1.

gcloud

  1. Crea el primer bucket en la región us-east1 con el comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    
  2. Crea el segundo bucket también en la región us-east1 con el comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_ID
    

Reemplaza lo siguiente:

  • BUCKET1_NAME y BUCKET2_NAME: Los nombres de tus buckets de Cloud Storage
  • SERVICE_PROJECT_ID: ID del proyecto de Google Cloud asignado al proyecto de servicio

Copia contenido en los buckets de Cloud Storage

Para completar los buckets de Cloud Storage, copia un archivo gráfico de un bucket público de Cloud Storage en tus propios buckets de Cloud Storage.

  gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
  gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.

Haz que los buckets de Cloud Storage sean de acceso público

Para que todos los objetos de un bucket sean accesibles para todos en la Internet pública, otorga a la principal allUsers el rol de visualizador de objetos de Storage (roles/storage.objectViewer).

Console

A fin de otorgar a todos los usuarios acceso para ver objetos en tus buckets, repite el siguiente procedimiento para cada bucket:

  1. En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que deseas hacer público.

  3. Selecciona la pestaña Permisos.

  4. En la sección Permisos, haz clic en el botón Otorgar acceso. Aparecerá el cuadro de diálogo Otorgar acceso.

  5. En el campo Principales nuevas, ingresa allUsers.

  6. En el campo Seleccionar un rol, ingresa Storage Object Viewer en el cuadro de filtro y selecciona Visualizador de objetos de Storage a partir de los resultados filtrados.

  7. Haz clic en Guardar.

  8. Haz clic en Permitir acceso público.

gcloud

Ejecuta el comando buckets add-iam-policy-binding para otorgar a todos los usuarios acceso para ver objetos en tus buckets.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.

Reserva la dirección IP del balanceador de cargas

Reserva una dirección IP externa estática para la regla de reenvío del balanceador de cargas.

Console

  1. En la consola de Google Cloud , ve a la página Reserva una dirección estática.

    Ir a Reserva una dirección estática

  2. En Nombre, ingresa un nombre para la dirección nueva.

  3. En Versión de IP, selecciona IPv4.

  4. En Tipo, selecciona Regional.

  5. En Región, selecciona us-east1.

  6. Deja la opción Conectado a configurada en Ninguna. Después de crear el balanceador de cargas, esta dirección IP se adjuntará a la regla de reenvío del balanceador de cargas.

  7. Haz clic en Reservar si deseas reservar la dirección IP.

gcloud

  1. Para reservar una dirección IP externa estática mediante gcloud compute, usa el comando compute addresses create.

     gcloud compute addresses create ADDRESS_NAME  \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • ADDRESS_NAME: Es el nombre que deseas asignar a esta dirección IP.
    • REGION: La región en la que deseas reservar esta dirección. Esta región debe ser la misma que la del balanceador de cargas.
    • SERVICE_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto de servicio.
  2. Usa el comando compute addresses describe para ver el resultado:

     gcloud compute addresses describe ADDRESS_NAME
    

    Reemplaza ADDRESS_NAME por el nombre que le asignaste a la dirección IP.

    La dirección IP que se devuelve se denomina RESERVED_IP_ADDRESS en las secciones posteriores.

Configura un recurso de certificado SSL

Para un balanceador de cargas de aplicaciones externo regional que usa HTTPS como protocolo de solicitud y respuesta, puedes crear un recurso de certificado SSL con un certificado SSL de Compute Engine o un certificado del administrador de certificados.

Para este ejemplo, crea un recurso de certificado SSL con el Administrador de certificados, como se describe en uno de los siguientes documentos:

Después de crear el certificado, puedes adjuntarlo al proxy HTTPS de destino.

Recomendamos que uses un certificado administrado por Google.

Configura el balanceador de cargas con buckets de backend

En esta sección, se muestra cómo crear los siguientes recursos para un balanceador de cargas de aplicaciones externo regional:

  • Dos buckets de backend Los buckets de backend actúan como wrapper para los buckets de Cloud Storage que creaste anteriormente.
  • Mapa de URL
  • Proxy de destino
  • Una regla de reenvío con direcciones IP regionales. La regla de reenvío tiene una dirección IP externa.

En este ejemplo, puedes usar HTTP o HTTPS como el protocolo de solicitud y respuesta entre el cliente y el balanceador de cargas. Si quieres crear un balanceador de cargas de HTTPS, debes agregar un recurso de certificado SSL al frontend del balanceador de cargas.

Para crear los componentes de balanceo de cargas mencionados anteriormente con gcloud CLI, sigue estos pasos:

  1. Crea dos buckets de backend con el comando gcloud compute backend-buckets create. Los buckets de backend tienen un esquema de balanceo de cargas de EXTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • BUCKET1_NAME y BUCKET2_NAME: Los nombres de los buckets de Cloud Storage
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
  2. Crea un mapa de URL para enrutar las solicitudes entrantes al bucket de backend con el comando gcloud compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • URL_MAP_NAME: el nombre del mapa de URLs
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
  3. Configura las reglas de host y ruta de acceso del mapa de URL con el comando gcloud compute url-maps add-path-matcher.

    En este ejemplo, el bucket de backend predeterminado es backend-bucket-cats, que controla todas las rutas de acceso que existen dentro de él. Sin embargo, cualquier solicitud dirigida a http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg usa el backend de backend-bucket-dogs. Por ejemplo, si la carpeta /love-to-fetch/ también existe en tu backend predeterminado (backend-bucket-cats), el balanceador de cargas prioriza el backend backend-bucket-dogs porque hay una regla de ruta específica para /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=backend-bucket-dogs" \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • URL_MAP_NAME: el nombre del mapa de URLs
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
  4. Crea un proxy de destino con el comando gcloud compute target-http-proxies create.

    Para el tráfico HTTP, crea un proxy HTTP de destino para enrutar las solicitudes al mapa de URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • TARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destino
    • URL_MAP_NAME: el nombre del mapa de URLs
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio

    Para el tráfico HTTPS, crea un proxy HTTPS de destino para enrutar las solicitudes al mapa de URL. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para el balanceo de cargas de HTTPS. Después de crear el certificado, puedes adjuntarlo al proxy HTTPS de destino.

    Para adjuntar un certificado del Administrador de certificados, ejecuta el siguiente comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • TARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.
    • URL_MAP_NAME: el nombre del mapa de URLs
    • CERTIFICATE_NAME: El nombre del certificado SSL del Administrador de certificados
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio
  5. Crea una regla de reenvío con una dirección IP en la región us-east1 con el comando gcloud compute forwarding-rules create.

    Para el tráfico HTTP, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTP de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • FORWARDING_RULE_NAME: el nombre de la regla de reenvío
    • HOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.
    • RESERVED_IP_ADDRESS: la dirección IP reservada
    • TARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destino
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio

    Para el tráfico HTTPS, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTPS de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • FORWARDING_RULE_NAME: el nombre de la regla de reenvío
    • HOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.
    • RESERVED_IP_ADDRESS: la dirección IP reservada
    • TARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio

Envía una solicitud HTTP al balanceador de cargas

Ahora que el servicio de balanceo de cargas está en ejecución, puedes enviar tráfico a la regla de reenvío del balanceador de cargas.

  1. Obtén la dirección IP de la regla de reenvío del balanceador de cargas, que se encuentra en la región us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_ID
    

    Reemplaza lo siguiente:

    • FORWARDING_RULE_NAME: el nombre de la regla de reenvío
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio

    Copia la dirección IP que se devolvió para usarla como FORWARDING_RULE_IP_ADDRESS en el siguiente paso.

  2. Realiza una solicitud HTTP a la dirección IP virtual (VIP) de la regla de reenvío con curl.

     curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
     curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Reemplaza FORWARDING_RULE_IP_ADDRESS por la dirección IP de la regla de reenvío del balanceador de cargas.

Configura un balanceador de cargas con una configuración entre proyectos

En el ejemplo anterior de esta página, se muestra cómo configurar una implementación de VPC compartida en la que todos los componentes del balanceador de cargas y sus backends se crean en el proyecto de servicio.

Los balanceadores de cargas de aplicaciones externos regionales también te permiten configurar implementaciones de VPC compartida en las que un mapa de URL de un proyecto host o de servicio puede hacer referencia a buckets de backend ubicados en varios proyectos de servicio en entornos de VPC compartida.

Puedes usar los pasos en esta sección como referencia para configurar cualquiera de las combinaciones compatibles que se enumeran aquí:

  • Regla de reenvío, proxy de destino y mapa de URL en el proyecto host, y bucket de backend en un proyecto de servicio
  • Regla de reenvío, proxy de destino y mapa de URL en un proyecto de servicio, y bucket de backend en otro proyecto de servicio

En esta sección, se describe la última configuración como ejemplo.

Descripción general de la configuración

En este ejemplo, se configura un balanceador de cargas con su frontend y backend en dos proyectos de servicio diferentes.

Si aún no lo hiciste, debes configurar los roles necesarios y un entorno de VPC compartida. Para obtener instrucciones, consulta las siguientes secciones al comienzo de esta página:

Figura 2. Frontend y backend del balanceador de cargas en diferentes proyectos de servicio
Figura 2.. Frontend y backend del balanceador de cargas en diferentes proyectos de servicio

Configura los buckets de Cloud Storage y los buckets de backend en el proyecto de servicio B

Todos los pasos de esta sección deben realizarse en el proyecto de servicio B.

El proceso para configurar los buckets de Cloud Storage y los buckets de backend es el siguiente:

  1. Crea los buckets de Cloud Storage.
  2. Copia contenido en los buckets de Cloud Storage.
  3. Haz que los buckets de Cloud Storage sean de acceso público.
  4. Crea depósitos de backend y dirígelos a los buckets de Cloud Storage.

Crea los buckets de Cloud Storage

Console

  1. En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. Haga clic en Crear.

  3. En la sección Primeros pasos, ingresa un nombre global único que siga los lineamientos de nomenclatura.

  4. Haz clic en Elige dónde almacenar tus datos.

  5. Configura Tipo de ubicación como Región.

  6. En la lista de regiones, selecciona us-east1.

  7. Haz clic en Crear.

  8. Haz clic en Buckets para volver a la página Buckets de Cloud Storage. Usa estas instrucciones para crear un segundo bucket en la región us-east1.

gcloud

  1. Crea el primer bucket en la región us-east1 con el comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET1_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    
  2. Crea el segundo bucket también en la región us-east1 con el comando gcloud storage buckets create.

    gcloud storage buckets create gs://BUCKET2_NAME \
        --default-storage-class=standard \
        --location=us-east1 \
        --uniform-bucket-level-access \
        --project=SERVICE_PROJECT_B_ID
    

Reemplaza lo siguiente:

  • BUCKET1_NAME y BUCKET2_NAME: El nombre de tu bucket de Cloud Storage
  • SERVICE_PROJECT_B_ID: Es el Google Cloud ID del proyecto asignado al proyecto de servicio B.

Copia contenido en los buckets de Cloud Storage

Para completar los buckets de Cloud Storage, copia un archivo gráfico de un bucket público de Cloud Storage en tus propios buckets de Cloud Storage.

    gcloud storage cp gs://gcp-external-http-lb-with-bucket/three-cats.jpg gs://BUCKET1_NAME/love-to-purr/
  
    gcloud storage cp gs://gcp-external-http-lb-with-bucket/two-dogs.jpg gs://BUCKET2_NAME/love-to-fetch/
  

Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.

Haz que los buckets de Cloud Storage sean de acceso público

Para que todos los objetos de un bucket sean accesibles para todos en la Internet pública, otorga a la principal allUsers el rol de visualizador de objetos de Storage (roles/storage.objectViewer).

Console

A fin de otorgar a todos los usuarios acceso para ver objetos en tus buckets, repite el siguiente procedimiento para cada bucket:

  1. En la consola de Google Cloud , ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que deseas hacer público.

  3. Selecciona la pestaña Permisos.

  4. En la sección Permisos, haz clic en el botón Otorgar acceso. Aparecerá el cuadro de diálogo Otorgar acceso.

  5. En el campo Principales nuevas, ingresa allUsers.

  6. En el campo Seleccionar un rol, ingresa Storage Object Viewer en el cuadro de filtro y selecciona Visualizador de objetos de Storage a partir de los resultados filtrados.

  7. Haz clic en Guardar.

  8. Haz clic en Permitir acceso público.

gcloud

Ejecuta el comando buckets add-iam-policy-binding para otorgar a todos los usuarios acceso para ver objetos en tus buckets.

gcloud storage buckets add-iam-policy-binding gs://BUCKET1_NAME --member=allUsers --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET2_NAME --member=allUsers --role=roles/storage.objectViewer

Reemplaza BUCKET1_NAME y BUCKET2_NAME por los nombres de tus buckets de Cloud Storage.

Crea buckets de backend y dirígelos a los buckets de Cloud Storage

Para crear los buckets de backend, sigue estos pasos:

  1. Crea dos buckets de backend con el comando gcloud compute backend-buckets create. Los buckets de backend tienen un esquema de balanceo de cargas de EXTERNAL_MANAGED.

      gcloud beta compute backend-buckets create backend-bucket-cats \
          --gcs-bucket-name=BUCKET1_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    
      gcloud beta compute backend-buckets create backend-bucket-dogs \
          --gcs-bucket-name=BUCKET2_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --region=us-east1 \
          --project=SERVICE_PROJECT_B_ID
    

    Reemplaza lo siguiente:

    • BUCKET1_NAME y BUCKET2_NAME: Los nombres de los buckets de Cloud Storage
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio

Configura los componentes de frontend del balanceador de cargas en el proyecto de servicio A

Todos los pasos de esta sección deben realizarse en el proyecto de servicio A.

En el proyecto de servicio A, debes crear los siguientes componentes de balanceo de cargas de frontend:

  1. Es un recurso de certificado SSL que se adjunta al proxy de destino. Puedes seguir los pasos que se describen en la sección anterior para crear el certificado SSL.
  2. Una dirección IP para la regla de reenvío del balanceador de cargas Puedes seguir los pasos que se describen en la sección anterior para crear una dirección IP.
  3. Un mapa de URL que hace referencia a los buckets de backend en el proyecto de servicio B
  4. Un proxy de destino
  5. Una regla de reenvío con direcciones IP regionales. La regla de reenvío tiene una dirección IP externa.

Para crear el mapa de URL, el proxy de destino y la regla de reenvío, haz lo siguiente:

  1. Crea un mapa de URL para enrutar las solicitudes entrantes al bucket de backend con el comando gcloud beta compute url-maps create.

      gcloud beta compute url-maps create URL_MAP_NAME \
          --default-backend-bucket=backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • URL_MAP_NAME: el nombre del mapa de URLs
    • SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
  2. Configura las reglas de host y ruta de acceso del mapa de URL con el comando gcloud beta compute url-maps add-path-matcher.

    En este ejemplo, el bucket de backend predeterminado es backend-bucket-cats, que controla todas las rutas de acceso que existen dentro de él. Sin embargo, cualquier solicitud dirigida a http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg usa el backend de backend-bucket-dogs. Por ejemplo, si la carpeta /love-to-fetch/ también existe en tu backend predeterminado (backend-bucket-cats), el balanceador de cargas prioriza el backend backend-bucket-dogs porque hay una regla de ruta específica para /love-to-fetch/*.

      gcloud beta compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=path-matcher-pets \
          --new-hosts=* \
          --backend-bucket-path-rules="/love-to-fetch/*=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-dogs" \
          --default-backend-bucket=projects/SERVICE_PROJECT_B_ID/regional/backendBuckets/backend-bucket-cats \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • URL_MAP_NAME: el nombre del mapa de URLs
    • SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
  3. Crea un proxy de destino con el comando gcloud compute target-http-proxies create.

    Para el tráfico HTTP, crea un proxy HTTP de destino para enrutar las solicitudes al mapa de URL:

      gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • TARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destino
    • URL_MAP_NAME: el nombre del mapa de URLs
    • SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A

    Para el tráfico HTTPS, crea un proxy HTTPS de destino para enrutar las solicitudes al mapa de URL. El proxy es la parte del balanceador de cargas que contiene el certificado SSL para el balanceo de cargas de HTTPS. Después de crear el certificado, puedes adjuntarlo al proxy HTTPS de destino.

    Para adjuntar un certificado del Administrador de certificados, ejecuta el siguiente comando:

      gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \
          --url-map=lb-map \
          --certificate-manager-certificates=CERTIFICATE_NAME \
          --region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • TARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.
    • URL_MAP_NAME: el nombre del mapa de URLs
    • CERTIFICATE_NAME: El nombre del certificado SSL del Administrador de certificados
    • SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A
  4. Crea una regla de reenvío con una dirección IP en la región asia-east1 con el comando gcloud compute forwarding-rules create.

    Para el tráfico HTTP, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTP de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=80 \
          --region=us-east1 \
          --target-http-proxy=TARGET_HTTP_PROXY_NAME \
          --target-http-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • FORWARDING_RULE_NAME: el nombre de la regla de reenvío
    • HOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.
    • RESERVED_IP_ADDRESS: la dirección IP reservada
    • TARGET_HTTP_PROXY_NAME: El nombre del proxy HTTP de destino
    • SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A

    Para el tráfico HTTPS, crea una regla de reenvío regional para enrutar las solicitudes entrantes al proxy HTTPS de destino:

      gcloud compute forwarding-rules create FORWARDING_RULE_NAME \
          --load-balancing-scheme=EXTERNAL_MANAGED \
          --network=projects/HOST_PROJECT_ID/global/networks/lb-network \
          --address=RESERVED_IP_ADDRESS \
          --ports=443 \
          --region=us-east1 \
          --target-https-proxy=TARGET_HTTPS_PROXY_NAME \
          --target-https-proxy-region=us-east1 \
          --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • FORWARDING_RULE_NAME: el nombre de la regla de reenvío
    • HOST_PROJECT_ID: Es el ID del proyecto Google Cloudasignado al proyecto host.
    • RESERVED_IP_ADDRESS: la dirección IP reservada
    • TARGET_HTTPS_PROXY_NAME: Es el nombre del proxy HTTPS de destino.
    • SERVICE_PROJECT_A_ID: ID del proyecto Google Cloudasignado al proyecto de servicio A

Otorga permiso al administrador del balanceador de cargas de Compute para usar el bucket de backend en el proyecto de servicio

Si quieres que los balanceadores de cargas hagan referencia a los buckets de backend en otros proyectos de servicio, el administrador del balanceador de cargas debe tener el permiso compute.backendBuckets.use. Para otorgar este permiso, puedes usar el rol predefinido de IAM llamado Usuario de servicios del balanceador de cargas de Compute (roles/compute.loadBalancerServiceUser). El administrador del proyecto de servicio debe otorgar este rol, que puede aplicarse a nivel del proyecto de servicio o a nivel del bucket de backend individual.

En este ejemplo, un administrador del proyecto de servicio B debe ejecutar uno de los siguientes comandos para otorgar el permiso compute.backendBuckets.use a un administrador del balanceador de cargas del proyecto de servicio A. Esto se puede hacer a nivel de proyecto (para todos los buckets de backend del proyecto) o por bucket de backend.

Console

Permisos a nivel del proyecto

Sigue estos pasos para otorgar permisos a todos los buckets de backend de tu proyecto.

Necesitas los permisos compute.regionBackendBuckets.setIamPolicy y resourcemanager.projects.setIamPolicy para completar este paso.

  1. En la consola de Google Cloud , dirígete a la página IAM.

    Ir a IAM

  2. Elige tu proyecto.

  3. Haz clic en Otorgar acceso.

  4. En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal o algún otro identificador.

  5. En la sección Asignar roles, haz clic en Agregar roles.

  6. En el diálogo Seleccionar roles, ingresa Compute Load Balancer Services User en el campo Buscar roles.

  7. Selecciona la casilla de verificación Usuario de servicios del balanceador de cargas de Compute.

  8. Haz clic en Aplicar.

  9. Opcional: Agrega una condición a la función.

  10. Haz clic en Guardar.

Permisos a nivel de recurso para buckets de backend individuales

Sigue estos pasos para otorgar permisos a buckets de backend individuales en tu proyecto.

Necesitas el permiso compute.regionBackendBuckets.setIamPolicy para completar este paso.

  1. En la consola de Google Cloud , ve a la página Backends.

    Ir a Backends

  2. En la lista de backends, selecciona el bucket de backend al que deseas otorgar acceso y haz clic en Permisos.

  3. Haz clic en Agregar principal.

  4. En el campo Principales nuevas, ingresa la dirección de correo electrónico de la principal o algún otro identificador.

  5. En la lista Seleccionar un rol, selecciona Usuario de servicios de balanceador de cargas de Compute.

  6. Haz clic en Guardar.

gcloud

Permisos a nivel del proyecto

Sigue estos pasos para otorgar permisos a todos los buckets de backend de tu proyecto.

Necesitas los permisos compute.regionBackendBuckets.setIamPolicy y resourcemanager.projects.setIamPolicy para completar este paso.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser"

Reemplaza lo siguiente:

  • SERVICE_PROJECT_B_ID: ID del proyecto Google Cloudasignado al proyecto de servicio B
  • LOAD_BALANCER_ADMIN: Es el principal al que se agregará la vinculación.

Permisos a nivel de recurso para buckets de backend individuales

A nivel del bucket de backend, los administradores de proyectos de servicio pueden usar cualquiera de los siguientes comandos para otorgar el rol Usuario de servicios del balanceador de cargas de Compute (roles/compute.loadBalancerServiceUser):

Usa el comando gcloud projects add-iam-policy-binding para otorgar el rol de usuario de servicios de balanceador de cargas de Compute.

Necesitas el permiso compute.regionBackendBuckets.setIamPolicy para completar este paso.

  gcloud projects add-iam-policy-binding SERVICE_PROJECT_B_ID \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --condition='expression=resource.name=="projects/SERVICE_PROJECT_B_ID/regions/REGION/backendBuckets/BACKEND_BUCKET_NAME",title=Shared VPC condition'
Reemplaza lo siguiente:
  • SERVICE_PROJECT_B_ID: ID del proyecto Google Cloudasignado al proyecto de servicio B
  • LOAD_BALANCER_ADMIN: Es el principal al que se agregará la vinculación.
  • REGION: Es la región de Google Cloud en la que se encuentra el bucket de backend.
  • BACKEND_BUCKET_NAME: Es el nombre del bucket de backend.
Como alternativa, usa el comando gcloud compute backend-buckets add-iam-policy-binding para otorgar el rol de usuario de servicios de balanceador de cargas de Compute.
  gcloud compute backend-buckets add-iam-policy-binding BACKEND_BUCKET_NAME \
      --member="user:LOAD_BALANCER_ADMIN" \
      --role="roles/compute.loadBalancerServiceUser" \
      --project=SERVICE_PROJECT_B_ID \
      --region=REGION

Envía una solicitud HTTP al balanceador de cargas

Ahora que el servicio de balanceo de cargas está en ejecución, puedes enviar tráfico a la regla de reenvío del balanceador de cargas.

  1. Obtén la dirección IP de la regla de reenvío del balanceador de cargas, que se encuentra en la región us-east1.

     gcloud compute forwarding-rules describe FORWARDING_RULE_NAME \
         --region=us-east1 \
         --project=SERVICE_PROJECT_A_ID
    

    Reemplaza lo siguiente:

    • FORWARDING_RULE_NAME: el nombre de la regla de reenvío
    • SERVICE_PROJECT_ID: ID del proyecto Google Cloudasignado al proyecto de servicio

    Copia la dirección IP que se devolvió para usarla como FORWARDING_RULE_IP_ADDRESS en el siguiente paso.

  2. Realiza una solicitud HTTP a la VIP de la regla de reenvío con curl.

    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-purr/three-cats.jpg --output three-cats.jpg
    
    curl http://FORWARDING_RULE_IP_ADDRESS/love-to-fetch/two-dogs.jpg --output two-dogs.jpg
    

    Reemplaza FORWARDING_RULE_IP_ADDRESS por la dirección IP de la regla de reenvío del balanceador de cargas.

¿Qué sigue?