GNU/Linux >> Znalost Linux >  >> Linux

Jak vytvořit svůj zásobník vývojáře WordPress na OpenShift 4

Bylo chladné podzimní odpoledne roku 2019 a já jsem po diskusi se svým manažerem seděl za pracovním stolem s šálkem horkého čaje. Nakonec jsem se rozhodl převzít iniciativu při plánování migrace globálního produkčního webu z jediného virtuálního stroje do cloudu. Už jsem měl zkušenosti s Nginx a Apache jako správce virtuálního stroje. Druhou částí mé práce byl vývoj funkcí webu v PHP. Věděl jsem, že pochopení požadavků z pohledu vývojáře i správce by bylo důležité pro můj přístup k nasazení sady vývojářů WordPress na OpenShift. Mojí motivací jako mladého člověka bylo prozkoumávat a učit se nové technologie a přitom dělat své první experimenty v bezpečném prostředí sandboxu.

[ Také by se vám mohlo líbit:Naučte se OpenShift s Minishift ]

Byl jsem si vědom toho, že než budu pracovat s OpenShift v produkčním prostředí, potřeboval jsem dobře porozumět komponentám produktu a jejich vzájemné interakci. V nadcházejících týdnech jsem se připravoval na zkoušku Red Hat OpenShift Administration II a v případě potřeby jsem hledal odpovědi na své otázky od architektů OpenShift.

Když jsem se neučil na zkoušku, podíval jsem se na funkce produktu OpenShift 4. Viděl jsem, že pro globální web je mnoho z těchto funkcí velmi důležitých a výrazně by mi usnadnily vývoj. Zde je několik výhod:

  • Vysoká dostupnost
  • Automatické škálování
  • Správa aplikací
  • Odlehčený operační systém

Konfigurace a nasazení aplikací

Zde je několik poznámek, které je třeba mít na paměti:

  • V tomto článku se nebudu zabývat výběrem hostitelské služby ani kroky instalace OpenShift 4.
  • Zdrojový kód a databáze použité v této příručce jsou ukázkové a neodrážejí ani nepoužívají data z žádné produkční webové stránky.
  • Tento průvodce vychází z mé osobní zkušenosti při práci s níže uvedenými nástroji.
  • Pokud je váš cluster OpenShift veřejně přístupný, můžete místo konfigurace sestavení založené na Dockeru použít konfiguraci sestavení založenou na zdroji.

1) Cloud IDE – Red Hat CodeReady

Poznámka :Tento dokument používám jako referenci.

Předpoklady:

  • role správce clusteru

Kroky:

Vytvořte nový projekt:

$ oc new-project wordpress-deploy

V levé nabídce řídicího panelu klikněte na Operátoři a přejděte na OperatorHub tab. ZměnitProjekt v levé horní části stránky wordpress-deploy projekt. Vyberte Pracovní prostory Red Hat CodeReady a klikněte na Instalovat knoflík. Na stránce Install Operator vyberte Vybrat existující jmenný prostor a ujistěte se, že wordpress-deploy jmenný prostor je vybrán. Nakonec klikněte na Instalovat tlačítko.

Po instalaci pokračujte kliknutím na Zobrazit operátora knoflík. V části Poskytovaná rozhraní API , klikněte na Vytvořit instanci .

Na stránce Vytvořit CheCluster ponechte výchozí nastavení a klikněte na Vytvořit tlačítko.

Ověřte instalaci operátora Red Hat CodeReady Workspaces:

$ oc get csv -n wordpress-deploy
NAME                                  DISPLAY                        VERSION   REPLACES   PHASE
crwoperator.v2.4.0   Red Hat CodeReady Workspaces   2.4.0                Succeeded

Ověřte, zda jsou všechny moduly v režimu Spuštěno stav a Připraveno . Chcete-li sledovat průběh instalace, postupujte podle protokolů operátora. Upozorňujeme, že trasa nebude buďte připraveni, dokud se v protokolech z podu operátora nezobrazí „CodeReady Workspaces je nyní k dispozici na http://xyz.org“. Může to trvat několik minut.

$ 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"
...

Načíst trasu připravenou pro kód:

$ 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

