Esposizione delle app nei cluster Satellite
Esponi in modo sicuro le app in esecuzione nel tuo Satellite cluster alle richieste di traffico provenienti dalla rete pubblica, dalle risorse connesse alla rete privata dei tuoi host o dalle risorse in IBM Cloud.
Hai diverse opzioni per l'esposizione delle applicazioni nei cluster Satellite:
- MetalLB: un'implementazione
LoadBalanceradatta ai cluster Satellite on-premises. - Red Hat OpenShift routes: esponi rapidamente le applicazioni alle richieste dalla rete pubblica o privata con un nome host. Il controller Ingress Red Hat OpenShift fornisce la registrazione DNS e i certificati facoltativi per le tue rotte.
- Programma di bilanciamento del carico di terze parti e Red Hat OpenShift rotte: espone le applicazioni con un nome host e aggiungi il controllo dell'integrità per gli indirizzi IP dell'host registrati nei record DNS del controller Ingress.
- NodePorts: Esporre applicazioni non HTTP (S), come le applicazioni UDP o TCP, con un NodePort nell'intervallo 30000 - 32767.
- Red Hat OpenShift rotte e Satellite endpoint di link: espone la tua applicazione con una rotta privata e crea un endpoint di link di tipo
locationper la rotta. Solo una risorsa connessa alla rete privata IBM Cloud può accedervi.
Configurazione di MetalLB
MetalLB è un'implementazione di bilanciamento del carico per cluster bare Kubernetes metal, che utilizza protocolli di routing standard. Per ulteriori informazioni, consultare Informazioni su MetalLB e MetalLB l'Operatore nella Red Hat OpenShift documentazione.
Per installare e configurare MetalLB, seguire le istruzioni riportate in Installazione dell'operatore MetalLB nella documentazione Red Hat OpenShift. Prima di iniziare, assicurarsi di disporre di una sottorete dedicata (IPAddressPool) per l'IP esterno dei servizi LoadBalancer.
Verificare che gli indirizzi IP inclusi in IPAddressPool non siano riservati o utilizzati per altri scopi, altrimenti la funzione di bilanciamento del carico potrebbe non riuscire.
Pubblicazione delle app con percorsi " Red Hat OpenShift "
Rendi rapidamente accessibili i servizi del tuo cluster tramite l'indirizzo IP esterno del controller Ingress di Red Hat OpenShift utilizzando una route.
Una rotta Red Hat OpenShift espone un servizio come un nome host nel formato <service_name>-<project>.<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloud.
Nel cluster viene distribuito per impostazione predefinita un controller Ingress, che consente ai client esterni di utilizzare i percorsi. Il controller di Ingress utilizza il selettore di servizi per individuare il servizio e gli endpoint
ad esso associati. Puoi configurare il selettore di servizi per indirizzare il traffico attraverso un instradamento a più servizi. È inoltre possibile creare percorsi non protetti o protetti utilizzando il certificato TLS assegnato dal controller
Ingress al proprio nome host. Si noti che il controller Ingress supporta solo i protocolli HTTP e HTTPS.
Prima di cominciare con le rotte, esamina le seguenti considerazioni.
- Connettività di rete host
- Se gli host per il tuo cluster hanno una connettività di rete pubblica, il tuo cluster viene creato con un controller Ingress pubblico per impostazione predefinita. Puoi utilizzare questo controller Ingress per creare percorsi pubblici per la tua app. Se gli host per il tuo cluster hanno solo connettività di rete privata, il tuo cluster viene creato con un controller Ingress privato per impostazione predefinita. Puoi usare questo controller Ingress per creare rotte private per la tua applicazione accessibili solo dalla rete privata dei tuoi host. Per configurare le rotte pubbliche nei cluster che hanno solo la connettività di rete privata, prima configura il tuo proprio programma di bilanciamento del carico di terze parti che ha la connettività di rete pubblica davanti al tuo controller Ingress privato prima di completare la seguente procedura.
- Controlli di integrità
- La gestione della registrazione DNS viene fornita per default per il controller Ingress del tuo cluster. Ad esempio, se rimuovi un host che era stato assegnato al tuo cluster dalla tua ubicazione e lo sostituisci con un altro host, IBM aggiorna gli indirizzi IP host nel tuo record DNS del controller Ingress per tuo conto. Tieni presente che mentre la registrazione DNS per le rotte viene fornita per te, nessun servizio del programma di bilanciamento del carico viene distribuito davanti al controller Ingress nel tuo cluster. Per controllare l'integrità degli indirizzi IP degli host registrati nei record del DNS del controller Ingress, puoi configurare il tuo proprio programma di bilanciamento del carico di terze parti davanti al tuo controller Ingress prima di completare la seguente procedura.
Per creare le rotte per la tua applicazione:
-
Crea un servizio
ClusterIPKubernetes per la distribuzione della tua applicazione. Il servizio assegna all'app un indirizzo IP interno a cui il controller Ingress può inviare il traffico.oc expose deploy <app_deployment_name> --name my-app-svc -
Imposta un dominio per la tua app.
- IBM- Dominio fornito: se non è necessario utilizzare un dominio personalizzato, viene generato automaticamente un nome host di route nel formato
<service_name>-<project>.<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloud. Continua al passo successivo. - Dominio personalizzato: lavorare con il provider DNS per creare un dominio personalizzato. Nota che se in precedenza hai configurato un programma di bilanciamento del carico di terze parti davanti al controller Ingress, utilizza il tuo provider DNS per creare invece un dominio personalizzato per il programma di bilanciamento del carico.
- IBM- Dominio fornito: se non è necessario utilizzare un dominio personalizzato, viene generato automaticamente un nome host di route nel formato
-
Ottieni gli indirizzi IP per il servizio controller Ingress nella colonna EXTERNAL - IP.
oc get svc router-external-default -n openshift-ingress -
Crea un dominio personalizzato con il tuo provider DNS. Se vuoi utilizzare lo stesso dominio secondario per più servizi nel tuo cluster, puoi registrare un dominio secondario jolly, come ad esempio
*.example.com. -
Associa il tuo dominio personalizzato agli indirizzi IP del controller Ingress aggiungendo tali indirizzi come record A.
-
Configura un instradamento basato sul tipo di terminazione TLS richiesto dalla tua applicazione. Se non hai un dominio personalizzato, non includere l'opzione
--hostnamein modo che venga generato un nome host di instradamento. Se hai registrato un dominio secondario jolly, specifica un dominio secondario univoco in ogni instradamento che crei. Ad esempio, potresti specificare--hostname svc1.example.comin questo instradamento e--hostname svc2.example.comin un altro instradamento.- Semplice:
oc expose service <app_service_name> [--hostname <subdomain>] ``` * Passthrough: ```sh {: pre} oc create route passthrough --service <app_service_name> [--hostname <subdomain>] ``` Devi gestire le connessioni HTTP/2? Dopo aver creato la route, esegui il comando ` `oc edit route <app_service_name>` ` e modifica il valore ` `targetPort` ` della route sostituendo `http://example.com/example-route/` con ` `https``. È possibile testare il percorso visitando la pagina `curl -I --http2 https://<route> --insecure`. {: tip} * Suggerimento: se utilizzi un dominio personalizzato, includi le opzioni `--hostname`, `--cert` e `--key` e, facoltativamente, l'opzione `--ca-cert`. Per ulteriori informazioni sui requisiti relativi al certificato " TLS ", consultare la [documentazione relativa alla rotta edge " Red Hat OpenShift "](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-an-edge-route-with-a-custom-certificate_secured-routes){: external}. ```sh {: pre} oc create route edge --service <app_service_name> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` * Crittografia nuovamente: se si utilizza un dominio personalizzato, includere le opzioni `--hostname`, `--cert` e `--key` e, facoltativamente, l'opzione `--ca-cert`. Per ulteriori informazioni sui requisiti relativi al certificato “ TLS ”, consultare la [documentazione relativa alla procedura di ricrittura “ Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-a-reencrypt-route-with-a-custom-certificate_secured-routes){: external} ”. ```sh {: pre} oc create route reencrypt --service <app_service_name> --dest-ca-cert <destca.crt> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` -
Verifica che l'instradamento per il tuo servizio dell'applicazione sia stato creato.
oc get routes -
Opzionale: Personalizzare le regole di routing predefinite con configurazioni opzionali. Ad esempio, si possono usare annotazioni HAProxy specifiche per la rotta.
Configurazione di un programma di bilanciamento del carico di terzi davanti al controller Ingress Red Hat OpenShift
Per controllare l'integrità degli indirizzi IP degli host registrati nei record DNS del controller Ingress, puoi impostare il tuo proprio programma di bilanciamento del carico di terze parti davanti agli indirizzi IP degli host assegnati come nodi di lavoro al cluster.
Ad esempio, se rimuovi un host che era stato assegnato al tuo cluster dalla tua ubicazione e lo sostituisci con un altro host, IBM aggiorna gli indirizzi IP host nel tuo record DNS del controller Ingress per tuo conto. Ma se spegni un host, ad esempio tramite la gestione dell'infrastruttura del tuo provider cloud, l'indirizzo IP dell'host non viene rimosso dai record DNS del controller Ingress e potrebbe causare un errore di chiamata se il record DNS viene risolto nell'indirizzo IP di tale host. Configurando un programma di bilanciamento del carico davanti al tuo controller Ingress, puoi assicurarti che gli indirizzi IP dell'host siano regolarmente controllati, ad esempio per garantire l'elevata disponibilità per i carichi di lavoro a livello di produzione.
Dopo aver creato un programma di bilanciamento del carico davanti al tuo controller Ingress, puoi utilizzare il controller Ingress per creare le rotte per la tua applicazione. Quando una richiesta viene inviata alla rotta per la tua applicazione, la tua richiesta viene prima ricevuta dal tuo programma di bilanciamento del carico prima di essere inoltrata al controller Ingress, che la inoltra alla tua applicazione.
-
Elenca i dettagli del controller Ingress predefinito del tuo cluster. Nella colonna EXTERNAL - IP dell'output, ottieni gli indirizzi IP del nodo di lavoro registrati per il controller Ingress del cluster. Nella colonna PORT (S) dell'output, a seconda se vuoi creare un programma di bilanciamento del carico pubblico o privato, ottieni la porta del nodo che il servizio controller Ingress attualmente espone per il traffico di rete pubblico o privato.
oc get svc router-external-default -n openshift-ingressNel seguente output di esempio, la porta del nodo
30783è esposta per il traffico pubblico (80).NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-external-default LoadBalancer 172.21.84.172 169.xx.xxx.xxx, 169.xx.xxx.xxx 80:30783/TCP,443:30413/TCP 24h -
Utilizzando questi indirizzi IP e la porta del nodo, crea un programma di bilanciamento del carico di livello 4 connesso alla rete privata dei tuoi host. Ad esempio, puoi distribuire un programma di bilanciamento del carico dal provider cloud dei tuoi host o distribuire un programma di bilanciamento del carico F5 alla tua rete in loco. Per creare rotte pubbliche, il bilanciatore di carico deve avere una connettività di rete pubblica e deve essere in grado di inoltrare il traffico TCP e UDP alla porta per il traffico pubblico individuata nel passaggio precedente. Per creare rotte private, il bilanciatore di carico deve essere in grado di inoltrare il traffico TCP e UDP alla porta per il traffico privato individuata nel passaggio precedente.
-
Ottieni il nome host del tuo cluster. Questo dominio secondario nel formato
<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloudè registrato con il controller Ingress del tuo cluster.ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID> -
Aggiungi gli indirizzi IP pubblici del tuo programma di bilanciamento del carico al dominio secondario del cluster. Ripetere questo comando per tutti gli indirizzi IP pubblici che si desidera aggiungere.
ibmcloud oc nlb-dns add --ip <public_IP> --cluster <cluster_name_or_ID> --nlb-host <hostname> -
Rimuovi gli indirizzi IP del nodo di lavoro dal dominio secondario del tuo cluster. Ripetere questo comando per tutti gli indirizzi IP richiamati in precedenza.
ibmcloud oc nlb-dns rm classic --ip <private_IP> --cluster <cluster_name_or_ID> --nlb-host <hostname> -
Verifica che gli indirizzi IP pubblici per il tuo programma di bilanciamento del carico siano ora registrati con il tuo dominio secondario del cluster.
ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID> -
Continua con la procedura in Esposizione di applicazioni con Red Hat OpenShift rotte per creare le rotte per le tue applicazioni.
Se si configura un bilanciatore di carico o un VIP esterno per registrarsi con il sottodominio invece di utilizzare la registrazione predefinita, tale bilanciatore di carico deve accedere in entrata agli host del cluster e gli host del cluster devono accedere in uscita agli host del cluster ha bisogno di un accesso in entrata agli host del cluster e gli host del cluster hanno bisogno di un accesso in uscita al loadbalancer.
Esposizione delle applicazioni con le NodePort
Se non è possibile utilizzare il controllore Red Hat OpenShift Ingress per esporre un'applicazione, ad esempio se si deve esporre un'applicazione TCP o UDP, è possibile creare un'applicazione NodePort per la propria applicazione.
-
Crea un file
NodePortper la tua app. Alla tua applicazione vengono assegnati un NodePort compreso nell'intervallo 30000 - 32767 e un indirizzo IP del cluster interno.oc expose deployment <deployment_name> --type=NodePort --name=<nodeport_svc_name> -
Ottieni la NodePort che era stata assegnata alla tua applicazione.
oc describe svc <nodeport_svc_name> -
Ottieni il Nome host per il tuo cluster nel formato
<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloud.ibmcloud oc nlb-dns ls --cluster <cluster_name_or_ID> -
Accedi alla tua applicazione utilizzando il dominio secondario del tuo cluster e la NodePort nel formato
<cluster_name>-<random_hash>-0000.upi.containers.appdomain.cloud:<nodeport>. Nota che se i tuoi host hanno solo la connettività di rete privata, devi essere connesso alla rete privata degli host, ad esempio tramite l'accesso VPN. -
Facoltativo: se non vuoi accedere direttamente al NodePort o se devi esporre le tue applicazioni su una specifica porta come 443, puoi configurare il tuo programma di bilanciamento del carico di terze parti di livello 4 connesso alla rete privata dei tuoi host e inoltra il traffico al NodePort. Ad esempio, puoi distribuire un programma di bilanciamento del carico dal provider cloud dei tuoi host o distribuire un programma di bilanciamento del carico F5 alla tua rete in loco. Il bilanciatore di carico deve essere in grado di inoltrare il traffico di TCP e UDP per le porte
30000 - 32767.
Esposizione di app con instradamenti e endpoint di link per traffico da IBM Cloud
Se desideri accedere a un'app nel tuo Satellite cluster da una risorsa in IBM Cloud tramite la rete privata, puoi utilizzare il tuo controller Ingress privato per creare un percorso privato per la tua app. Quindi, è possibile creare un endpoint
Link di tipo location per il percorso, accessibile solo dall'interno della rete IBM Cloud privata.
-
Attieniti alla procedura in Esposizione di applicazioni con Red Hat OpenShift rotte per creare una rotta privata per la tua applicazione. Questa rotta è accessibile solo dalla rete privata dei tuoi host.
-
Segui la procedura in Creazione di endpoint
locationper il collegamento alle risorse in un'ubicazione per creare un endpoint di link Satellite per la rotta privata della tua applicazione. -
Facoltativo: per consentire l'accesso all'endpoint solo dalla risorsa specifica in IBM Cloud, aggiungi la risorsa all'elenco di origine del tuo endpoint.