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.
- Installieren Sie die IBM Cloud-CLI (
ibmcloud), das Kubernetes Service-Plug-in (ibmcloud oc) und das IBM Cloud Container Registry-Plug-in (ibmcloud cr). - Installieren Sie die Befehlszeilenschnittstellen (CLIs) für Red Hat OpenShift (
oc) und Kubernetes (kubectl). - Zur Arbeit mit VPC installieren Sie das Plug-in
infrastructure-service. Das Präfix für die Ausführung von Befehlen istibmcloud 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 ``` - Installieren Sie die IBM Cloud-CLI (
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.
-
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--ssoan.ibmcloud login -r us-south [-g <resource_group>] [--sso] -
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).
- Erstellen Sie eine VPC mit dem Namen
myvpcund 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} - Erstellen Sie eine VPC mit dem Namen
-
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 -
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 -
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.cloudfolgt.ibmcloud oc cluster get --cluster myvpc-cluster -
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 -
Navigieren Sie in Ihrem Browser zur Adresse der Master-URL und hängen Sie
/consolean. Zum Beispielhttps://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. -
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 loginan 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. -
Stellen Sie sicher, dass die
oc-Befehle mit Ihrem Cluster ordnungsgemäß ausgeführt werden, indem Sie die Version überprüfen.oc versionBeispielausgabe
Client Version: v4.21.0 Kubernetes Version: v1.35.7.2Wenn 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 --adminausführen.
App in Ihrem Cluster bereitstellen
Stellen Sie schnell eine neue Beispiel-App bereit, die nur für clusterinterne Anforderungen verfügbar ist.
-
Erstellen Sie ein Red Hat OpenShift-Projekt für Ihre Hello World-App.
oc new-project hello-world -
Erstellen Sie die Beispiel-App anhand des Quellcodes. Mit dem Red Hat OpenShift-Befehl
new-appkö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" -
Stellen Sie sicher, dass die Komponenten der Beispiel-App "Hello World" erstellt wurden.
- 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.
-
Erstellen Sie einen Kubernetes Service vom Typ
LoadBalancerin 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-worldBeispielausgabe
service "hw-lb-svc" exposedWeitere Informationen zu den Parametern von 'expose' Parameter Beschreibung exposeMacht 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=LoadBalancerDer 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. -
Überprüfen Sie, ob der Kubernetes Service vom Typ
LoadBalancerin Ihrem Cluster erfolgreich erstellt wurde. Wenn Sie den Kubernetes ServiceLoadBalancererstellen, 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 KubernetesLoadBalancer-Service zugreifen, wenn die VPC-Lastausgleichsfunktion betriebsbereit ist.oc describe service hw-lb-svc -n hello-worldCLI-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 -
Ü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
activeund den Betriebsstatusonlineaufweist.Der Name der VPC-Lastausgleichsfunktion hat das Format
kube-<cluster_ID>-<kubernetes_lb_service_UID>. Führen Sieibmcloud oc cluster get --cluster CLUSTER_NAMEaus, um Ihre Cluster-ID anzuzeigen. Zum Ermitteln der UID des Kubernetes Service vom TypLoadBalancerführen Sie den Befehlkubectl get svc hw-lb-svc -o yamlaus und suchen in der Ausgabe nach dem Feld metadata.uid.ibmcloud is load-balancersIn der folgenden Beispielausgabe der Befehlszeilenschnittstelle wird die erstellte VPC-Lastausgleichsfunktion namens
kube-bsaucubd07dhl66e4tgg-1f4f408ce6d2485499bcbdec0fa2d306für den Kubernetes Service vom TypLoadBalancerangezeigt: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 -
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:8080Beispielausgabe
Hello world from hello-world-deployment-5fd7787c79-sl9hn! Your app is up and running in a cluster! -
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.
- Listen Sie alle Ressourcen für die einzelnen Apps im Projekt
hello-worldauf.
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 ``` - Listen Sie alle Ressourcen für die einzelnen Apps im Projekt
Weitere Schritte
Jetzt, da Sie über einen VPC-Cluster verfügen, können Sie sich eingehender über die verfügbaren Möglichkeiten informieren.
- Blockspeicher für Apps einrichten
- Interne Image-Registry in IBM Cloud Object Storage sichern
- Einschränkungen für VPC-Cluster
- Informationen zur API der Version 2
Benötigen Sie Hilfe, haben Sie fragen oder wollen Sie ein Feedback zu VPC-Clustern zurückgeben? Versuchen Sie, im Slack-Kanalzu posten.