Crea una subred global para el balanceo de cargas externo

En esta página, se explica cómo crear una subred global en Google Distributed Cloud (GDC) aislado y usarla para un balanceador de cargas externo (ELB).

Las subredes globales te permiten configurar subredes que pueden usar operaciones de balanceo de cargas externo en varias zonas de tu organización de GDC. El balanceo de cargas ofrece los beneficios de un mejor rendimiento, confiabilidad y disponibilidad de las aplicaciones y los servicios, ya que distribuye el tráfico de red entre varios servidores. Para obtener más información sobre las subredes globales para el balanceo de cargas, consulta Acerca de las subredes para el balanceo de cargas.

Esta página está dirigida a los desarrolladores del grupo de operadores de aplicaciones que buscan administrar el balanceo de cargas para su organización. Para obtener más información, consulta Públicos de la documentación de GDC aislado.

Antes de comenzar

Para crear una subred global y configurarla para los ELB, debes tener lo siguiente:

  • Ser propietario del proyecto para el que configuras el balanceador de cargas Para obtener más información, consulta Crea un proyecto.
  • Los roles de identidad y acceso necesarios:

    • Pídele al administrador de la organización de IAM que te otorgue el rol de Administrador del balanceador de cargas (load-balancer-admin).
    • Pídele al administrador de la organización de IAM que te otorgue el rol de Administrador de balanceador de cargas global (global-load-balancer-admin).
    • Pídele al administrador de la organización de IAM que te otorgue el rol de administrador de la organización de subredes (subnet-org-admin).
    • Pídele al administrador de la organización de IAM que te otorgue el rol de administrador de proyectos de subred (subnet-project-admin).

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

Crea una subred global superior

La subred global superior que creas en esta sección funciona como el grupo de direcciones IP del que se obtienen las direcciones IP de tu ELB. La subred debe incluir la etiqueta ipam.gdc.goog/network-segment: data. Puedes especificar el elemento superior de la subred con el campo spec.parentReference.name. Tienes dos opciones para configurar el CIDR de esta subred superior:

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

Crea una subred con una configuración de CIDR estática

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

Para crear una subred superior global con una configuración de CIDR estática, agrega el bloque CIDR que elegiste 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

Reemplaza lo siguiente:

  • GLOBAL_API_SERVER: Es la ruta de acceso de kubeconfig del servidor de la API de administración global. Para obtener más información, consulta Servidores de la API globales y zonales. Si aún no generaste un archivo kubeconfig para el servidor de la API, consulta Accede para obtener más detalles.
  • ELB_PARENT_SUBNET_NAME: Es el nombre elegido para la subred superior global del ELB.
  • STATIC_CIDR: Es el bloque CIDR específico que deseas asignar a esta subred superior, como 10.0.10.0/27.
  • PARENT_NAME: Es el nombre de la subred superior existente a partir de la cual se crea esta subred nueva.

Para configurar esta subred de modo que funcione con los ELB, debes crear una subred de hoja para el ELB.

Crea una subred con una configuración de 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 superior. Esto simplifica la administración de direcciones IP, en especial en entornos más grandes. Esta subred tiene un tipo de Branch. Para obtener más información sobre los tipos de subredes raíz, rama y hoja, consulta Jerarquía de subredes. Para crear una subred superior global con un CIDR dinámico, configura 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

Reemplaza lo siguiente:

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

Para configurar esta subred de modo que funcione con los ELB, debes crear una subred de hoja para el ELB.

Crea una subred de hoja para el ELB

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

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

  1. Crea una subred de 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 superior creada antes:

    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
    

    Reemplaza lo siguiente:

    • ELB_IP_SUBNET_NAME: Es el nombre que elegiste para la subred de hoja, como lb-project-elb-ip.
    • PROJECT_NAMESPACE: Es el espacio de nombres de Kubernetes correspondiente a tu proyecto en el que se encuentran tus objetos de ELB, por ejemplo, lb-project.
    • PARENT_REF: Es el nombre de la subred superior de la que esta subred de hoja obtiene su dirección IP, como la subred global superior que creaste antes.
  2. Conecta la subred de 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 de hoja que creaste 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
    

    Reemplaza lo siguiente:

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