Skalierbare Webanwendung unter Red Hat OpenShift on IBM Cloud
Für dieses Lernprogramm können Kosten anfallen. Mit dem Kostenschätzer können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung generieren.
In diesem Tutorial erfahren Sie, wie Sie eine Anwendung in einem Red Hat OpenShift on IBM Cloud cluster aus einem entfernten Git Repository bereitstellt, die Anwendung auf einer Route bereitstellt, den Zustand der Umgebung überwacht und die Anwendung skaliert. Darüber hinaus lernen Sie, wie Sie eine private Container-Registry verwenden, eine Anwendung aus einem privaten Git-Repository bereitstellen und eine benutzerdefinierte Domain an die Anwendung binden.
Mit Red Hat OpenShift on IBM Cloudkönnen Sie Kubernetes-Cluster mit Workerknoten erstellen, die mit der OpenShift Container Platforminstalliert werden. Weitere Informationen über die Architektur von OpenShift Container Platform finden Sie in den Dokumenten von Red Hat OpenShift. Sie erhalten alle Vorteile eines verwalteten Service für Ihren Cluster.
Ziele
- Anwendung im Red Hat OpenShift on IBM Cloud-Cluster bereitstellen
- Angepasste Domäne binden
- Protokolle und Status des Clusters überwachen
- Red Hat OpenShift on IBM Cloud-Pods skalieren
- Der Entwickler implementiert eine Webanwendung mit dem Code aus einem fernen Git-Repository. Optional kann der Entwickler den Code auch in ein privates Git Repository auf IBM Cloud stellen.
- Aus dem Code wird ein Container-Image erstellt.
- Das Image wird in eine lokale Container-Registry, die mit dem Cluster geliefert wird, oder in einen Namespace im IBM Cloud Container Registry übertragen.
- Die Anwendung wird auf einem Red Hat OpenShift on IBM Cloud-Cluster bereitgestellt, indem das Image gezogen wird.
- Benutzer greifen über eine öffentliche Route auf die Anwendung zu.
Vorbereitende Schritte
Für dieses Lernprogramm ist Folgendes erforderlich:
- IBM Cloud CLI,
- IBM Cloud Kubernetes Service-Plug-in (
kubernetes-service) - (Optional) Container Registry-Plug-in (
container-registry)
- IBM Cloud Kubernetes Service-Plug-in (
- Docker-Engine
ocfür die Interaktion mit Red Hat OpenShift on IBM Cloud,git, um das Quellcode-Repository zu klonen,- (optional) IBM Cloud GitLab konfiguriert mit Ihrem SSH-Schlüssel. Lesen Sie die Anweisungen in den Abschnitten
Generate an SSH key pairundAdd an SSH key to your GitLab accountder -Dokumentation hier.
Anweisungen zum Herunterladen und Installieren dieser Tools für Ihre Betriebsumgebung finden Sie in der Anleitung zur Einführung in die Lernprogramme.
Um die Installation dieser Tools zu vermeiden, können Sie Cloud Shell über die IBM Cloud-Konsole verwenden. Verwenden Sie oc version, um sicherzustellen, dass die Version der Red Hat OpenShift on IBM Cloud-CLI
Ihrer Clusterversion entspricht (4.13.x). Wenn diese nicht übereinstimmt, installieren Sie die übereinstimmende Version, indem Sie diese Anweisungen befolgen.
Darüber hinaus muss ein Registry-Namensbereich eingerichtet werden.
Red Hat OpenShift on IBM Cloud-Cluster erstellen
Mit Red Hat OpenShift on IBM Cloud haben Sie eine schnelle und sichere Möglichkeit zur Containerisierung und Bereitstellung von Unternehmens-Workloads auf Kubernetes Clustern. Red Hat OpenShift on IBM Cloud clusters baut auf Kubernetes Container-Orchestrierung auf, die Konsistenz und Flexibilität für Ihren Entwicklungslebenszyklus bietet.
In diesem Abschnitt stellen Sie einen Red Hat OpenShift on IBM Cloud-Cluster in einer (1) Zone mit zwei (2) Workerknoten bereit:
- Erstellen Sie einen Red Hat OpenShift on IBM Cloud-Cluster aus dem IBM Cloud®-Katalog.
- Wählen Sie unter Infrastruktur VPC oder Klassisch aus.
- Für Red Hat OpenShift on IBM Cloud auf einer VPC-Infrastruktur müssen Sie vor der Erstellung des Clusters eine VPC und ein Subnetz erstellen. Erstellen oder verwenden Sie eine vorhandene VPC unter Berücksichtigung der folgenden Anforderungen:
- Ein Teilnetz, das für dieses Lernprogramm verwendet werden kann. Notieren Sie die Zone und den Namen des Teilnetzes.
- Dem Teilnetz ist ein öffentliches Gateway zugeordnet. Weitere Informationen finden Sie unter VPC-Cluster erstellen.
- Für Red Hat OpenShift on IBM Cloud auf einer VPC-Infrastruktur müssen Sie vor der Erstellung des Clusters eine VPC und ein Subnetz erstellen. Erstellen oder verwenden Sie eine vorhandene VPC unter Berücksichtigung der folgenden Anforderungen:
- Gehen Sie unter Standort wie folgt vor:
- Für die Red Hat OpenShift on IBM Cloud on VPC-Infrastruktur:
- Inaktivieren Sie die nicht zutreffenden Zonen und Teilnetze.
- Überprüfen Sie in der gewünschten Zone den gewünschten Teilnetznamen; falls dieser nicht vorhanden ist, klicken Sie auf das Bearbeitungssymbol (Stiftsymbol), um den gewünschten Teilnetznamen auszuwählen.
- Für Red Hat OpenShift on IBM Cloud in der klassischen Infrastruktur:
- Wählen Sie eine Ressourcengruppe aus.
- Wählen Sie eine Geographie aus.
- Wählen Sie Einzelzone für die Verfügbarkeit aus.
- Wählen Sie eine Worker-Zone.
- Weitere Details finden Sie in den Anweisungen zum Erstellen klassischer Cluster.
- Für die Red Hat OpenShift on IBM Cloud on VPC-Infrastruktur:
- Legen Sie die OpenShift-Version auf 4.13.x fest (Hinweis: Wenn Sie eine Version von 4.15.xx und höher verwenden, müssen Sie den Schutz ausgehender Datenverkehr inaktivieren).
- Wählen Sie Ihre Lizenz fürOpenShift Container Platform (OCP) aus.
- Unter Worker-Pool:
- Wählen Sie 4 vCPUs 16 GB Arbeitsspeicher als Variante aus.
- Wählen Sie für dieses Tutorial 2 Worker-Knoten pro Rechenzentrum aus (wenn Sie die klassische Infrastruktur gewählt haben: Verschlüsseln der lokalen Festplatte lassen).
- Gehen Sie unter Clusterdetails wie folgt vor:
- Setzen Sie den Clusternamen auf
myopenshiftcluster. - Wählen Sie eine Ressourcengruppe aus (wenn Sie die VPC-Infrastruktur ausgewählt haben).
- Setzen Sie den Clusternamen auf
- Klicken Sie auf Erstellen, um einen Red Hat OpenShift on IBM Cloud-Cluster bereitzustellen.
Notieren Sie sich die oben ausgewählte Ressourcengruppe. Dieselbe Ressourcengruppe wird für alle Ressourcen in diesem Lab verwendet.
CLI konfigurieren
In diesem Schritt konfigurieren Sie oc so, dass auf Ihren neu erstellten Cluster verwiesen wird. Die Red Hat OpenShift on IBM Cloud Container Platform CLI bietet Befehle für die Verwaltung Ihrer Anwendungen sowie Tools auf niedrigerer Ebene für die Interaktion mit den einzelnen Komponenten Ihres Systems. Die Befehlszeilenschnittstelle
bzw. CLI kann über den Befehl oc aufgerufen werden.
- Wenn der Cluster bereit ist, klicken Sie auf OpenShift web console, um die Konsole zu öffnen.
- Klicken Sie in der Webkonsole im Dropdown-Menü oben rechts auf der Seite auf Anmeldebefehl kopieren und klicken Sie dann auf den Link Token anzeigen.
- Kopieren Sie den Text, den Sie unter Mit diesem Token anmelden finden.
- Nachdem Sie sich mit dem Befehl
oc loginangemeldet haben, führen Sie den folgenden Befehl aus, um alle Namespaces in Ihrem Cluster anzuzeigen.oc get ns
Neue Red Hat OpenShift on IBM Cloud-Anwendung erstellen
In diesem Abschnitt werden Sie ein Red Hat OpenShift on IBM Cloud-Projekt erstellen und dann eine Anwendung aus einem GitHub-Repositorybereitstellen. Der Code für diese Anwendung ist eine einfache Node.js-Landing-Page und zwei API-Endpunkte als Einstieg. Sie können diese Anwendung immer auf der Basis Ihrer eigenen Explorationsanforderungen erweitern.
Projekt erstellen
Ein Kubernetes-Namensbereich stellt einen Mechanismus bereit, um den Geltungsbereich von Ressourcen in einem Cluster zu definieren. In Red Hat OpenShift on IBM Cloud ist ein Projekt ein Kubernetes-Namensbereich mit zusätzlichen Annotationen.
- Definieren Sie eine Umgebungsvariable mit dem Namen
MYPROJECTund legen Sie den Anwendungsnamen fest, indem Sie<your-initials>durch Ihre eigenen Initialen ersetzen:export MYPROJECT=<your-initials>-openshiftapp - Erstellen Sie ein neues Projekt.
Nach der Erstellung eines Projekts mit dem obigen Befehl werden Sie automatisch zu diesem Projekt gewechselt und alle nachfolgenden Befehle werden im Kontext dieses Projekts ausgeführt. Wenn Sie zu einem späteren Zeitpunkt zwischen Projekten wechseln oder zu diesem Projekt zurückkehren müssen, verwenden Sie den Befehloc new-project $MYPROJECToc project $MYPROJECT.
Stellt eine Anwendung bereit
Mit dem Befehl oc new-app können Sie Anwendungen aus dem Quellcode in einem lokalen oder fernen Git-Repository erstellen.
-
Erstellen Sie mithilfe der Buildstrategie
dockereine Anwendung, um ein Containerbild aus einer Dockerfile im Repository zu erstellen. Zur Vereinfachung stellen Sie den Anwendungsnamen auf den Projektnamen.oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-configWenn eine Jenkins-Datei im Stammverzeichnis oder im angegebenen Kontextverzeichnis des Quellenrepositorys vorhanden ist, wenn Sie eine neue Anwendung erstellen, generiert Red Hat OpenShift on IBM Cloud eine Buildstrategie
pipeline. Andernfalls wird einesource-Erstellungsstrategie generiert. Sie können die Buildstrategie jederzeit überschreiben, indem Sie das Flag--strategysetzen. -
Führen Sie den folgenden Befehl aus, um die Erstellung des Builder-Container-Images und das Pushen auf die interne Red Hat OpenShift on IBM Cloud Container Registry (OCR) zu überprüfen.
oc logs -f buildconfig/$MYPROJECTFür Ihren Cluster ist die interne Red Hat OpenShift on IBM Cloud Container Registry eingerichtet, d. h. Red Hat OpenShift on IBM Cloud kann den Anwendungslebenszyklus aus dem Cluster heraus automatisch erstellen, bereitstellen und verwalten.
-
Warten Sie, bis die Erstellung erfolgreich war und das Image übertragen wurde. Sie können den Status der Implementierung und des Service mit dem folgenden Befehl überprüfen.
oc status
Zugriff auf die Anwendung über die von IBM bereitgestellte Domain
Um auf die Anwendung zuzugreifen, müssen Sie eine Route erstellen. Eine Route kündigt Ihren Service der Welt an.
-
Erstellen Sie eine Route, indem Sie den folgenden Befehl in einem Terminal ausführen.
oc expose service/$MYPROJECT -
Sie können auf die Anwendung über eine von IBM bereitgestellte Domain zugreifen. Führen Sie den folgenden Befehl aus, um URL zu erhalten.
oc get route/$MYPROJECT -
Kopieren Sie den Wert für den Hostnamen unter HOST/PORT-Wert und fügen Sie URL in einen Browser ein, um Ihre Anwendung unter
http://<hostname>in Aktion zu sehen. Achten Sie darauf,httpin URL zu verwenden. -
Setzen Sie eine Umgebungsvariable, die auf den Hostnamen zeigt.
export HOST=<hostname>
Standardroute für die von IBM bereitgestellte Domäne sichern
- Zum Erstellen einer geschützten HTTPS-Route, die mit dem Standardzertifikat für Red Hat OpenShift on IBM Cloud verschlüsselt ist, können Sie den Befehl
create routeverwenden.oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000 - Führen Sie für die HTTPS-Host-URL den Befehl
oc get routesaus. Kopieren Sie die URL unter Angabe von HTTPS (https://<HOST>) neben der Route $MYPROJECT-https und fügen Sie sie in die Adresszeile eines Browsers ein. Dieses Mal können Siehttpsin URL verwenden.
App überwachen
In diesem Abschnitt erfahren Sie, wie Sie den Zustand und die Leistung Ihrer Anwendung überwachen. OpenShift Container Platform wird mit einem vorkonfigurierten und sich selbst aktualisierenden Überwachungs-und Alertingstack ausgeliefert.
- Führen Sie den Befehl mit URL von einem Terminal aus, um eine Last zu erzeugen. Der Befehl sendet endlos Anforderungen an die Anwendung.
while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done - Wechseln Sie in der OpenShift-Webkonsole zur Ansicht Administrator.
- Wählen Sie unter Beobachten Metriken aus.
- Geben Sie im Ausdrucksfeld den folgenden Ausdruck ein, ersetzen Sie
<MYPROJECT>durch Ihren Projektnamen und klicken Sie auf Abfragen ausführen, um die gesamte Container-CPU-Auslastung in Sekunden in einem Diagramm anzuzeigen.sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container) - Wählen Sie unter Beobachten Dashboards aus.
- Klicken Sie auf die Dropdown-Liste Dashboard und wählen Sie Kubernetes /Compute Resources/Namespace (Workloads) aus.
- Ändern Sie Namensbereich in Ihr Projekt.
- Setzen Sie Zeitbereich auf Letzte 5 Minuten.
- Prüfen Sie die CPU-Auslastung und die Hauptspeicherbelegung.
- Stoppen Sie das obige Script mit
control+C. - Zum Protokollieren können Sie den integrierten Befehl
oc logsverwenden. Überprüfen Sie die Anzeigeprotokolle für eine Ressource, um mehr über die Verwendung vonoc logszu erfahren.
Sie können auch IBM Cloud Logs- und IBM Cloud Monitoring-Services bereitstellen und verwenden, um Ihre Red Hat OpenShift on IBM Cloud-Anwendung zu protokollieren und zu überwachen. Folgen Sie den Anweisungen unter diesem Link, um die Protokollierungs- und Überwachungs-Add-ons zur Überwachung des Clusterzustands einzurichten.
App skalieren
In diesem Abschnitt erfahren Sie, wie Sie Ihre Anwendung manuell und automatisch skalieren.
Manuelle Skalierung
- Sie können die manuelle Skalierung Ihrer Pods mit dem Befehl
oc scaleerzielen. Durch den Befehl wird eine neue Größe für eine Bereitstellungskonfiguration oder einen Replikationscontroller festgelegt.oc scale dc/$MYPROJECT --replicas=2 - Durch Ausführen des Befehls
oc get podskönnen Sie sehen, dass ein neuer Pod eingerichtet wird. - Führen Sie den Schritt Überwachung erneut aus, um die aktualisierten Metriken anzuzeigen.
Automatische Skalierung
Sie können einen horizontalen Pod-Autoscaler (HPA, Horizontal Pod Autoscaler) verwenden, um anzugeben, wie Red Hat OpenShift on IBM Cloud die Skalierung einer Bereitstellungskonfiguration (dc, deployment configuration) oder eines Replikationscontrollers
(rc, replication controller) auf Grundlage der von den Pods, die zu dieser dc oder diesem rc gehören, erfassten Metriken erhöhen oder verringern soll.
- Bevor Sie die automatische Skalierung für Ihre Pods einrichten können, müssen Sie zunächst Ressourcenbegrenzungen für die Pods festlegen, die im Cluster ausgeführt werden. Begrenzungen ermöglichen es Ihnen, die Mindest- und Höchstwerte für
CPU und Speicherbelegung für einen Pod auszuwählen. Sie können die Begrenzungen und Anforderungen für einen Container mit dem Befehl
oc set resourcesfestlegen.Führen Sie zur Überprüfung den Befehloc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mioc describe dc/$MYPROJECTaus und suchen Sie nachLimits(Begrenzungen) undRequests(Anforderungen). - Um einen Autoscaler zu erstellen, müssen Sie den Befehl
oc autoscalesowohl mit den oberen (max) und unteren (min) Begrenzungen für die Anzahl der Pods ausführen, die vom Autoscaler festgelegt werden können, als auch mit dem Ziel für die durchschnittliche CPU-Auslastung über alle Pods (dargestellt als Prozentsatz der angeforderten CPU) ausführen. Legen Sie zum Testen--cpu-percentauf 5 % fest.oc autoscale dc/$MYPROJECT \ --min=1 \ --max=5 \ --cpu-percent=5 - Führen Sie den Schritt Überwachung erneut aus, um die Arbeitslast für die Anwendung zu generieren.
- Sie können sehen, dass neue Pods bereitgestellt werden, indem Sie den Befehl
oc get pods --watchausführen oder indem Sie die Anwendung in der Webkonsole anzeigen. - Entfernen Sie den Autoscaler:
oc delete hpa/$MYPROJECT
(Optional) Containerbild erstellen und per Push-Operation in Container Registry übertragen
In diesem Abschnitt erfahren Sie, wie Sie eine ferne private Container Registry verwenden, um die erstellten Container-Images zu speichern.
Von IBM Cloud Container Registry wird ein hoch verfügbares, skalierbares und verschlüsseltes Multi-Tenant-Registry für private Images bereitgestellt, das von IBM gehostet und verwaltet wird. Sie können IBM Cloud Container Registry verwenden, indem Sie Ihren eigenen Imagenamensbereich einrichten und Container-Images per Push-Operation in Ihren Namensbereich übertragen.
-
Um Ihre Container Registry zu identifizieren, führen Sie URL aus:
ibmcloud cr region -
Definieren Sie eine Umgebungsvariable namens
MYREGISTRY, die auf die Registrierung verweist, z. B:export MYREGISTRY=us.icr.io -
Wählen Sie einen Ihrer vorhandenen Namensbereiche der Registry aus oder erstellen Sie einen neuen Namensbereich der Registry. Geben Sie Folgendes ein, um bereits vorhandene Namensbereiche aufzulisten:
ibmcloud cr namespacesGeben Sie Folgendes ein, um einen neuen Namensbereich zu erstellen:
ibmcloud cr namespace-add <REGISTRY_NAMESPACE> -
Definieren Sie eine Umgebungsvariable mit dem Namen
MYNAMESPACE, die auf den Namensbereich der Registry verweist:export MYNAMESPACE=<REGISTRY_NAMESPACE> -
Definieren Sie eine Umgebungsvariable namens
API_KEY, die auf einen IBM Cloud IAM-API-Schlüssel verweist:export API_KEY=<YOUR_API_KEY>Informationen zum Erstellen eines API-Schlüssels finden Sie in diesem Link.
-
Erstellen Sie einen geheimen Schlüssel, um den Zugriff auf Ihre Registry-Namensbereiche zu automatisieren und das generierte Container-Image des Builders per Push-Operation in Container Registry zu laden:
oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY -
Kopieren Sie das Image-Pull-Geheimnis aus dem Projekt
defaultund fügen Sie es in Ihr Projekt ein:oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f - -
Damit das Geheimnis der Bildabrufe wirksam wird, müssen Sie es im Dienstkonto
defaulthinzufügen:oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
Beispielanwendung klonen
In diesem Abschnitt werden Sie ein GitHub-Repository klonen, das mit einer Vorlagendatei und einem Shell-Script geliefert wird, um eine yaml-Datei aus Ihren zuvor erstellten Umgebungsvariablen zu erstellen. Die generierte Datei
wird verwendet, um ein Container-Image zu erstellen, das Image in die private Container-Registry zu übertragen und eine neue Anwendung bereitzustellen.
- Führen Sie in einem Terminal den folgenden Befehl aus, um das Repository GitHub auf Ihren Rechner zu klonen:
git clone https://github.com/IBM-Cloud/openshift-node-app - Wechseln Sie in das Anwendungsverzeichnis:
cd openshift-node-app
'BuildConfig' aktualisieren und Builder-Image mit einer Push-Operation an Container Registry übertragen
In diesem Schritt führen Sie ein Script aus, um die Abschnitte der Datei openshift.template.yaml zu aktualisieren und eine neue yaml-Datei zu generieren, die auf Ihren Namensbereich Container Registry verweist.
-
Führen Sie das folgende bash-Script aus, um die Platzhalter in der Datei
openshift.template.yamlzu aktualisieren und um die Datei openshift_private_registry.yaml zu generieren../generate_yaml.sh use_private_registry -
Führen Sie den Exportbefehl aus der Ausgabe aus, um die vorhandene Umgebungsvariable
MYPROJECTmit dem neuen Anwendungsnamen zu definieren. Führen Sieecho $MYPROJECTaus, um den neuen Anwendungsnamen anzuzeigen. -
Überprüfen Sie optional die generierte Datei
openshift_private_registry.yaml, um festzustellen, ob alle Platzhalter mit den entsprechenden Umgebungsvariablen aktualisiert werden. Nachstehend finden Sie 3 Stellen, an denen Sie eine schnelle Überprüfung vornehmen können. Sie können zum nächsten Abschnitt springen. -
Optional Suchen Sie das ImageStream objekt, dessen Namensattribut auf Ihr Projekt gesetzt ist (
$MYPROJECT), und prüfen Sie, ob die Platzhalter$MYREGISTRY,$MYNAMESPACEund$MYPROJECTunter derdockerImageRepositoryDefinition vonspecaktualisiert werden- apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/generated-by: OpenShiftNewApp creationTimestamp: null labels: app: $MYPROJECT app.kubernetes.io/component: $MYPROJECT app.kubernetes.io/instance: $MYPROJECT name: $MYPROJECT spec: dockerImageRepository: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT lookupPolicy: local: false status: dockerImageRepository: ""Ein Image-Stream und die ihm zugeordneten Tags liefern eine Abstraktion zum Verweisen auf Container-Images aus Red Hat OpenShift on IBM Cloud Container Platform.
-
Optional Überprüfen Sie, ob unter
specim AbschnittBuildConfigfür den Wert für die Ausgabe (output) als 'kind'DockerImageangegeben ist und die Platzhalter unternameaktualisiert sind.spec: nodeSelector: null output: to: kind: DockerImage name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest pushSecret: name: push-secretEin 'Build' bezeichnet den Prozess, bei dem Eingabeparameter in ein daraus resultierendes Objekt umgewandelt werden. Meistens wird dieser Prozess verwendet, um Eingabeparameter oder Quellcode in ein ausführbares Image umzuwandeln. Ein
BuildConfig-Objekt ist die Definition des gesamten Erstellungsprozesses (Buildvorgangs). -
Optional Suchen Sie nach
containersund überprüfen Sie die Werte fürimageundnamecontainers: - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest name: $MYPROJECT -
Falls Sie Aktualisierungen vorgenommen haben, speichern Sie die YAML-Datei.
Anwendung mit IBM Cloud Container Registry implementieren
In diesem Abschnitt implementieren Sie die Anwendung mit der generierten Datei openshift_private_registry.yaml in dem Cluster. Nach der erfolgten Bereitstellung greifen Sie auf die Anwendung zu, indem Sie eine Route erstellen.
-
Erstellen Sie eine neue OpenShift Anwendung zusammen mit einer buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) unter Verwendung der aktualisierten yaml.
oc apply -f openshift_private_registry.yaml -
Um die Erstellung des Builder-Container-Images und die Übertragung auf Container Registry zu überprüfen, führen Sie den folgenden Befehl aus.
oc logs -f bc/$PRIVREGIn den Protokollen sollten Sie die folgende Meldung sehen, wenn das Container-Image in die private Container-Registrierung übertragen wurde.
Pushing image us.icr.io/mods15/vmac-openshift-app-registry:latest ... Getting image source signatures Copying blob sha256:9d038e1c7afbe92c29313557c02110e8fb796818ebb78441c68929381103a94b Copying blob sha256:61c671f49591a059c9b6728a9f84c16f5b00126470112ee9c9f9e01dbbfcc3ea Copying blob sha256:e2787650308235c87eff7d2b88c3ab217e84b74a3fa9696103bd46bb99068c7a Copying blob sha256:dcef409117430ed9906a59ad0a3ea0752061fbf8a9e544f4edd77667a25d85ae Copying blob sha256:a1f889dd610c6510c7fc091a51c247463f3cc9a7c67bdc397c9632168808f7d2 Copying blob sha256:bd278801acd18ada10f43b732113a6fffc163011862ea6cde729f8dc59e64222 Copying blob sha256:2d6c03ed5d15be86cdef7d9c0c9fea40a3f6b89662bca59680d037074f52bb38 Copying blob sha256:fa2ef7f80d6fc9543f6eb472846931ed1cec2b5f776d1b67bcb1b9942e1a947e Copying blob sha256:ff5a4e4d3690ccc931900b63714d326cc53a58e644f8d0a4f06bf8c62f11c5c7 Copying config sha256:01aa1ebb7be74529867106100c4e699ca2ae87f8242460771527f772e6a3d174 Writing manifest to image destination Storing signatures Successfully pushed us.icr.io/mods15/vmac-openshift-app-registry@sha256:6847b889397704b9fb8c3122c84b505c3dc5f99a0669fb69f534d3504eec385d Push successful -
Sie können den Status der Bereitstellung und des Dienstes überprüfen.
oc status -
Importieren Sie den neuesten Image-Stream manuell, damit die Bereitstellung so schnell wie möglich erfolgt.
oc import-image $PRIVREGSie können den Befehl auch verwenden, wenn die Bereitstellung mehr Zeit in Anspruch nimmt. Weitere Informationen finden Sie unter diesem Link.
-
Machen Sie den Service zugänglich, um eine neue Route zu erstellen.
oc expose service/$PRIVREG -
Sie können auf die Anwendung über die von IBM bereitgestellte Domain zugreifen. Führen Sie den folgenden Befehl aus, um URL zu erhalten.
oc get route/$PRIVREG -
Kopieren Sie den Wert für den Hostnamen unter HOST/PORT-Wert und fügen Sie URL in einen Browser ein, um Ihre Anwendung unter
http://<hostname>in Aktion zu sehen. Achten Sie darauf,httpin URL zu verwenden.Sie sollten dieselbe Anwendung sehen, die nun auf einer anderen Route verfügbar ist und mit dem in einer privaten Container-Registry gespeicherten Container-Image implementiert wurde.
(Optional) Übertragen Sie den Code mit einer Push-Operation in ein privates IBM Cloud-Git-Repository.
In diesem Schritt erstellen Sie ein privates Repository IBM Cloud Git und pushen den Code der Beispielanwendung. Sie werden auch lernen, wie Sie die Anwendung automatisch erstellen und erneut bereitstellen können, wenn sie aktualisiert wird.
Sie müssen einen SSH-Schlüssel konfigurieren, damit der Push erfolgreich ist. Lesen Sie die Anweisungen in den Abschnitten Generate an SSH key pair und Add an SSH key to your GitLab account der Dokumentation hier
-
Öffnen Sie in einem Browser IBM Cloud Git.
Der oben genannte Link gilt für die Region
us-south. Führen Sie für andere Regionen den Befehlibmcloud regionsaus und ersetzen Sie in der URL die Regionsangabeus-southdurch den Namen der gewünschten Region. -
Klicken Sie auf Neues Projekt und anschließend auf Leeres Projekt erstellen. Geben Sie dann
openshiftappals Projektnamen an. -
Setzen Sie Sichtbarkeitsebene auf Privat.
-
Entfernen Sie unter Projektkonfiguration das Häkchen neben Repository mit einer Readme-Datei initialisieren.
-
Klicken Sie auf Projekt erstellen,
-
Befolgen Sie die Anweisungen in den Abschnitten Git global setup und Push an existing Git repository, um Git einzurichten und den Beispielanwendungscode zu pushen.
-
Sobald Sie den Code in das private Repository übertragen haben, sollten Sie den Beispielcode im Projekt sehen.
Git-Bereitstellungstoken erstellen
In diesem Abschnitt erstellen Sie ein Git-Bereitstellungstoken, mit dem der Lesezugriff auf das Repository ermöglicht wird.
Bereitstellungstoken generieren:
- Klicken Sie im Navigationsbereich der Seite Git repo auf Einstellungen > Repository.
- Klicken Sie neben Bereitstellungstoken auf Erweitern.
- Geben Sie in das Feld Name
foropenshiftein und wählen Sie dann read_repository unter Scopes aus. Klicken Sie abschließend auf Bereitstellungstoken erstellen. - Speichern Sie die als Benutzername und Kennwort generierten Werte für zukünftige Referenzzwecke.
- Geben Sie in das Feld Name
- Klicken Sie im Navigationsbereich auf Projektübersicht, dann auf Klonen und kopieren Sie Klonen mit HTTPS URL. Speichern Sie die URL als Referenz für zukünftige Bedarfsfälle.
- Definieren Sie Umgebungsvariablen für den Benutzernamen, das Kennwort und die URL für das private Git-Repository, die mit der YAML-Datei später im Lernprogramm verwendet werden sollen
export GIT_TOKEN_USERNAME=<PRIVATE_GIT_DEPLOY_TOKEN_USERNAME> export GIT_TOKEN_PASSWORD=<PRIVATE_GIT_DEPLOY_TOKEN_PASSWORD> export REPO_URL=<PRIVATE_GIT_REPO_URL>
Implementieren Sie eine neue Anwendung mit der privaten Registry und dem Code aus dem privaten Repository.
-
Führen Sie das folgende bash-Script aus, um die Platzhalter in der Datei
openshift.template.yamlzu aktualisieren und um die Datei openshift_private_repository.yaml zu generieren../generate_yaml.sh use_private_repository -
Führen Sie den Exportbefehl aus der Ausgabe aus, um die vorhandene Umgebungsvariable
MYPROJECTmit dem neuen Anwendungsnamen zu definieren. -
Zusätzlich zu den Platzhaltern der privaten Container-Registry ersetzt das Script auch die
REPO_URLin derBuildConfig-Spezifikation durch die Umgebungsvariablen, die Sie in dem oben genannten Schritt festgelegt haben.source: git: uri: $REPO_URL type: Git -
Erstellen Sie eine neue openshift-Anwendung zusammen mit einer buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) unter Verwendung der aktualisierten yaml
oc apply -f openshift_private_repository.yaml -
Sie können die Builder-Protokolle überprüfen.
oc logs -f bc/$PRIVREPO -
Sie können den Status der Bereitstellung und des Dienstes mit überprüfen.
oc status -
Importieren Sie den neuesten Image-Stream manuell, damit die Bereitstellung so schnell wie möglich erfolgt.
oc import-image $PRIVREPO -
Machen Sie den Service zugänglich, um eine neue Route zu erstellen.
oc expose service/$PRIVREPO -
Sie können auf die Anwendung über die von IBM bereitgestellte Domain zugreifen. Führen Sie den folgenden Befehl aus, um URL zu erhalten.
oc get route/$PRIVREPO -
Kopieren Sie den Wert für den Hostnamen unter HOST/PORT-Wert und fügen Sie URL in einen Browser ein, um Ihre Anwendung unter
http://<hostname>in Aktion zu sehen. Achten Sie darauf,httpin URL zu verwenden.Eine neue Anwendung wird mit dem Code aus dem privaten Git-Repository und dem Container-Image aus dem privaten Registry-Namespace implementiert.
Aktualisieren Sie die Anwendung und setzen Sie sie erneut ein
In diesem Schritt automatisieren Sie den Build- und den Bereitstellungsprozess. Wenn Sie die Anwendung aktualisieren und die Änderungen mit Push-Operation an das private Repository übertragen, wird ein neuer Build ausgeführt, der eine neue Version des Container-Image generiert. Dieses Image wird dann automatisch bereitgestellt.
-
Sie erstellen einen neuen Webhook-Auslöser für GitLab. Mit Webhook-Auslösern können Sie durch Senden einer Anforderung an den API-Endpunkt von Red Hat OpenShift on IBM Cloud Container Platform die Erstellung eines neuen Builds auslösen. Sie können diese Auslöser mit GitHub-, GitLab-, Bitbucket- oder mit generischen Webhooks definieren.
oc set triggers bc $PRIVREPO --from-gitlab -
Um einen Webhook auf dem GitLab-Repository hinzufügen zu können, benötigen Sie eine URL und einen geheimen Schlüssel.
- Geben Sie für die GitLab-URL für den Webhook Folgendes ein:
oc describe bc/$PRIVREPO | grep -A 1 "GitLab" - Geben Sie für den geheimen Schlüssel, der in der Webhook-URL übergeben werden soll, Folgendes ein:
oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab" - Ersetzen Sie
<secret>in der GitLab-URL für den Webhook durch den Wert des geheimen Schlüssels unter gitlab aus der Befehlsausgabe oben.
- Geben Sie für die GitLab-URL für den Webhook Folgendes ein:
-
Öffnen Sie Ihr privates Git Repo in einem Browser über den Link Git repo HTTPS und klicken Sie auf Einstellungen und dann auf Webhooks.
-
Fügen Sie URL ein, wählen Sie "Push-Ereignisse" als Auslöser und klicken Sie auf "Webhook hinzufügen ". Die Nachricht
Webhook was createdwird angezeigt. -
Aktualisieren Sie das Element 'ImagePolicy' des Image-Streams, um für Container Registry in geplanten Intervallen Abfragen zum Synchronisieren der Metadaten von Tags und Images durchzuführen. Dadurch wird die Definition von
tagsaktualisiert.oc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true -
Öffnen Sie das geklonte Repository in einer IDE und aktualisieren Sie den Tag
h1der lokalen public/index.html datei zu aktualisieren und ihn inCongratulations! <insert your name>zu ändern. -
Speichern Sie den Code und übertragen Sie ihn in das Repository.
git add public/index.htmlgit commit -m "Updated with my name"git push -u origin master -
Sie können den Fortschritt des Builds und der Bereitstellung mit dem Befehl
oc statusprüfen. Nach der erfolgreichen Durchführung der Bereitstellung sollten Sie die Anzeige der HOST-Adresse für die Route aktualisieren, um die aktualisierte Web-App anzuzeigen.In manchen Fällen benötigt die Bereitstellung bis zu 15 Minuten für den Import des aktuellsten Image-Streams. Sie können entweder warten oder manuell mit dem Befehl
oc import-image $PRIVREPOimportieren. Unter diesem Link finden Sie weitere Informationen.
(Optional) Verwenden Sie Ihre eigene angepasste Domäne.
Für diesen Abschnitt ist es erforderlich, dass Sie Eigner einer angepassten Domäne sind und die DNS-Datensätze der Domäne ändern können. Sie müssen einen CNAME-Datensatz erstellen, der auf die von IBM bereitgestellte Domäne verweist.
Schritte zum Einrichten des CNAME-Datensatzes entsprechend dem verwendeten DNS-Provider. Fügen Sie unter der DNS-Verwaltung/Zone Ihrer Domäne einen neuen CNAME-Datensatz hinzu, setzen Sie Host(Name) auf eine beliebige
Unterdomäne openshiftapp sowie Points to auf die von IBM bereitgestellte Domäne ohne HTTP oder HTTPS fest.
Mit HTTP
- Erstellen Sie eine Route, die den Service unter einem Hostnamen zugänglich macht, indem Sie
<HOSTNAME>durch Ihren Hostnamen (z. B. www.example.com oder openshiftapp.example.com) ersetzen, sodass externe Clients anhand des Namens darauf zugreifen können.oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000 - Greifen Sie unter
http://<HOSTNAME>/auf die Anwendung zu.
Mit HTTPS
- Zum Erstellen einer sicheren HTTPS-Route können Sie Ihre eigenen Zertifikats- und Schlüsseldateien von einer Zertifizierungsstelle wie Let's Encrypt verwenden oder diese
über Secrets Manager bestellen. Übergeben Sie sie mit dem Befehl
create route.Hier wurde die Beendigung mit Edge verwendet. Informationen zu anderen Beendigungstypen wie Durchgriff und erneute Verschlüsselung erhalten Sie, wenn Sie den Befehloc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000oc create route --helpausführen.
Ressourcen entfernen
-
Löschen Sie alle Ressourcenobjekte, die für eine Anwendung spezifisch sind:
oc delete all --selector app=$PRIVREPO oc delete all --selector app=$PRIVREG oc delete all --selector app=$MYPROJECTFühren Sie zum Auflisten der Anwendungsnamen im Projekt den folgenden Befehl aus:
oc get svc | awk '{print $1}' -
Löschen Sie das Projekt:
oc delete project $MYPROJECT -
Löschen Sie das Anwendungsrepository:
- Klicken Sie im Navigationsfenster der Repository-Seite Git auf Einstellungen > Allgemein.
- Klicken Sie neben Erweitert auf Erweitern.
- Klicken Sie auf Projekt löschen und bestätigen Sie das Löschen des Projekts.
-
Container-Image (s) aus Container Registrylöschen:
- Navigieren Sie in Ihrem Browser zur Repository-Seite für Container Registry.
- Wählen Sie die Images aus, die in diesem Lernprogramm erstellt wurden, und löschen Sie sie.
-
Löschen Sie den erstellten Cluster.