Configurazione del tuo primo cluster nel tuo VPC (Virtual Private Cloud)

Cloud privato virtuale

Crea un cluster Red Hat® OpenShift® on IBM Cloud® nel tuo Virtual Private Cloud (VPC).

  • Red Hat OpenShift on IBM Cloud ti offre tutti i vantaggi di un’offerta gestita per il tuo ambiente di infrastruttura cluster, consentendoti al contempo di utilizzare gli strumenti e il catalogo di Red Hat OpenShift, ospitati su Red Hat Enterprise Linux, per le distribuzioni delle tue applicazioni.
  • VPC ti offre la sicurezza di un ambiente cloud privato con la scalabilità dinamica di un cloud pubblico. VPC utilizza la versione successiva dei provider dell'infrastruttura Red Hat OpenShift on IBM Cloud , con un gruppo selezionato di API, CLI e funzionalità della console v2.
  • Questa esercitazione crea un cluster in VPC utilizzando i comandi ibmcloud CLI. In alternativa, è possibile utilizzare un modulo Terraform open-source e di livello enterprise per distribuire un cluster OpenShift su un'infrastruttura VPC. È possibile esplorare altri moduli nel registro dei moduli di Terraform IBM.

Destinatari

Questo tutorial è rivolto agli amministratori che stanno creando per la prima volta un cluster in Red Hat OpenShift on IBM Cloud nell'ambiente VPC Compute.

Obiettivi

Nelle lezioni del tutorial, creerai un cluster Red Hat OpenShift on IBM Cloud all’interno di un Virtual Private Cloud (VPC). A questo punto, si accede ai componenti integrati di Red Hat OpenShift, si distribuisce un'applicazione in un progetto Red Hat OpenShift e si rende l'applicazione accessibile tramite un bilanciatore di carico VPC, in modo che gli utenti esterni possano accedere al servizio.

Cosa otterrai

In questo tutorial creerai le seguenti risorse. Ci sono passi facoltativi per eliminare queste risorse se non si desidera conservarle dopo aver completato l'esercitazione.

  • Un cluster VPC
  • Una semplice applicazione Hello World distribuita al tuo cluster
  • Un programma di bilanciamento del carico VPC per esporre la tua applicazione

Prerequisiti

Completare la seguente procedura prerequisita per configurare le autorizzazioni e l'ambiente della riga comandi.

