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.
-
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
-
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.
-
Assicurati che l'ALB che intendi utilizzare sia della versione prevista. Esegui il comando
ibmcloud ks ingress alb versionsper visualizzare l'elenco delle versioni attualmente supportate e confrontalo con l'output diibmcloud 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. -
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
-
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.
-
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.
-
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.
-
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.
-
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.
-
Per utilizzare il sottodominio di Ingress fornito da IBM, vedere Impostazione dei segreti TLS per il sottodominio Ingress fornito da IBM.
-
Per utilizzare un dominio personalizzato, vedere Impostazione dei segreti TLS per i sottodomini personalizzati.
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.
-
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-nginxper gli ALB pubblici eprivate-iks-k8s-nginxper 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,ExactoPrefix. Per maggiori informazioni ed esempi su ciascun tipo di percorso, consultare la documentazione della community Kubernetes. service.name- Sostituisci
app1_serviceeapp2_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.
- 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
-
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 -
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
myapputilizzando 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.
-
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. -
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_NAMEe 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.
-
Crea un dominio personalizzato tramite il tuo provider di servizi DNS. Nota che gli URL Ingress devono avere una lunghezza massima di 130 caratteri.
-
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.