Navštivte trasu připravenou na kód a aktualizujte Informace o účtu . V části Začínáme vyberte PHP CakePHP zásobník.

Ověřte, že Pracovní prostor Red Hat CodeReady byl vytvořen:

2) CI/CD část 1 – Instalace Tekton CLI a OpenShift Pipelines

Poznámka :Jako referenci používám tento openshift/pipelines-tutorial. Pokud vás to zajímá, můžete se podívat na koncepty na vysoké úrovni OpenShift Pipelines. Pro můj případ jsem si vybral Tekton, ale klidně použijte Jenkins, CircleCI nebo jakýkoli jiný nástroj potrubí, který preferujete vy nebo vaše společnost.

Tekton je výkonný, ale flexibilní nativní open-source rámec Kubernetes pro vytváření systémů kontinuální integrace a kontinuálního doručování (CI/CD). Umožňuje vám vytvářet, testovat a nasazovat mezi více poskytovatelů cloudu nebo místních systémů tím, že odebere základní podrobnosti implementace. Plán Tekton Pipelines 2020.

Kroky:

Nainstalujte Tekton CLI (tkn) odtud podle souboru readme v úložišti.

Nainstalujte OpenShift Pipelines Operator.

Ověřte instalaci Tekton CLI a 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) Použijte vlastní šablonu, která vytvoří aplikační moduly

Poznámka :Použil jsem ukázkový zdrojový kód z úložiště Github.

Kroky:

Stáhněte soubor šablony pomocí curl příkaz:

$ curl -O https://raw.githubusercontent.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4/master/deploy/openshift-template.yaml

Nahrajte šablonu do svého jmenného prostoru:

$ oc create -f openshift-template.yaml

Před vytvořením aplikace nejprve vypište požadované proměnné pro šablonu:

$ 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}

Zpracujte poskytnutou šablonu včetně hodnot vašich parametrů:

$ 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 -

Ověřte, zda jsou všechny moduly v režimu Spuštěno nebo Dokončeno stav:

$ 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) Část 2 CI/CD – Spusťte potrubí Tekton

Kroky:

Zkontrolujte seznam vytvořených zdrojů:

$ 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

Monitorujte potrubí Tekton:

$ tkn pipeline logs -f
...
[deploy : oc] build.build.openshift.io/wordpress-2 started
...

Pro zahájení nového běhu potrubí:

$ 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 vzorových produkčních dat pomocí CLI

Poznámka :Vzhledem k velké velikosti našeho exportovaného databázového souboru budeme postupovat pomocí příkazů CLI. Vezměte prosím na vědomí, že při použití nástroje pro import Phpmyadmin by se kvůli omezením importu Phpmyadmin zobrazila chyba 504 Gateway Time-out.

Kroky:

Vstupte do kontejneru pod DB:

$ 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$

Importujte záložní soubor pomocí 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

(Volitelné) Uvnitř wp_options tabulky, upravte siteurl a domov hodnoty odpovídající cestě vaší aplikace.

Získejte trasu aplikace WordPress:

$ 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

Navštivte aplikační cestu, kde byste měli vidět Domovskou stránku aplikace .

[ Získejte tuto bezplatnou e-knihu:Správa clusterů Kubernetes pro figuríny. ]

Sbalit

Tato příručka poskytuje dobrý výchozí bod pro vytvoření sady vývojářů WordPress na OpenShift 4 a připraví vás na úspěšnou konfiguraci.

Zdroje a kredity

  • Úložiště zdrojového kódu
  • Drupal na OpenShift:Nasazení vašeho prvního webu Drupal
  • Drupal na OpenShift:Zlepšení zážitku pro vývojáře

Linux
  1. Jak vytvořit subdoménu pro svůj web

  2. Jak vytvořit svůj web Plesk

  3. Jak vytvořit pem pro váš stávající SSL

  1. Jak vytvořit a upravit výchozí soubor WordPress .htaccess

  2. Jak nasadit svůj první modul na clusteru Kubernetes

  3. Jak vytvořit galerii obrázků ve WordPressu

  1. Jak vytvořit vlastní linuxové distro pomocí Yocto

  2. Jak vytvořit a udržovat své vlastní Man Pages

  3. Jak vytvořit svůj první Java program na CentOS 8