Ersten Cluster in Virtual Private Cloud (VPC) einrichten

Virtual Private Cloud

Erstellen Sie in Ihrer Virtual Private Cloud (VPC) einen Red Hat® OpenShift® on IBM Cloud®-Cluster.

  • Red Hat OpenShift on IBM Cloud bietet Ihnen alle Vorteile eines Managed-Service-Angebots für Ihre Cluster-Infrastrukturumgebung, während Sie für Ihre Anwendungsbereitstellungen die Tools und den Katalog von Red Hat OpenShift nutzen, die auf Red Hat Enterprise Linux laufen.
  • Die VPC gibt Ihnen die Sicherheit einer privaten Cloudumgebung mit der dynamischen Skalierbarkeit einer öffentlichen Cloud. VPC verwendet die nächste Version von Red Hat OpenShift on IBM Cloud-Infrastrukturprovidern mit einer ausgewählten Gruppe von API-, CLI- und Konsolenfunktionen der Version 2.
  • In diesem Tutorial wird mit ibmcloud CLI-Befehlen ein Cluster in VPC erstellt. Alternativ können Sie ein Open-Source- und unternehmenstaugliches Terraform-Modul für die Bereitstellung eines OpenShift-Clusters auf einer VPC-Infrastruktur verwenden. Sie können weitere Module in der Terraform IBM Modules Registry finden.

Zielgruppe

Das vorliegende Lernprogramm ist für Administratoren konzipiert, die zum ersten Mal einen Cluster in Red Hat OpenShift on IBM Cloud in der VPC-Datenverarbeitungsinfrastruktur erstellen.

Ziele

In den Einheiten des Lernprogramms erstellen Sie einen Red Hat OpenShift on IBM Cloud-Cluster in einer VPC. Anschließend greifen Sie auf integrierte Red Hat OpenShift-Komponenten zu, stellen eine App in einem Red Hat OpenShift-Projekt bereit und machen die App über einen VPC-Load-Balancer zugänglich, sodass externe Benutzer auf den Dienst zugreifen können.

Was Sie erhalten

In diesem Tutorial erstellen Sie die folgenden Ressourcen. Es gibt optionale Schritte zum Löschen dieser Ressourcen, wenn Sie sie nach dem Durcharbeiten des Lernprogramms nicht beibehalten möchten.

  • Ein VPC-Cluster
  • Eine einfache Hello World-App, die in Ihrem Cluster bereitgestellt wird
  • Eine VPC-Lastausgleichsfunktion zum Verfügbarmachen Ihrer App

Voraussetzungen

Führen Sie die folgenden vorausgesetzten Schritte aus, um die Berechtigungen und die Befehlszeilenumgebung einzurichten.

