Configurazione di Ingress

Crea una risorsa Ingress per configurare i tuoi componenti Ingress, definire le regole per l'instradamento delle richieste e specificare il percorso ai servizi della tua applicazione. È richiesta una risorsa Ingress separata per ogni spazio dei nomi che contiene un'applicazione o un servizio che vuoi esporre.

Prima di iniziare

Seguire questi passi di preparazione prima di iniziare.

  1. Assicurati di disporre delle autorizzazioni corrette per configurare Ingress. Sono richiesti i seguenti IBM Cloud ruoli IAM:

    • Ruolo di accesso alla piattaforma di amministrazione per il cluster
    • Ruolo di accesso al servizio “Manager” in tutti gli spazi dei nomi
  2. Determina se vuoi utilizzare il dominio secondario Ingress fornito da IBM. Se non si desidera utilizzare il dominio secondario fornito, è necessario creare e registrare il proprio dominio personalizzato.

    Un dominio personalizzato oppure la configurazione manuale dei domini forniti d IBM, necessari per rendere accessibili le app tramite ALB privati.

  3. Assicurati che l'ALB che intendi utilizzare sia della versione prevista. Esegui il comando ibmcloud ks ingress alb versions per visualizzare l'elenco delle versioni attualmente supportate e confrontalo con l'output di ibmcloud ks ingress alb ls --cluster CLUSTER``. Se stai seguendo questa documentazione, dovresti eseguire un Ingress basato su Ingress- NGINX; per indicazioni specifiche su Traefik, consulta la documentazione corrispondente.

  4. Se stai esponendo le applicazioni su ALB privati, devi abilitare ogni ALB privato nella CLI. Per ottenere l'ID ALB, eseguire ibmcloud ks ingress alb ls --cluster CLUSTER.

Cluster classici Per ulteriori informazioni e opzioni di comandi, vedi ilriferimento CLI. sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --cluster CLUSTER_NAME Cluster VPC Per ulteriori informazioni e opzioni di comandi, consulta ilriferimento CLI. sh {: pre} ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --cluster CLUSTER_NAME

  1. Assicurati che il tuo cluster includa almeno due nodi di lavoro per zona per garantire l'alta disponibilità e applicare aggiornamenti periodici. Se una zona ha un solo nodo worker, l'ALB non può ricevere aggiornamenti automatici. Per ulteriori informazioni, vedi Requisiti del nodo di lavoro per gli ALB.

  2. Se si utilizza un cluster classico, abilitare una Virtual Router Function(VRF) per l'account dell'infrastruttura IBM Cloud.

    • Per abilitare il VRF, vedere Abilitazione del VRF.
    • Per controllare se una VRF è già abilitata, utilizza il comando ibmcloud account show.
    • Se non si può o non si vuole abilitare il VRF, abilitare lo spanning VLAN. Quando abiliti la VRF o lo spanning della VLAN, l'ALB può instradare i pacchetti alle varie sottoreti dell'account.
  3. Per i cluster VPC, assicurati che i gruppi di sicurezza VPC consentano alle porte dei nodi di ricevere le richieste di traffico instradate da Ingress. Per ulteriori informazioni, vedere Comprendere la rete VPC del cluster Secure by Default.

  4. Nota che se crei ed elimini un cluster con lo stesso nome o un nome simile 5 volte o più entro 7 giorni, ad esempio per scopi di automazione o di test, potresti raggiungere il Limite di frequenza di crittografia dei certificati duplicati. Per garantire che il dominio secondario e il certificato Ingress vengano registrati correttamente, i primi 24 caratteri dei nomi dei cluster devono essere diversi.

  5. Se limiti il traffico di rete ai nodi di lavoro edge, assicurati che almeno due nodi di lavoro edge siano abilitati in ogni zona in modo che gli ALB vengano distribuiti in modo uniforme.

Se una zona presenta un malfunzionamento, potresti riscontrare malfunzionamenti intermittenti nelle richieste all'ALB Ingress in tale zona.

Procedura di configurazione

Attieniti alla procedura per configurare Ingress.

Passo 1: crea un servizio ClusterIP

Per ogni distribuzione di applicazione che vuoi esporre, crea un servizio ClusterIP Kubernetes. La tua applicazione deve essere esposta da un servizio Kubernetes per essere inclusa nel bilanciamento del carico Ingress.

kubectl expose deploy <app_deployment_name> --name my-app-svc --port <app_port> -n <namespace>

Passo 2: Impostare la terminazione di TLS con i certificati TLS e i segreti Kubernetes

Il certificato TLS deve essere memorizzato come segreto Kubernetes in ogni spazio dei nomi in cui sono presenti le applicazioni.

Passo 3: Crea la risorsa Ingress

Crea la risorsa Ingress per definire le regole di instradamento che il controller Ingress utilizza per instradare il traffico verso il tuo servizio app.

  1. Crea la risorsa Ingress in un file YAML.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: my-ingress-resource
    spec:
      ingressClassName: public-iks-k8s-nginx
      tls:
      - hosts:
        - <domain_name>
        secretName: <tls_secret_name>
      rules:
      - host: HOSTNAME
        http:
          paths:
          - path: <app_path_1>
            pathType: Prefix
            backend:
              service:
                name: <app_service_1>
                port:
                  number: 80
          - path: <app_path_2>
            pathType: Prefix
            backend:
              service:
                name: <app_service_2>
                port:
                  number: 80
    

Campi di risorse

