Configurazione di Ingress
Crea una risorsa Ingress per configurare i componenti Ingress, definire le regole di instradamento delle richieste e specificare il percorso dei servizi della tua app. È necessaria una risorsa Ingress distinta per ogni namespace che contenga un'app o un servizio che si desidera rendere accessibile.
Prima di iniziare
Prima di iniziare, segui questi passaggi preparatori.
-
Assicurati di disporre delle autorizzazioni necessarie 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
-
Decidi se desideri utilizzare il sottodominio Ingress fornito da IBM. Se non desideri utilizzare il sottodominio fornito, devi creare e registrare un 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 Traefik; per indicazioni specifiche su Ingress- NGINX, consulta la documentazione corrispondente. -
Se si rendono accessibili le app tramite ALB private, è necessario abilitare ciascuna ALB privata tramite la CLI. Per ottenere l'ID ALB, eseguire il comando
ibmcloud ks ingress alb ls --cluster CLUSTER``.
Cluster classici Per ulteriori informazioni e opzioni di comando, consultare laguida di riferimento della CLI.
sh {: pre} ibmcloud ks ingress alb enable classic --alb ALB_ID --cluster CLUSTER_NAME
Cluster VPC Per ulteriori informazioni e per le opzioni dei comandi, consultare laguida di riferimento della CLI.
sh {: pre} ibmcloud ks ingress alb enable vpc-gen2 --alb ALB_ID --cluster CLUSTER_NAME
-
Assicurati che il tuo cluster comprenda almeno due nodi di lavoro per ogni zona, al fine di garantire l'alta disponibilità e di applicare gli aggiornamenti periodici. Se una zona dispone di un solo nodo di lavoro, l'ALB non può ricevere aggiornamenti automatici. Per ulteriori informazioni, consultare i requisiti dei nodi worker per gli ALB.
-
Se si utilizza un cluster classico, abilitare una funzione di router virtuale(VRF) per l'account dell'infrastruttura IBM Cloud.
- Per abilitare il VRF, consultare la sezione " Abilitazione del VRF ".
- Per controllare se una VRF è già abilitata, utilizza il comando
ibmcloud account show. - Se non puoi o non vuoi abilitare il VRF, abilita 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, consultare il sito Comprendere il funzionamento della rete VPC dei cluster “Secure by Default”.
-
Si noti che se si crea ed elimina un cluster con lo stesso nome o un nome simile per 5 o più volte nell'arco di 7 giorni, ad esempio a scopo di automazione o di test, si potrebbe raggiungere il limite di emissione di certificati duplicati imposto da Let's Encrypt. Per garantire che il sottodominio e il certificato di Ingress siano 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
Segui questi passaggi per configurare Ingress.
Passaggio 1: Creare 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>
Passaggio 2: Configurare la terminazione dell' TLS e con i certificati TLS e i segreti Kubernetes
Il certificato " TLS " deve essere memorizzato come segreto " Kubernetes " in ogni namespace in cui sono presenti le tue app.
-
Per utilizzare il sottodominio Ingress fornito da IBM, consultare Configurazione dei segreti di TLS per il sottodominio Ingress fornito da IBM.
-
Per utilizzare un dominio personalizzato, consulta la pagina Configurazione dei dati di access TLS i 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-traefik 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 delle risorse
ingressClassName- Il nome della classe Ingress. Le classi Ingress fornite da IBM sono
public-iks-traefikper gli ALB pubblici eprivate-iks-traefikper 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- Sostituisci "
<tls_secret_name>" con il nome del segreto " Kubernetes " in cui è memorizzato il tuo " TLS certificato ". 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 ulteriori informazioni ed esempi relativi a ciascun tipo di percorso, consultare la documentazione della community su Kubernetes. service.name- Sostituisci
app1_serviceeapp2_service, e così via, con il nome dei servizi che hai creato per rendere accessibili le tue app. Assicurati 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. Assicurati 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>
Passaggio 4: Verifica la configurazione di Ingress
-
Elenca i tuoi ALB e copia l'indirizzo IP (classico) o il nome host (VPC) di un ALB su cui è in esecuzione l'immagine Ingress " Kubernetes ". Nell'output, seleziona un ALB che abbia una build nel formato
<community_version>_<ibm_build>_iks.ibmcloud ks ingress alb ls -c CLUSTER -
Utilizza l'indirizzo IP dell'ALB (versione classica) o il nome host (VPC), il percorso dell'applicazione e il tuo dominio per verificare di riuscire a 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'app denominata
myapputilizzando un sottodominio Ingress predefinito, eseguire 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.
CRD di Traefik
Insieme alle risorse di Ingress disponibili su Kubernetes. I controller di ingresso basati su Traefik consentono di utilizzare le risorse definite dalle definizioni di risorse personalizzate (CRD) di Traefik. Il CRD richiesto viene distribuito automaticamente sul cluster quando viene abilitato un ALB basato su Traefik. La versione del CRD distribuita corrisponde sempre alla versione più recente degli ALB Traefik distribuiti. Maggiori informazioni sulle risorse personalizzate sono disponibili nella documentazione di Traefik.
A volte, a seconda della configurazione, i CR di Traefik potrebbero richiedere di specificare i nomi degli entrypoint. Su IBM Cloud Kubernetes Service, i nomi predefiniti per gli entrypoint sono web per il traffico in chiaro HTTP
(associato per impostazione predefinita alla porta 80 ) e websecure per il traffico crittografato TLS HTTPS (associato per impostazione predefinita alla porta 443 ). È possibile configurare le porte o creare punti di accesso aggiuntivi,
se l'applicazione lo richiede.
Ingress - Supporto delle annotazioni " NGINX " in Traefik
Traefik include un livello di compatibilità che elabora le annotazioni specifiche di Ingress- NGINX. Questa funzione è disattivata per impostazione predefinita su IBM Cloud Kubernetes Service. Se si abilita questa opzione, viene disabilitata
l'elaborazione delle annotazioni specifiche di Traefik; pertanto, l'ALB elaborerà solo quelle specifiche di Ingress- NGINX. L'opzione " ingressProvider " presente nel ibm-ingress-deploy-config ConfigMap può essere utilizzata per attivare o disattivare questa funzione.
Per ulteriori informazioni sullo stato di supporto delle annotazioni, consultare la documentazione di Traefik.
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 pubbliche
Segui questi passaggi 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. Si noti che, nella versione Kubernetes 1.20 o successive, i nomi di dominio non possono superare i 130 caratteri. -
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 ".È necessario specificare il sottodominio fornito da IBM come record CNAME affinché i controlli automatici di integrità possano rimuovere eventuali indirizzi IP non funzionanti dalla risposta DNS e garantire che il dominio personalizzato venga aggiornato quando si aggiungono o si rimuovono ALB.
Creazione di domini personalizzati per ALB privati
Segui questi passaggi per creare un dominio personalizzato per gli ALB privati. Si noti che per utilizzare Ingress con ALB privati è necessario disporre di domini personalizzati.
Se disponi di un cluster classico con solo una VLAN privata, devi prima configurare il tuo Servizio DNS disponibile sulla rete privata.
-
Crea un dominio personalizzato tramite il tuo provider di servizi DNS. Si noti che gli URL di Ingress devono contenere al massimo 130 caratteri.
-
Associa il tuo dominio personalizzato agli ALB privati aggiungendo i relativi indirizzi IP come record A (cluster classici) oppure il nome host VPC come record CNAME (cluster VPC). Per individuare gli indirizzi IP dell'ALB (versione classica) o il nome host (VPC), eseguire il comando
ibmcloud ks ingress alb ls -c CLUSTER_NAME_OR_ID``.