Crear una subred global para el balanceo de carga externo

En esta página se explica cómo crear una subred global en Google Distributed Cloud (GDC) air-gapped y cómo usarla en un balanceador de carga externo (ELB).

Las subredes globales te permiten configurar subredes que pueden usar operaciones de balanceo de carga externo en varias zonas de tu organización de GDC. El balanceo de carga ofrece las ventajas de mejorar el rendimiento, la fiabilidad y la disponibilidad de las aplicaciones y los servicios al distribuir el tráfico de red entre varios servidores. Para obtener más información sobre las subredes globales para el balanceo de carga, consulta Información sobre las subredes para el balanceo de carga.

Esta página está dirigida a los desarrolladores del grupo de operadores de aplicaciones que quieren gestionar el equilibrio de carga de su organización. Para obtener más información, consulta la documentación sobre audiencias de GDC con aislamiento físico.

Antes de empezar

Para crear una subred global y configurarla para ELBs, debe tener lo siguiente:

  • Ser propietario del proyecto en el que vas a configurar el balanceador de carga. Para obtener más información, consulta el artículo Crear un proyecto.
  • Los roles de identidad y acceso necesarios:

    • Pídele al administrador de gestión de identidades y accesos de tu organización que te conceda el rol Administrador de balanceadores de carga (load-balancer-admin).
    • Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol Administrador de balanceador de carga global (global-load-balancer-admin).
    • Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol de administrador de la organización de subredes (subnet-org-admin).
    • Pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol Administrador de proyectos de subredes (subnet-project-admin).

    Para obtener más información, consulta las descripciones de los roles predefinidos.

Crear una subred global principal

La subred global principal que crees en esta sección servirá como grupo de direcciones IP del que se obtendrán las direcciones IP de tu ELB. La subred debe incluir la etiqueta ipam.gdc.goog/network-segment: data. Puede especificar la red principal de la subred mediante el campo spec.parentReference.name. Tienes dos opciones para configurar el CIDR de esta subred principal:

Para obtener más información sobre la diferencia entre las configuraciones de CIDR estáticas y dinámicas, consulte Configuración de CIDR estática y dinámica.

Crear una subred con una configuración CIDR estática

Usa una configuración CIDR estática cuando necesites un control preciso sobre tu espacio de direcciones IP. Esta subred es de tipo Branch. Para obtener más información sobre los tipos de subredes raíz, de rama y hoja, consulta Jerarquía de subredes.

Para crear una subred principal global con una configuración CIDR estática, añade el bloque CIDR que elijas al campo spec.ipv4Request.cidr:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/network-segment: data
  name: ELB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    cidr: STATIC_CIDR
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

Haz los cambios siguientes:

  • GLOBAL_API_SERVER: la ruta kubeconfig del servidor de la API de gestión global. Para obtener más información, consulta el artículo sobre los servidores de APIs globales y zonales. Si aún no has generado un archivo kubeconfig para el servidor de la API, consulta Iniciar sesión para obtener más información.
  • ELB_PARENT_SUBNET_NAME: el nombre que elijas para la subred principal global del ELB.
  • STATIC_CIDR: el bloque CIDR específico que quieres asignar a esta subred principal, como 10.0.10.0/27.
  • PARENT_NAME: nombre de la subred principal a partir de la que se crea esta subred.

Para configurar esta subred de forma que funcione con ELBs, debe crear una subred hoja para el ELB.

Crear una subred con una configuración CIDR dinámica

La configuración dinámica de CIDR asigna automáticamente un bloque CIDR disponible de un tamaño especificado de la subred principal. Esto simplifica la gestión de las direcciones IP, sobre todo en entornos más grandes. Esta subred es de tipo Branch. Para obtener más información sobre los tipos de subredes raíz, de rama y hoja, consulta Jerarquía de subredes. Para crear una subred principal global con un CIDR dinámico, configure el campo spec.ipv4Request.prefixLength con la longitud de prefijo elegida:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
piVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
  ipam.gdc.goog/network-segment: data
  name: ELB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    prefixLength: PREFIX_LENGTH
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

Haz los cambios siguientes:

  • ELB_PARENT_SUBNET_NAME: el nombre que elijas para la subred principal de ELB, como lb-global-lancer-elb-subnet.
  • STATIC_CIDR: el bloque CIDR específico que quieras usar, como 10.0.10.0/27. Esta variable solo se aplica a la configuración estática de CIDR.
  • PARENT_NAME: el nombre de la subred principal de la que se crea esta nueva subred, como default-vpc-workload-cidr.
  • PREFIX_LENGTH: la longitud del prefijo elegida para el CIDR asignado dinámicamente, como 27. Esta variable solo se aplica a la configuración dinámica de CIDR.

Para configurar esta subred de forma que funcione con ELBs, debe crear una subred hoja para el ELB.

Crear una subred hoja para el ELB

Después de configurar la subred principal global, debe crear una subred hoja para asignar una sola dirección IP al servicio ELB global. Esta subred hoja debe tener el valor Leaf en el campo type y debe estar en el mismo espacio de nombres de proyecto que los recursos del balanceador de carga, como ForwardingRule, BackendService y Backend.

Para crear la subred hoja y vincularla al ELB, sigue estos pasos:

  1. Crea una subred hoja con un valor prefixLength de 32, ya que está diseñada para asignar una sola dirección IP. El valor parentReference hace referencia a la subred global principal creada anteriormente:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/allocation-preference: default
        ipam.gdc.goog/network-segment: data
      name: ELB_IP_SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_REF
        namespace: platform
      type: Leaf
    EOF
    

    Haz los cambios siguientes:

    • ELB_IP_SUBNET_NAME: el nombre que elijas para la subred de hoja, como lb-project-elb-ip.
    • PROJECT_NAMESPACE: el espacio de nombres de Kubernetes correspondiente a tu proyecto en el que se encuentran tus objetos ELB. Por ejemplo, lb-project.
    • PARENT_REF: el nombre de la subred principal de la que esta subred hoja obtiene su dirección IP, como la subred global principal que has creado anteriormente.
  2. Conecta la subred hoja recién creada, que contiene la dirección IP asignada, con el recurso ForwardingRuleExternal de tu ELB. En tu recurso ForwardingRuleExternal, actualiza el campo spec.cidrRef.name para que haga referencia al nombre de la subred hoja que has creado en el paso anterior:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleExternal
    metadata:
      name: FRI_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ports:
        - port: PORT
          protocol: PROTOCOL
      backendServiceRef:
        name: BES_NAME
      cidrRef:
        name: LEAF_SUBNET_NAME
    EOF
    

    Haz los cambios siguientes:

    • FRI_NAME: el nombre que elijas para el objeto ForwardingRuleExternal, como nginx-elb-static-fr.
    • PORT: el número de puerto en el que tu ELB escucha el tráfico entrante, como 80.
    • PROTOCOL: el protocolo de red que usa tu ELB, como TCP o UDP.
    • BES_NAME: nombre del BackendService asociado a este recurso ForwardingRuleExternal, como nginx-bes.
    • LEAF_SUBNET_NAME: el nombre de la subred hoja que has creado en el paso anterior, como lb-project-elb-ip.