ingressClassName
Il nome della classe Ingress. Le classi Ingress IBMfornite sono public-iks-k8s-nginx per gli ALB pubblici e private-iks-k8s-nginx per gli ALB privati.
tls.hosts
Per utilizzare TLS, sostituisci <domain> con il sottodominio Ingress fornito da IBM o con il tuo dominio personalizzato.
tls.secretName
Sostituire <tls_secret_name> con il nome del segreto Kubernetes in cui è memorizzato il certificato TLS.
host
Sostituisci <domain> con il sottodominio Ingress fornito da IBM o con il tuo dominio personalizzato.
path
Sostituisci " <app_path> " con una barra o con il percorso su cui la tua app è in ascolto. Il percorso viene aggiunto al dominio Ingress specificato per creare un percorso univoco verso la tua app. Quando immetti questa rotta in un browser web, il traffico di rete viene instradato all'ALB. L'ALB cerca il servizio associato e invia il traffico di rete al servizio. Il servizio inoltra quindi il traffico ai pod in cui è in esecuzione l'app.
pathType
Il metodo di corrispondenza dei percorsi URL. I valori supportati sono ImplementationSpecific, Exact o Prefix. Per maggiori informazioni ed esempi su ciascun tipo di percorso, consultare la documentazione della community Kubernetes.
service.name
Sostituisci app1_service e app2_service, e così via, con il nome dei servizi che hai creato per rendere accessibili le tue app. Assicurarsi che le app specificate si trovino nello stesso spazio dei nomi.
service.name
Sostituisci <app1_service> e <app2_service>, e così via, con il nome dei servizi che hai creato per rendere accessibili le tue app. Assicurarsi che le app specificate si trovino nello stesso spazio dei nomi.
service.port.number
La porta su cui è in ascolto il tuo servizio. Utilizza la stessa porta che hai definito quando hai creato il servizio Kubernetes per la tua applicazione.
  1. Applica la risorsa Ingress al tuo cluster. Assicurati che la risorsa venga distribuita nello stesso spazio dei nomi dei servizi dell'applicazione che hai specificato nella risorsa.
    kubectl apply -f community-ingress-resource.yaml -n <namespace>
    

Passo 4: verifica la tua configurazione Ingress

  1. Elenca i tuoi ALB e copia l'indirizzo IP (classico) o il nome host (VPC) per un ALB che esegue l'immagine Ingress Kubernetes. Nell'output, scegli un ALB che abbia un Build nel formato <community_version>_<ibm_build>_iks.

    ibmcloud ks ingress alb ls -c CLUSTER
    
  2. Utilizza l'indirizzo IP dell'ALB (classico) o il nome host (VPC), il percorso dell'applicazione e il tuo dominio per verificare che puoi inviare correttamente il traffico alla tua applicazione tramite questo ALB.

    curl http://<ALB_IP>/<app_path> -H "Host: <ingress_subdomain>"
    

    Ad esempio, per inviare una richiesta a un'applicazione denominata myapp utilizzando un dominio secondario Ingress predefinito, immetti il seguente comando.

    curl http://169.X.X.X/myapp -H "Host: mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud"
    

Hai problemi a connetterti alla tua applicazione tramite Ingress? Consulta Risoluzione dei problemi relativi a Ingress. È possibile verificare lo stato di funzionamento e lo stato dei propri componenti Ingress eseguendo il comando ibmcloud ks ingress status-report get -c CLUSTER_NAME_OR_ID.

Domini personalizzati con Ingress

Se non desideri utilizzare il sottodominio Ingress fornito da IBM, puoi utilizzare un dominio personalizzato da specificare nella tua risorsa Ingress. Si noti che le app rese accessibili tramite Ingress su ALB privati richiedono un dominio personalizzato oppure la configurazione manuale di un dominio fornito d IBM.

Creazione di domini personalizzati per ALB pubblici

Segui la procedura per creare un dominio personalizzato per gli ALB pubblici.

  1. Crea un dominio personalizzato. Per registrare il tuo dominio personalizzato, opera con il provider DNS (Domain Name Service) o il DNS IBM Cloud. Se le applicazioni che vuoi che Ingress esponga si trovano in spazi dei nomi diversi in un cluster, registra il dominio personalizzato come dominio jolly, ad esempio *.custom_domain.net. Nota che i domini sono limitati a 130 caratteri o meno in Kubernetes versione 1.20 o successive.

  2. Definisci un alias per il tuo dominio personalizzato specificando il dominio secondario fornito da IBM come record di nome canonico (CNAME). Per individuare il dominio Ingress fornito da IBM, esegui ibmcloud ks cluster get --cluster CLUSTER_NAME e cerca il campo " Ingress subdomain ".

    L'indicazione del sottodominio fornito da IBM come CNAME è necessaria per i controlli sanitari automatici che rimuovono eventuali IP non funzionanti dalla risposta DNS e per garantire che il dominio personalizzato si aggiorni quando si aggiungono o rimuovono gli ALB.

Creazione di domini personalizzati per ALB privati

Attieniti alla procedura per creare un dominio personalizzato per gli ALB privati. Tieni presente che i domini personalizzati sono richiesti per utilizzare Ingress con gli ALB privati.

Se hai un cluster classico con solo una VLAN privata, devi prima configurare il tuo servizio DNS disponibile sulla tua rete privata.

  1. Crea un dominio personalizzato tramite il tuo provider di servizi DNS. Nota che gli URL Ingress devono avere una lunghezza massima di 130 caratteri.

  2. Associa il tuo dominio personalizzato agli ALB privati aggiungendo i loro indirizzi IP come record A (cluster classici) o il loro nome host VPC come CNAME (cluster VPC). Per trovare gli indirizzi IP ALB (classico) o il nome host (VPC), esegui ibmcloud ks ingress alb ls -c CLUSTER_NAME_OR_ID.