Berechtigungen
Wenn Sie der Kontoinhaber sind, verfügen Sie bereits über die erforderlichen Berechtigungen zum Erstellen eines Clusters und können mit dem nächsten Schritt fortfahren. Andernfalls wenden Sie sich an den Kontoeigner, um den API-Schlüssel einrichten und sich die mindestens erforderlichen Benutzerberechtigungen in IBM Cloud IAM zuweisen zu lassen.
Befehlszeilentools
Um über die Befehlszeile schnell auf Ihre Ressourcen zugreifen zu können, probieren Sie den Befehl IBM Cloud Shell. Alternativ können Sie Ihre lokale Befehlszeilenumgebung durch die folgenden Schritte einrichten.
  1. Installieren Sie die IBM Cloud-CLI (ibmcloud), das Kubernetes Service-Plug-in (ibmcloud oc) und das IBM Cloud Container Registry-Plug-in (ibmcloud cr).
  2. Installieren Sie die Befehlszeilenschnittstellen (CLIs) für Red Hat OpenShift (oc) und Kubernetes (kubectl).
  3. Zur Arbeit mit VPC installieren Sie das Plug-in infrastructure-service. Das Präfix für die Ausführung von Befehlen ist ibmcloud is.
    ibmcloud plugin install infrastructure-service
    ```
4. Aktualisieren Sie Ihr Kubernetes Service-Plug-in auf die neueste Version.
```sh {: pre}
    ibmcloud plugin update kubernetes-service
    ```


Cluster in einer VPC erstellen

Erstellen Sie eine VPC-Umgebung in IBM Cloud. Erstellen Sie anschließend in der VPC-Infrastruktur einen Red Hat OpenShift on IBM Cloud-Cluster. Weitere Informationen zu VPC enthält die Einführung in Virtual Private Cloud.

  1. Melden Sie sich bei dem Konto sowie der Ressourcengruppe und der IBM Cloud-Region an, in der Ihre VPC-Umgebung erstellt werden soll. Die VPC muss in derselben Multizonen-Metropolregion eingerichtet werden, in der Sie Ihren Cluster erstellen möchten. In diesem Lernprogramm erstellen Sie eine VPC in der Region us-south (USA - Süden). Informationen zu anderen unterstützten Regionen finden Sie unter Mehrzonenmetropolen für VPC-Cluster. Wenn Sie über eine föderierte ID verfügen, geben Sie die Option --sso an.

    ibmcloud login -r us-south [-g <resource_group>] [--sso]
    
  2. Erstellen Sie eine VPC für Ihren Cluster. Weitere Informationen finden Sie in der Dokumentation zur Erstellung einer VPC in der Konsole oder in der Befehlszeilenschnittstelle (CLI).

    1. Erstellen Sie eine VPC mit dem Namen myvpc und notieren Sie die ID in der Ausgabe. VPCs stellen eine isolierte Umgebung für Ihre Workloads für die Ausführung in der öffentlichen Cloud bereit. Sie können dieselbe VPC für mehrere Cluster verwenden, zum Beispiel wenn Sie planen, auf verschiedenen Clustern separate Microservices bereitzustellen, die miteinander kommunizieren müssen. Wenn Sie Ihre Cluster voneinander trennen möchten, zum Beispiel für verschiedene Abteilungen, können Sie eine VPC für jeden Cluster erstellen.
        ibmcloud is vpc-create myvpc
        ```
    2. Erstellen Sie ein öffentliches Gateway und notieren Sie die **ID** in der Ausgabe. Im nächsten Schritt werden Sie das öffentliche Gateway an ein VPC-Teilnetz anschließen, sodass Ihre Workerknoten über das öffentliche Netz kommunizieren können. Für Red Hat OpenShift-Standardkomponenten wie die Webkonsole und den OperatorHub ist ein öffentlicher Netzzugriff erforderlich. Wenn Sie diesen Schritt überspringen, müssen Sie stattdessen mit Ihrem privaten VPC-Netz verbunden sein (z. B. über eine VPN-Verbindung), um auf die Red Hat OpenShift-Webkonsole zuzugreifen oder um mit `kubectl`-Befehlen auf Ihren Cluster zuzugreifen.
    ```sh {: pre}
        ibmcloud is public-gateway-create gateway-us-south-1 <vpc_ID> us-south-1
        ```
    3. Erstellen Sie ein Teilnetz für Ihre VPC und notieren Sie die **ID** des Teilnetzes. Berücksichtigen Sie bei der Erstellung des VPC-Teilnetzes die folgenden Informationen:
        *  **Zonen:** Sie müssen jeweils ein VPC-Teilnetz für jede Zone in Ihrem Cluster erstellen. Die verfügbaren Zonen hängen von der Region ab, in der Sie die VPC erstellt haben. Führen Sie zum Auflisten der verfügbaren Zonen in der Region den Befehl `ibmcloud is zones` aus.
        *  **IP-Adressen:** VPC-Teilnetze stellen private IP-Adressen für Ihre Workerknoten und Services für Lastausgleichsfunktionen in Ihrem Cluster bereit. Daher müssen Sie ein [Teilnetz mit einer ausreichenden Anzahl an IP-Adressen erstellen](/docs/openshift?topic=openshift-vpc-subnets#vpc_basics_subnets), beispielsweise 256. Sie können die Anzahl der IP-Adressen, die in einem VPC-Teilnetz verwendet werden, später nicht mehr ändern.
        *  **Öffentliche Gateways**: Nehmen Sie das zuvor erstellte öffentliche Gateway auf. Sie müssen für jede Zone in Ihrem Cluster ein öffentliches Gateway haben.
    
            ```sh {: pre}
            ibmcloud is subnet-create mysubnet1 VPC_ID --zone us-south-1 --ipv4-address-count 256 --pgw GATEWAY_ID
            ```
    Wenn Sie mehrere Zonen haben, wiederholen Sie diese Schritte für jede Zone.
    {: tip}
    
    
  3. Erstellen Sie eine Standardinstanz von IBM Cloud Object Storage, um die interne Registry Ihres Clusters zu sichern. Notieren Sie die Instanz-ID aus der Ausgabe.

    ibmcloud resource service-instance-create myvpc-cos cloud-object-storage standard global
    
  4. Erstellen Sie einen Cluster in Ihrer VPC in derselben Zone wie das Teilnetz. Der folgende Befehl erstellt einen Version 4.21-Cluster in Dallas mit der Mindestkonfiguration von 2 Worker-Knoten, die über mindestens 4 Kerne und 16 GB Arbeitsspeicher verfügen, damit die Standardkomponenten von Red Hat OpenShift bereitgestellt werden können. Weitere Informationen zu den Befehlsoptionen finden Sie in den Referenzdokumenten zur 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. Listen Sie die Clusterdetails auf. Prüfen Sie den Clusterstatus und die Ingress-Unterdomäne und notieren Sie sich die Master-URL. Das Erstellen des Clusters kann einige Zeit in Anspruch nehmen. Wenn der Clusterstatus Normal anzeigt, benötigen das Clusternetz und die Ingress-Komponenten ca. 10 weitere Minuten, um die Clusterdomäne, die Sie für die Red Hat OpenShift-Webkonsole und andere Routen verwenden, bereitzustellen und zu aktualisieren. Bevor Sie fortfahren, warten Sie, bis der Cluster bereit ist, indem Sie überprüfen, ob die Ingress-Unterdomäne dem Muster <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud folgt.

    ibmcloud oc cluster get --cluster myvpc-cluster
    
  6. Fügen Sie sich als Benutzer zum Red Hat OpenShift-Cluster hinzu, indem Sie den Clusterkontext festlegen.

    ibmcloud oc cluster config --cluster myvpc-cluster --admin
    
  7. Navigieren Sie in Ihrem Browser zur Adresse der Master-URL und hängen Sie /console an. Zum Beispiel https://c0.containers.cloud.ibm.com:23652/console. Wenn es Ihre Zeit zulässt, können Sie die verschiedenen Bereiche der Red Hat OpenShift-Webkonsole erkunden.

  8. Klicken Sie in der Menüleiste der Webkonsole von Red Hat OpenShift auf Ihr Profil IAM#user.name@email.com > Anmeldebefehl kopieren. Zeigen Sie den Token-Befehl oc login an und kopieren Sie ihn in Ihre Befehlszeile zwecks Authentifizierung mittels der CLI.

    Speichern Sie Ihre Cluster-Master-URL, um später auf die Red Hat OpenShift-Konsole zuzugreifen. In zukünftigen Sitzungen können Sie den Schritt mit cluster config überspringen und den Anmeldebefehl stattdessen von der Konsole kopieren.

  9. Stellen Sie sicher, dass die oc-Befehle mit Ihrem Cluster ordnungsgemäß ausgeführt werden, indem Sie die Version überprüfen.

    oc version
    

    Beispielausgabe

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

    Wenn Sie keine Operationen ausführen können, die Administratorberechtigungen erfordern, z. B. das Auflisten aller Workerknoten oder Pods in einem Cluster, laden Sie die TLS-Zertifikate und Berechtigungsdateien für den Clusteradministrator herunter, indem Sie den Befehl ibmcloud oc cluster config --cluster myvpc-cluster --admin ausführen.

App in Ihrem Cluster bereitstellen

Stellen Sie schnell eine neue Beispiel-App bereit, die nur für clusterinterne Anforderungen verfügbar ist.

  1. Erstellen Sie ein Red Hat OpenShift-Projekt für Ihre Hello World-App.

    oc new-project hello-world
    
  2. Erstellen Sie die Beispiel-App anhand des Quellcodes. Mit dem Red Hat OpenShift-Befehl new-app können Sie auf ein Verzeichnis in einem fernen Repository verweisen, das die Dockerfile und den App-Code zum Erstellen Ihres Image enthält. Der Befehl erstellt das Image, speichert es in der lokalen Docker-Registry und legt die App-Bereitstellungskonfigurationen (dc) sowie die Dienste (svc) an. Weitere Informationen zum Erstellen neuer Apps finden Sie in der Dokumentation zu Red Hat OpenShift.

    oc new-app --name hello-world https://github.com/IBM/container-service-getting-started-wt --context-dir="Lab 1"
    
  3. Stellen Sie sicher, dass die Komponenten der Beispiel-App "Hello World" erstellt wurden.

    1. Listen Sie die hello-world-Services auf und notieren Sie den Servicenamen. Bisher ist Ihre App nur für den Datenverkehr unter diesen internen Cluster-IP-Adressen empfangsbereit. In der nächsten Lerneinheit werden Sie eine Lastausgleichsfunktion für den Service erstellen, sodass die Lastausgleichsfunktion externe Datenverkehrsanforderungen an die App weiterleiten kann.
        oc get svc -n hello-world
        ```
        Beispielausgabe
        ```sh {: screen}
        NAME          TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
        hello-world   ClusterIP   172.21.xxx.xxx   <none>       8080/TCP   31m
        ```
    2. Listen Sie die Pods auf. Pods mit `build` im Namen sind Jobs, die im Rahmen des Erstellungsprozesses für die neue App **ausgeführt** wurden. Stellen Sie sicher, dass der Pod **hello-world** den Status **Running** (Aktiv) aufweist.
    ```sh {: pre}
        oc get pods -n hello-world
        ```
        Beispielausgabe
        ```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
        ```
    
    
    

VPC-Lastausgleichsfunktion einrichten, um Ihre App öffentlich zugänglich zu machen

Richten Sie eine VPC-Lastausgleichsfunktion ein, um Ihre App für Anforderungen aus dem öffentlichen Netz zugänglich zu machen.

Wenn Sie einen Kubernetes-Service vom Typ LoadBalancer (Lastausgleichsfunktion) in Ihrem Cluster erstellen, wird eine VPC-Lastausgleichsfunktion automatisch in Ihrer VPC außerhalb Ihres Clusters erstellt. Die VPC-Lastausgleichsfunktion arbeitet mit mehreren Zonen und leitet Anforderungen für Ihre App über die privaten Knotenports (NodePorts) weiter, die automatisch auf Ihren Workerknoten geöffnet werden. Das folgende Diagramm zeigt, wie ein Benutzer auf den Service einer App über die VPC-Lastausgleichsfunktion zugreift, auch wenn der Workerknoten nur mit einem privaten Teilnetz verbunden ist.

  1. Erstellen Sie einen Kubernetes Service vom Typ LoadBalancer in Ihrem Cluster, um die App 'hello world' öffentlich zugänglich zu machen.

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

    Beispielausgabe

    service "hw-lb-svc" exposed
    
    Weitere Informationen zu den Parametern von 'expose'
    Parameter Beschreibung
    expose Macht eine Kubernetes-Ressource (Bereitstellung) als Service zugänglich, sodass Benutzer auf die Ressource über den Hostnamen der VPC-Lastausgleichsfunktion zugreifen können.
    dc/<hello-world-deployment> Der Ressourcentyp und der Name der Ressource, die mit diesem Service verfügbar gemacht werden soll.
    --name=<hello-world-service> Der Name des Service.
    --type=LoadBalancer Der Typ des Service, der erstellt werden soll. In dieser Lerneinheit erstellen Sie einen Service vom Typ LoadBalancer.
    --port=<8080> Der Port, über den der Service für externen Netzverkehr empfangsbereit ist.
    --target-port=<8080> Der Port, über den Ihre App empfangsbereit ist und an den der Service eingehenden Netzverkehr leitet. In diesem Beispiel stimmt der Zielport (target-port) mit dem Port (port) überein, jedoch können andere Apps, die Sie erstellen, auch einen anderen Port verwenden.
    -n <hello-world> Der Namensbereich, in dem sich Ihre Bereitstellung befindet.
  2. Überprüfen Sie, ob der Kubernetes Service vom Typ LoadBalancer in Ihrem Cluster erfolgreich erstellt wurde. Wenn Sie den Kubernetes Service LoadBalancer erstellen, wird automatisch eine VPC-Lastausgleichsfunktion für Sie erstellt. Die VPC-Lastausgleichsfunktion ordnet Ihrem Kubernetes-LoadBalancer-Service einen Hostnamen zu, den Sie im Feld LoadBalancer Ingress Ihrer CLI-Ausgabe sehen können. In einer VPC wird den Services in Ihrem Cluster ein Hostname zugeordnet, weil die externe IP-Adresse für den Service nicht stabil ist. Die Bereitstellung der VPC-Lastausgleichsfunktion in Ihrer VPC dauert einige Minuten. Sie können erst über den zugehörigen Hostnamen auf den Kubernetes LoadBalancer-Service zugreifen, wenn die VPC-Lastausgleichsfunktion betriebsbereit ist.

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

    CLI-Beispielausgabe:

    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. Überprüfen Sie, ob die VPC-Lastausgleichsfunktion in Ihrer VPC erfolgreich erstellt wurde. Überprüfen Sie, ob in der Ausgabe die VPC-Lastausgleichsfunktion den Bereitstellungsstatus active und den Betriebsstatus online aufweist.

    Der Name der VPC-Lastausgleichsfunktion hat das Format kube-<cluster_ID>-<kubernetes_lb_service_UID>. Führen Sie ibmcloud oc cluster get --cluster CLUSTER_NAME aus, um Ihre Cluster-ID anzuzeigen. Zum Ermitteln der UID des Kubernetes Service vom Typ LoadBalancer führen Sie den Befehl kubectl get svc hw-lb-svc -o yaml aus und suchen in der Ausgabe nach dem Feld metadata.uid.

    ibmcloud is load-balancers
    

    In der folgenden Beispielausgabe der Befehlszeilenschnittstelle wird die erstellte VPC-Lastausgleichsfunktion namens kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306 für den Kubernetes Service vom Typ LoadBalancer angezeigt:

    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. Senden Sie eine Anforderung an Ihre App, indem Sie den Hostnamen und den Port des Kubernetes-Service vom Typ LoadBalancer (siehe Schritt 2), der jeweils von der VPC-Lastausgleichsfunktion zugewiesen wurde, mit Curl aufrufen. Beispiel:

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

    Beispielausgabe

    Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster!
    
  5. Optional: Um die Ressourcen zu bereinigen, die Sie in dieser Lerneinheit erstellt haben, können Sie die Bezeichnungen verwenden, die den einzelnen Apps zugeordnet sind.

    1. Listen Sie alle Ressourcen für die einzelnen Apps im Projekt hello-world auf.
        oc get all -l app=hello-world -o name -n hello-world
        ```
        Beispielausgabe
        ```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. Löschen Sie alle Ressourcen, die Sie erstellt haben.
    ```sh {: pre}
        oc delete all -l app=hello-world -n hello-world
        ```
    
    

Weitere Schritte

Jetzt, da Sie über einen VPC-Cluster verfügen, können Sie sich eingehender über die verfügbaren Möglichkeiten informieren.

Benötigen Sie Hilfe, haben Sie fragen oder wollen Sie ein Feedback zu VPC-Clustern zurückgeben? Versuchen Sie, im Slack-Kanalzu posten.