Es war ein kalter Herbstnachmittag im Jahr 2019 und ich saß nach einem Gespräch mit meinem Vorgesetzten mit einer Tasse dampfend heißem Tee hinter meinem Schreibtisch. Ich hatte mich schließlich entschieden, die Initiative zu ergreifen und die Migration einer globalen Produktionswebsite von einer einzelnen virtuellen Maschine in die Cloud zu planen. Ich hatte bereits Erfahrung mit Nginx und Apache als Administrator der virtuellen Maschine. Der zweite Teil meiner Stellenbeschreibung war die Entwicklung der Website-Features in PHP. Ich wusste, dass das Verständnis der Anforderungen sowohl aus der Entwickler- als auch aus der Administratorperspektive für meinen Ansatz zur Bereitstellung eines WordPress-Entwickler-Stacks auf OpenShift wichtig sein würde. Meine Motivation als junger Mensch war es, neue Technologien zu erforschen und zu lernen, während ich meine ersten Experimente in einer sicheren Sandbox-Umgebung durchführte.
[ Das könnte Ihnen auch gefallen:Lernen Sie OpenShift mit Minishift ]
Mir war bewusst, dass ich vor der Arbeit mit OpenShift in einer Produktionsumgebung ein solides Verständnis der Produktkomponenten und ihrer Wechselwirkungen haben musste. In den kommenden Wochen verbrachte ich Zeit damit, mich auf die Red Hat OpenShift Administration II-Prüfung vorzubereiten und bei Bedarf nach Antworten auf meine Fragen von OpenShift-Architekten zu suchen.
Als ich nicht für die Prüfung lernte, habe ich mir die Produktfunktionen von OpenShift 4 angesehen. Ich konnte sehen, dass viele dieser Funktionen für eine globale Website sehr wichtig sind und meine Entwicklungserfahrung viel einfacher machen würden. Hier sind einige der Vorteile:
- Hohe Verfügbarkeit
- Skalierung automatisieren
- Anwendungsverwaltung
- Leichtgewichtiges Betriebssystem
Konfiguration und Bereitstellung von Anwendungen
Hier sind einige Hinweise, die Sie beachten sollten:
- In diesem Artikel gehe ich nicht auf die Auswahl eines Hosting-Dienstes oder die Installationsschritte von OpenShift 4 ein.
- Der Quellcode und die Datenbank, die in diesem Leitfaden verwendet werden, sind Beispiele und spiegeln oder verwenden keine Daten von Produktionswebsites.
- Diese Anleitung stammt aus meiner persönlichen Erfahrung bei der Arbeit mit den unten genannten Tools.
- Wenn Ihr OpenShift-Cluster öffentlich zugänglich ist, können Sie anstelle der Docker-basierten Build-Konfiguration stattdessen die quellenbasierte Build-Konfiguration verwenden.
1) Cloud-IDE – Red Hat CodeReady
Hinweis :Ich verwende dieses Dokument als Referenz.
Voraussetzungen:
- cluster-admin-Rolle
Schritte:
Erstellen Sie ein neues Projekt:
$ oc new-project wordpress-deploy
Klicken Sie im linken Dashboard-Menü auf Operatoren und navigieren Sie zum OperatorHub Tab. Projekt ändern links oben auf der Seite zu wordpress-deploy
Projekt. Wählen Sie Red Hat CodeReady Workspaces und klicken Sie auf Installieren Taste. Auf dem Operator installieren Seite, wählen Sie Vorhandenen Namespace auswählen und stellen Sie sicher, dass wordpress-deploy
Namensraum ist ausgewählt. Klicken Sie abschließend auf Installieren Schaltfläche.

Fahren Sie nach der Installation fort, indem Sie auf Operator anzeigen klicken Taste. Unter Bereitgestellte APIs , klicken Sie auf Instanz erstellen .