Autorizzazioni
Se sei il titolare dell'account, disponi già delle autorizzazioni necessarie per creare un cluster e puoi passare al passaggio successivo. In caso contrario, chiedi al titolare dell'account di configurare la chiave API e di assegnarti le autorizzazioni minime per gli utenti nell'IAM di IBM Cloud.
Strumenti da riga di comando
Per accedere rapidamente alle tue risorse dalla riga di comando, prova il comando IBM Cloud Shell. In caso contrario, impostare l'ambiente della riga comandi locale completando la procedura riportata di seguito.
  1. Installa la CLI IBM Cloud (ibmcloud), il plugin Kubernetes Service (ibmcloud oc) e il plugin IBM Cloud Container Registry (ibmcloud cr).
  2. Installa Red Hat OpenShift(oc)e Kubernetes(kubectl)CLIs.
  3. Per lavorare con VPC, installa il plugin infrastructure-service. Il prefisso per l'esecuzione dei comandi è ibmcloud is.
    ibmcloud plugin install infrastructure-service
    ```
4. Aggiorna il tuo plugin Kubernetes Service alla versione più recente.
```sh {: pre}
    ibmcloud plugin update kubernetes-service
    ```


Creare un cluster in una VPC

Crea un ambiente IBM Cloud VPC (Virtual Private Cloud). Quindi, crea un Red Hat OpenShift on IBM Cloud cluster sull'infrastruttura VPC. Per ulteriori informazioni su VPC, vedi Introduzione a Virtual Private Cloud.

  1. Accedi all'account, al gruppo di risorse e alla regione IBM Cloud in cui vuoi creare il tuo ambiente VPC. Il VPC deve essere configurato nella stessa regione metropolitana multizona in cui si desidera creare il cluster. In questa esercitazione, crei un VPC in us-south. Per le altre regioni supportate, vedi Aree metropolitane multizona per i cluster VPC. Se disponi di un ID federato, includi l'opzione --sso.

    ibmcloud login -r us-south [-g <resource_group>] [--sso]
    
  2. Crea un VPC per il tuo cluster. Per ulteriori informazioni, consulta la documentazione per la creazione di un VPC nella console o nella CLI.

    1. Crea una VPC denominata “ myvpc ” e prendi nota dell’ID riportato nell’output. I VPC forniscono un ambiente isolato per i tuoi carichi di lavoro da eseguire all'interno del cloud pubblico. Puoi utilizzare lo stesso VPC per più cluster, come ad esempio se intendi avere dei cluster differenti che ospitano microservizi separati che devono comunicare tra loro. Se vuoi separare i tuoi cluster, come ad esempio per dipartimenti differenti, puoi creare un VPC per ciascun cluster.
        ibmcloud is vpc-create myvpc
        ```
    2. Crea un gateway pubblico e prendi nota dell'**ID** nell'output. Nel passo successivo, colleghi il gateway pubblico a una sottorete VPC, in modo che i tuoi nodi di lavoro possano comunicare sulla rete pubblica. I componenti predefiniti di Red Hat OpenShift, come la console web e OperatorHub,, richiedono l'accesso alla rete pubblica. Se ignori questo passo, devi essere invece connesso alla tua rete privata VPC, ad esempio tramite una connessione VPN, per accedere alla console web Red Hat OpenShift o al tuo cluster con comandi `kubectl`.
    ```sh {: pre}
        ibmcloud is public-gateway-create gateway-us-south-1 <vpc_ID> us-south-1
        ```
    3. Crea una sottorete per il tuo VPC e prendi nota del suo **ID**. Considera le seguenti informazioni quando crei la sottorete VPC;
        *  **Zone**: devi avere una sottorete VPC per ciascuna zona nel tuo cluster. Le zone disponibili dipendono dalla regione in cui è stata creata la VPC. Per elencare le zone disponibili nella regione, esegui `ibmcloud is zones`.
        *  **Indirizzi IP**: le sottoreti VPC forniscono gli indirizzi IP privati per i tuoi nodi di lavoro e servizi del programma di bilanciamento del carico nel tuo cluster, per cui assicurati di [creare una sottorete con un numero sufficiente di indirizzi IP](/docs/openshift?topic=openshift-vpc-subnets#vpc_basics_subnets), ad esempio 256. Non è possibile modificare in un secondo momento il numero di indirizzi IP di una sottorete VPC.
        *  **Gateway pubblici**: includi il gateway pubblico che hai creato in precedenza. Devi avere un gateway pubblico per ogni zona del tuo cluster.
    
            ```sh {: pre}
            ibmcloud is subnet-create mysubnet1 VPC_ID --zone us-south-1 --ipv4-address-count 256 --pgw GATEWAY_ID
            ```
    Se si dispone di più zone, ripetere questi passaggi per ciascuna zona.
    {: tip}
    
    
  3. Crea un'istanza IBM Cloud Object Storage standard per eseguire il backup del registro interno del tuo cluster. Nell'output, prendi nota dell'ID dell'istanza.

    ibmcloud resource service-instance-create myvpc-cos cloud-object-storage standard global
    
  4. Crea un cluster nel tuo VPC nella stessa zona della sottorete. Il comando seguente crea un cluster di versione 4.21 a Dallas con una configurazione minima di 2 nodi di lavoro dotati di almeno 4 core e 16 GB di memoria, in modo da consentire la distribuzione dei componenti predefiniti di Red Hat OpenShift. Per ulteriori informazioni sulle opzioni del comando, vedi la documentazione di riferimento della CLI cluster create vpc-gen2.

    ibmcloud oc cluster create vpc-gen2 --name myvpc-cluster --zone us-south-1 --version 4.21_openshift --flavor bx2.4x16 --workers 2 [--operating-system REDHAT_8_64] --vpc-id VPC_ID --subnet-id VPC_SUBNET_ID --cos-instance COS_CRN --disable-outbound-traffic-protection
    
  5. Elenca i dettagli del tuo cluster. Esamina lo Stato del cluster, controlla il Dominio secondario Ingress e prendi nota dell'URL master. La creazione del tuo cluster potrebbe richiedere del tempo per essere completata. Una volta che lo stato del cluster risulta “Normale”, la rete del cluster e i componenti Ingress impiegano circa altri 10 minuti per completare la distribuzione e l’aggiornamento del dominio del cluster utilizzato per la console web Red Hat OpenShift e per altri percorsi. Prima di continuare, attendi finché il cluster è pronto controllando che il Dominio secondario Ingress segua un modello di <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud.

    ibmcloud oc cluster get --cluster myvpc-cluster
    
  6. Aggiungiti come utente al cluster Red Hat OpenShift impostando il contesto del cluster.

    ibmcloud oc cluster config --cluster myvpc-cluster --admin
    
  7. Nel tuo browser, passa all'indirizzo del tuo URL master URL e aggiungi /console. Ad esempio, https://c0.containers.cloud.ibm.com:23652/console. Se il tempo lo consente, è possibile esplorare le diverse sezioni della console web di Red Hat OpenShift.

  8. Dalla barra dei menu della console web di Red Hat OpenShift, fai clic sul tuo profilo IAM#user.name@email.com > Copia comando di accesso. Visualizza e copia il comando " oc login " nella riga di comando per eseguire l'autenticazione tramite la CLI.

    Salva l' URL e del master del cluster per poter accedere in seguito alla console Red Hat OpenShift. Nelle sessioni future, puoi saltare il passo cluster config e copiare invece il comando di login dalla console.

  9. Verifica che i comandi oc vengano eseguiti correttamente con il tuo cluster controllando la versione.

    oc version
    

    Output di esempio

    Client Version: v4.21.0
    Kubernetes Version: v1.35.7.2
    

    Se non è possibile eseguire operazioni che richiedono autorizzazioni di amministratore, come l'elenco di tutti i nodi di lavoro o dei pod in un cluster, scaricare i certificati e i file di autorizzazione " TLS " per l'amministratore del cluster eseguendo il comando ibmcloud oc cluster config --cluster myvpc-cluster --admin .

Distribuisci un'app sul tuo cluster

Distribuisci rapidamente una nuova applicazione di esempio disponibile per le richieste solo all'interno del cluster.

  1. Crea un progetto " Red Hat OpenShift " per la tua app "Hello World".

    oc new-project hello-world
    
  2. Compila l'app di esempio partendo dal codice sorgente. Con il comando Red Hat OpenShiftnew-app , è possibile fare riferimento a una directory in un repository remoto che contiene il file Dockerfile e il codice dell'applicazione per creare l'immagine. Il comando crea l'immagine, la memorizza nel registro Docker locale e crea le configurazioni di distribuzione dell'app (dc) e i servizi (svc). Per ulteriori informazioni sulla creazione di nuove applicazioni, consulta la Red Hat OpenShift documentazione.

    oc new-app --name hello-world https://github.com/IBM/container-service-getting-started-wt --context-dir="Lab 1"
    
  3. Verifica che i componenti dell'applicazione Hello World di esempio siano stato creati.

    1. Elenca i servizi hello-world e prendi nota del nome servizio. Finora, la tua applicazione resta in ascolto del traffico solo su questi indirizzi IP del cluster interno. Nella prossima lezione, creerai un programma di bilanciamento del carico per il servizio per poter inoltrare le richieste di traffico esterno all'applicazione.
        oc get svc -n hello-world
        ```
        Output di esempio
        ```sh {: screen}
        NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
        hello-world   ClusterIP   172.21.xxx.xxx   <none>       8080/TCP   31m
        ```
    2. Elenca i pod. I pod che hanno `build` nel nome sono lavori che sono stati **completati** come parte de processo di build della nuova applicazione. Assicura che lo stato del pod **hello-world** sia **Running**.
    ```sh {: pre}
        oc get pods -n hello-world
        ```
        Output di esempio
        ```sh {: screen}
        NAME                  READY     STATUS             RESTARTS   AGE
        hello-world-1-9cv7d   1/1       Running            0          30m
        hello-world-1-build   0/1       Completed          0          31m
        hello-world-1-deploy  0/1       Completed          0          31m
        ```
    
    
    

Configura un bilanciatore di carico VPC per rendere pubblica la tua app

Configura un programma di bilanciamento del carico VPC per esporre la tua applicazione a richieste esterne sulla rete pubblica.

Quando crei un servizio LoadBalancer Kubernetes nel tuo cluster, un programma di bilanciamento del carico VPC viene creato automaticamente nel tuo VPC all'esterno del cluster. Il programma di bilanciamento del carico VPC è multizonale e instrada le richieste per la tua applicazione tramite le NodePort private che vengono aperte automaticamente sui tuoi nodi di lavoro. Il seguente diagramma illustra il modo in cui un utente accede al servizio di un'applicazione tramite il programma di bilanciamento del carico VPC, anche se il tuo nodo di lavoro è connesso solo a una sottorete privata.

  1. Crea un servizio LoadBalancer Kubernetes nel tuo cluster per esporre pubblicamente l'applicazione hello world.

    oc expose deployment/hello-world --type=LoadBalancer --name=hw-lb-svc  --port=8080 --target-port=8080 -n hello-world
    

    Output di esempio

    service "hw-lb-svc" exposed
    
    Ulteriori informazioni sui parametri di esposizione
    Parametro Descrizione
    expose Esponi una risorsa Kubernetes, ad esempio una distribuzione, come servizio in modo che gli utenti possano accedere alla risorsa utilizzando il nome host del programma di bilanciamento del carico VPC.
    dc/<hello-world-deployment> Il nome e il tipo della risorsa da esporre con questo servizio.
    --name=<hello-world-service> Il nome del servizio.
    --type=LoadBalancer Il tipo di servizio da creare. In questa lezione, crei un servizio LoadBalancer.
    --port=<8080> La porta su cui il servizio è in ascolto per il traffico di rete esterno.
    --target-port=<8080> La porta su cui la tua applicazione è in ascolto e a cui il servizio indirizza il traffico di rete in entrata. In questo esempio, la target-port è uguale alla port ma le altre applicazioni che crei potrebbero utilizzare una porta differente.
    -n <hello-world> Lo spazio dei nomi in cui si trova la tua distribuzione.
  2. Verifica che il servizio LoadBalancer Kubernetes sia stato creato correttamente nel tuo cluster. Quando crei il servizio LoadBalancer Kubernetes, per te viene creato automaticamente un programma di bilanciamento del carico VPC. Il programma di bilanciamento del carico VPC assegna un nome host al tuo servizio LoadBalancer Kubernetes che puoi visualizzare nel campo LoadBalancer Ingress nell'output della CLI. In VPC, ai servizi nel tuo cluster viene assegnato un nome host poiché l'indirizzo IP esterno per il servizio non è stabile. Il programma di bilanciamento del carico VPC impiega qualche minuto ad eseguire il provisioning nel tuo VPC. Finché il bilanciatore di carico VPC non sarà pronto, non sarà possibile accedere al servizio Kubernetes LoadBalancer tramite il suo nome host.

    oc describe service hw-lb-svc -n hello-world
    

    Output della CLI di esempio:

    NAME:                     hw-lb-svc
    Namespace:                default
    Labels:                   app=hello-world-deployment
    Annotations:              <none>
    Selector:                 app=hello-world-deployment
    Type:                     LoadBalancer
    IP:                       172.21.xxx.xxx
    LoadBalancer Ingress:     1234abcd-us-south.lb.appdomain.cloud
    Port:                     <unset> 8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset> 32040/TCP
    Endpoints:
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:
        Type    Reason                Age   From                Message
        ----    ------                ----  ----                -------
        Normal  EnsuringLoadBalancer  1m    service-controller  Ensuring load balancer
        Normal  EnsuredLoadBalancer   1m    service-controller  Ensured load balancer
    
  3. Verifica che il programma di bilanciamento del carico VPC sia stato creato correttamente nel tuo VPC. Nell'output, verifica che il programma di bilanciamento del carico VPC abbia uno Stato di provisioning di active e uno Stato operativo di online.

    Il bilanciatore di carico VPC è denominato secondo il formato kube-<cluster_ID>-<kubernetes_lb_service_UID>. Per visualizzare l'ID del cluster, esegui il comando ibmcloud oc cluster get --cluster CLUSTER_NAME``. Per visualizzare l'IUD del servizio LoadBalancer Kubernetes, esegui kubectl get svc hw-lb-svc -o yaml e cerca il campo metadata.uid nell'output.

    ibmcloud is load-balancers
    

    Nell'esempio seguente, che riporta l'output della CLI, viene creato il bilanciatore di carico VPC denominato " kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306 " per il servizio " Kubernetes " LoadBalancer:

    ID                                          Name                                                         Family        Subnets               Is public   Provision status   Operating status   Resource group
    r006-d044af9b-92bf-4047-8f77-a7b86efcb923   kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306   Application   mysubnet-us-south-3   true        active             online             default
    
  4. Invia una richiesta alla tua app utilizzando curl con il nome host e la porta del servizio Kubernetes LoadBalancer assegnato dal bilanciatore di carico VPC che hai individuato al punto 2. Esempio:

    curl 1234abcd-us-south.lb.appdomain.cloud:8080
    

    Output di esempio

    Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster!
    
  5. Facoltativo: per ripulire le risorse che hai creato in questa lezione, puoi utilizzare le etichette assegnate a ciascuna applicazione.

    1. Elenca tutte le risorse per ogni applicazione nel progetto hello-world.
        oc get all -l app=hello-world -o name -n hello-world
        ```
        Output di esempio
        ```sh {: screen}
        pod/hello-world-1-dh2ff
        replicationcontroller/hello-world-1
        service/hello-world
        deploymentconfig.apps.openshift.io/hello-world
        buildconfig.build.openshift.io/hello-world
        build.build.openshift.io/hello-world-1
        imagestream.image.openshift.io/hello-world
        imagestream.image.openshift.io/node
        ```
    2. Elimina tutte le risorse che hai creato.
    ```sh {: pre}
        oc delete all -l app=hello-world -n hello-world
        ```
    
    

Operazioni successive

Ora che hai un cluster VPC, impara di più su quello che puoi fare.

Hai bisogno di aiuto, hai domande o vuoi dare un feedback sui cluster VPC? Prova a pubblicare nel canale Slack.