Crea una subnet globale per il bilanciamento del carico esterno

Questa pagina ti guida nella creazione di una subnet globale in Google Distributed Cloud (GDC) air-gapped e nell'utilizzo di questa subnet per un bilanciatore del carico esterno (ELB).

Le subnet globali consentono di configurare subnet che possono utilizzare operazioni di bilanciamento del carico esterno in più zone della tua organizzazione GDC. Il bilanciamento del carico offre i vantaggi di prestazioni, affidabilità e disponibilità migliorate di applicazioni e servizi distribuendo il traffico di rete su più server. Per saperne di più sulle subnet globali per il bilanciamento del carico, consulta Informazioni sulle subnet per il bilanciamento del carico.

Questa pagina è rivolta agli sviluppatori del gruppo di operatori di applicazioni che vogliono gestire il bilanciamento del carico per la propria organizzazione. Per ulteriori informazioni, consulta la documentazione sulle audience per GDC air-gapped.

Prima di iniziare

Per creare una subnet globale e configurarla per i bilanciatori del carico elastici, devi disporre di quanto segue:

  • Essere proprietario del progetto per cui stai configurando il bilanciatore del carico. Per saperne di più, consulta Creare un progetto.
  • I ruoli di identità e accesso necessari:

    • Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore bilanciatore del carico (load-balancer-admin).
    • Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore del bilanciamento del carico globale (global-load-balancer-admin).
    • Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore organizzazione subnet (subnet-org-admin).
    • Chiedi all'amministratore IAM dell'organizzazione di concederti il ruolo Amministratore progetto subnet (subnet-project-admin).

    Per ulteriori informazioni, consulta Descrizioni dei ruoli predefiniti.

Crea una subnet globale principale

La subnet globale principale che crei in questa sezione funge da pool di indirizzi IP da cui provengono gli indirizzi IP ELB. La subnet deve includere l'etichetta ipam.gdc.goog/network-segment: data. Puoi specificare la rete secondaria principale utilizzando il campo spec.parentReference.name. Hai due opzioni per configurare il CIDR per questa subnet principale:

Per ulteriori informazioni sulla differenza tra le configurazioni CIDR statiche e dinamiche, consulta Configurazione CIDR statica e dinamica.

Crea una subnet utilizzando una configurazione CIDR statica

Utilizza una configurazione CIDR statica quando hai bisogno di un controllo preciso dello spazio degli indirizzi IP. Questa subnet ha un tipo Branch. Per saperne di più sui tipi di subnet radice, ramo e foglia, consulta Gerarchia delle subnet.

Per creare una subnet principale globale con una configurazione CIDR statica, aggiungi il blocco CIDR che hai scelto 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

Sostituisci quanto segue:

  • GLOBAL_API_SERVER: il percorso kubeconfig del server API di gestione globale. Per saperne di più, vedi Server API globali e a livello di zona. Se non hai ancora generato un file kubeconfig per il server API, consulta Accedi per i dettagli.
  • ELB_PARENT_SUBNET_NAME: il nome scelto per la subnet principale globale per ELB.
  • STATIC_CIDR: il blocco CIDR specifico che vuoi allocare per questa subnet principale, ad esempio 10.0.10.0/27.
  • PARENT_NAME: il nome della subnet principale esistente da cui viene creata questa nuova subnet.

Per configurare questa subnet in modo che funzioni con i bilanciatori del carico elastici, devi creare una subnet foglia per il bilanciamento del carico elastico.

Crea una subnet utilizzando una configurazione CIDR dinamica

La configurazione CIDR dinamica alloca automaticamente un blocco CIDR disponibile di una dimensione specificata dalla subnet principale. Ciò semplifica la gestione degli indirizzi IP, soprattutto in ambienti più grandi. Questa subnet ha un tipo Branch. Per saperne di più sui tipi di subnet radice, ramo e foglia, consulta Gerarchia delle subnet. Per creare una subnet principale globale con un CIDR dinamico, configura il campo spec.ipv4Request.prefixLength con la lunghezza del prefisso scelta:

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

Sostituisci quanto segue:

  • ELB_PARENT_SUBNET_NAME: il nome che hai scelto per la subnet principale ELB, ad esempio lb-global-lancer-elb-subnet.
  • STATIC_CIDR: il blocco CIDR specifico che vuoi utilizzare, ad esempio 10.0.10.0/27. Questa variabile è applicabile solo alla configurazione CIDR statica.
  • PARENT_NAME: il nome della subnet principale esistente da cui viene creata questa nuova subnet, ad esempio default-vpc-workload-cidr.
  • PREFIX_LENGTH: la lunghezza del prefisso scelta per il CIDR allocato dinamicamente, ad esempio 27. Questa variabile è applicabile solo alla configurazione CIDR dinamica.

Per configurare questa subnet in modo che funzioni con i bilanciatori del carico elastici, devi creare una subnet foglia per il bilanciamento del carico elastico.

Crea una subnet foglia per ELB

Dopo aver configurato la subnet principale globale, devi creare una subnet foglia per allocare un singolo indirizzo IP per il servizio ELB globale. Questa subnet foglia deve avere un valore del campo type pari a Leaf e deve risiedere nello stesso spazio dei nomi del progetto delle risorse del bilanciatore del carico, come ForwardingRule, BackendService e Backend.

Per creare la subnet foglia e collegarla al bilanciamento del carico ELB:

  1. Crea una subnet foglia con un valore prefixLength di 32, in quanto è destinata ad allocare un singolo indirizzo IP. Il valore parentReference fa riferimento alla subnet globale principale creata in precedenza:

    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
    

    Sostituisci quanto segue:

    • ELB_IP_SUBNET_NAME: il nome che hai scelto per la subnet foglia, ad esempio lb-project-elb-ip.
    • PROJECT_NAMESPACE: lo spazio dei nomi Kubernetes corrispondente al tuo progetto in cui si trovano gli oggetti ELB, ad esempio lb-project.
    • PARENT_REF: il nome della subnet principale da cui questa subnet foglia ricava il proprio indirizzo IP, ad esempio la subnet globale principale che hai creato in precedenza.
  2. Collega la subnet leaf appena creata, che contiene l'indirizzo IP allocato, alla risorsa ForwardingRuleExternal del tuo ELB. Nella risorsa ForwardingRuleExternal, aggiorna il campo spec.cidrRef.name in modo che faccia riferimento al nome della subnet foglia che hai creato nel passaggio precedente:

    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
    

    Sostituisci quanto segue:

    • FRI_NAME: il nome che hai scelto per l'oggetto ForwardingRuleExternal, ad esempio nginx-elb-static-fr.
    • PORT: il numero di porta su cui ELB è in ascolto del traffico in entrata, ad esempio 80.
    • PROTOCOL: il protocollo di rete utilizzato da ELB, ad esempio TCP o UDP.
    • BES_NAME: il nome di BackendService associato a questa risorsa ForwardingRuleExternal, ad esempio nginx-bes.
    • LEAF_SUBNET_NAME: il nome della subnet foglia che hai creato nel passaggio precedente, ad esempio lb-project-elb-ip.