Auf CheCluster erstellen Seite, behalten Sie die Standardeinstellungen bei und klicken Sie auf Erstellen Schaltfläche.
Überprüfen Sie die Installation des Red Hat CodeReady Workspaces Operator:
$ oc get csv -n wordpress-deploy
NAME DISPLAY VERSION REPLACES PHASE
crwoperator.v2.4.0 Red Hat CodeReady Workspaces 2.4.0 Succeeded
Vergewissern Sie sich, dass sich alle Pods im Running-Modus befinden Status und Bereit . Folgen Sie den Bedienerprotokollen, um den Installationsfortschritt zu verfolgen. Bitte beachten Sie, dass die Route nicht Seien Sie bereit, bis die Protokolle des Operator-Pods „CodeReady Workspaces is now available at http://xyz.org“ anzeigen. Es kann einige Minuten dauern.
$ oc get pods -n wordpress-deploy
NAME READY STATUS RESTARTS AGE
codeready-5d7b8f64d6-2rzkm 1/1 Running 0 60s
codeready-operator-5bc96f8c5f-c7hbt 1/1 Running 0 7m56s
devfile-registry-786f455b84-t45l8 1/1 Running 0 2m8s
keycloak-688b5d48f5-mgqn4 1/1 Running 0 2m41s
plugin-registry-8fb66b5cb-9kw8q 1/1 Running 0 99s
postgres-785f5864b-mmlpx 1/1 Running 0 5m1s
$ oc logs codeready-operator-5bc96f8c5f-c7hbt -f
...
time="2020-10-28T14:29:29Z" level=info msg="CodeReady Workspaces is now available at: https://codeready-wordpress-deploy.apps.tgabriel-test.y2pm.s1.devshift.org"
...
Codeready-Route abrufen:
$ oc get route -n wordpress-deploy | grep codeready
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
codeready codeready-wordpress-deploy.apps.tgabriel-test.y2pm.s1.devshift.org che-host 8080 edge/Redirect None
Besuchen Sie die codeready-Route und aktualisieren Sie Ihre Kontoinformationen . Unter Erste Schritte Wählen Sie auf der Registerkarte PHP CakePHP aus stapeln.


Stellen Sie sicher, dass der Red Hat CodeReady Workspace wurde erstellt:

2) CI/CD Teil 1 – Tekton CLI und OpenShift Pipelines installieren
Hinweis :Als Referenz verwende ich dieses Openshift/Pipelines-Tutorial. Wenn Sie interessiert sind, können Sie sich die High-Level-Konzepte von OpenShift-Pipelines ansehen. In meinem Fall habe ich mich für Tekton entschieden, aber Sie können gerne Jenkins, CircleCI oder ein anderes von Ihnen oder Ihrem Unternehmen bevorzugtes Pipeline-Tool verwenden.
Tekton ist ein leistungsstarkes und dennoch flexibles Kubernetes-natives Open-Source-Framework zum Erstellen von Continuous-Integration- und Continuous-Delivery-Systemen (CI/CD). Es ermöglicht Ihnen das Erstellen, Testen und Bereitstellen über mehrere Cloud-Anbieter oder lokale Systeme hinweg, indem Sie die zugrunde liegenden Implementierungsdetails abstrahieren. Tekton Pipelines 2020-Roadmap.
Schritte:
Installieren Sie Tekton CLI (tkn) von hier aus gemäß der Readme-Datei im Repository.
Installieren Sie OpenShift Pipelines Operator.
Überprüfen Sie die Installation von Tekton CLI und Pipelines Operator:
$ tkn version
Client version: 0.13.1
$ oc get csv -n wordpress-deploy
NAME DISPLAY VERSION REPLACES PHASE
crwoperator.v2.4.0 Red Hat CodeReady Workspaces 2.4.0 Succeeded
openshift-pipelines-operator.v1.0.1 OpenShift Pipelines Operator 1.0.1 Succeeded
3) Wenden Sie eine benutzerdefinierte Vorlage an, die Anwendungs-Pods erstellt
Hinweis :Ich habe Beispiel-Quellcode aus dem Github-Repository verwendet.
Schritte:
Laden Sie die Vorlagendatei mit curl
herunter Befehl:
$ curl -O https://raw.githubusercontent.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4/master/deploy/openshift-template.yaml
Laden Sie die Vorlage in Ihren Namespace hoch:
$ oc create -f openshift-template.yaml
Bevor Sie die Anwendung erstellen, listen Sie zunächst die erforderlichen Variablen für die Vorlage auf:
$ oc process --parameters wordpress-nginx-php
NAME DESCRIPTION GENERATOR VALUE
NAME The name assigned to all of the frontend objects defined in this template. expression wordpress-[a-f0-9]{6}
NAMESPACE The OpenShift Namespace where the ImageStream resides.
APP_MEMORY_LIMIT Maximum amount of memory limits the App container can use. 512Mi
APP_CPU_LIMIT Maximum amount of cpu limits the App container can use. 200m
APP_MEMORY_REQUEST Maximum amount of memory requests the App container can use. 512Mi
APP_CPU_REQUEST Maximum amount of cpu requests the App container can use. 200m
DB_MEMORY_LIMIT Maximum amount of memory limits the MariaDB container can use. 512Mi
DB_CPU_LIMIT Maximum amount of cpu limits the MariaDB container can use. 200m
DB_MEMORY_REQUEST Maximum amount of memory requests the MariaDB container can use. 512Mi
DB_CPU_REQUEST Maximum amount of cpu requests the MariaDB container can use. 200m
DB_VOLUME_CAPACITY Volume space available for DB data, e.g. 512Mi, 2Gi 1Gi
FILES_VOLUME_CAPACITY Volume space available for sites/default/files, e.g. 512Mi, 2Gi 1Gi
ROUTER_CANONICAL_HOSTNAME Clusters Router Canonical Hostname is self-explanatory.
MYSQL_DATABASE wordpress
MYSQL_USER wordpress
MYSQL_ROOT_PASSWORD Password for the MySQL root user. expression [a-zA-Z0-9]{16}
MYSQL_PASSWORD expression [a-zA-Z0-9]{16}
Verarbeiten Sie die bereitgestellte Vorlage einschließlich Ihrer Parameterwerte:
$ oc process wordpress-nginx-php -p NAME=wordpress -p NAMESPACE=wordpress-deploy -p ROUTER_CANONICAL_HOSTNAME=apps.tgabriel-test.y2pm.s1.devshift.org -p MYSQL_ROOT_PASSWORD=nKatIcTRIToR -p MYSQL_PASSWORD=eSoiDenThicO | oc create -f -
Vergewissern Sie sich, dass sich alle Pods im Running-Modus befinden oder Abgeschlossen Zustand:
$ oc get pods -n wordpress-deploy
NAME READY STATUS RESTARTS AGE
codeready-5dc8dcd6f8-xm6tx 1/1 Running 0 69m
codeready-operator-864446f6b-dpp52 1/1 Running 0 74m
keycloak-7c4f96b7d9-m6nv9 1/1 Running 0 72m
phpmyadmin-1-build 0/1 Completed 0 11m
phpmyadmin-1-deploy 0/1 Completed 0 3m36s
phpmyadmin-1-fmt7b 1/1 Running 0 3m28s
postgres-769b855b45-tlhcs 1/1 Running 0 73m
wordpress-app-1-build 0/1 Completed 0 11m
wordpress-app-1-25p6n 2/2 Running 0 2m28s
wordpress-app-1-7mc4z 2/2 Running 0 2m28s
wordpress-app-1-deploy 0/1 Completed 0 2m43s
4) CI/CD Teil 2 – Ausführen der Tekton-Pipeline
Schritte:
Überprüfen Sie die Liste der erstellten Ressourcen:
$ tkn resource ls
NAME TYPE DETAILS
app-git git url: https://github.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4
app-image image url: image-registry.openshift-image-registry.svc:5000/wordpress-deploy/openshift-nginx-phpfpm-s2i
$ tkn task ls
NAME AGE
openshift-client 58 seconds ago
s2i-php 1 minute ago
$ tkn pipeline ls
NAME AGE LAST RUN STARTED DURATION STATUS
build-and-deploy 3 minutes ago openshift-nginx-phpfpm-deploy-pipelinerun-vt7cf 3 minutes ago 1 minutes Succeeded
Überwachen Sie die Tekton-Pipeline:
$ tkn pipeline logs -f
...
[deploy : oc] build.build.openshift.io/wordpress-2 started
...
Zum Starten eines neuen Pipelinelaufs:
$ tkn pipeline start build-and-deploy-2 -w name=shared-workspace,volumeClaimTemplateFile=https://raw.githubusercontent.com/openshift/pipelines-tutorial/master/01_pipeline/03_persistent_volume_claim.yaml -p deployment-name=wordpress -r app-git=app-git -r app-image=app-image -s pipeline
5) Import der Musterproduktionsdaten mit CLI
Hinweis :Aufgrund der Größe unserer exportierten Datenbankdatei werden wir mit CLI-Befehlen fortfahren. Bitte beachten Sie, dass Sie bei Verwendung des Phpmyadmin-Importtools aufgrund der Beschränkungen des Phpmyadmin-Imports einen 504 Gateway Timeout-Fehler erhalten würden.
Schritte:
Gehen Sie in den DB-Pod-Container:
$ oc get pods -n wordpress-deploy
NAME READY STATUS RESTARTS AGE
phpmyadmin-1-build 0/1 Completed 0 19h
phpmyadmin-1-deploy 0/1 Completed 0 19h
phpmyadmin-1-fjhfn 1/1 Running 0 19h
wordpress-app-1-8jtzg 2/2 Running 0 19h
wordpress-app-1-build 0/1 Completed 0 19h
wordpress-app-1-deploy 0/1 Completed 0 19h
wordpress-app-1-ks48k 2/2 Running 0 19h
wordpress-app-db-1-bcmnn 1/1 Running 0 19h
wordpress-app-db-1-build 0/1 Completed 0 19h
wordpress-app-db-1-deploy 0/1 Completed 0 19h
$ oc rsh wordpress-app-db-1-bcmnn
sh-4.2$
Importieren Sie die Sicherungsdatei mit der CLI:
sh-4.2$ curl -O https://raw.githubusercontent.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4/master/deploy/database_backup.sql
sh-4.2$ mysql -h 127.0.0.1 -u root -D wordpress < database_backup.sql
(Optional) Innerhalb von wp_options
Tabelle, siteurl bearbeiten und Zuhause Werte, die Ihrem Anwendungspfad entsprechen.
Rufen Sie die WordPress-Anwendungsroute ab:
$ oc get route wordpress-app
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
wordpress-app wordpress-app-wordpress-deploy.apps.tgabriel-test.y2pm.s1.devshift.org wordpress-app <all> None
Besuchen Sie die Bewerbungsroute, wo Sie die Startseite der Bewerbung sehen sollten .

[ Holen Sie sich dieses kostenlose E-Book:Verwalten Ihrer Kubernetes-Cluster für Dummies. ]
Abschluss
Dieser Leitfaden bietet einen guten Ausgangspunkt für die Erstellung Ihres WordPress-Entwickler-Stacks auf OpenShift 4 und bereitet Sie auf eine erfolgreiche Konfiguration vor.
Ressourcen und Credits
- Quellcode-Repository
- Drupal auf OpenShift:Bereitstellung Ihrer ersten Drupal-Site
- Drupal auf OpenShift:Verbesserung der Entwicklererfahrung