GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer votre pile de développeurs WordPress sur OpenShift 4

C'était un après-midi d'automne froid en 2019 et je me suis assis derrière mon bureau avec une tasse de thé chaud fumant après une discussion avec mon manager. J'avais finalement décidé de prendre l'initiative de planifier la migration d'un site Web de production mondial d'une seule machine virtuelle vers le cloud. J'avais déjà de l'expérience avec Nginx et Apache en tant qu'administrateur de machine virtuelle. La deuxième partie de ma description de poste était le développement des fonctionnalités du site Web en PHP. Je savais que comprendre les exigences du point de vue du développeur et de l'administrateur serait important pour mon approche du déploiement d'une pile de développeurs WordPress sur OpenShift. Ma motivation en tant que jeune était d'explorer et d'apprendre de nouvelles technologies tout en faisant mes premières expériences dans un environnement de bac à sable sécurisé.

[ Vous pourriez également aimer :Apprenez OpenShift avec Minishift ]

J'étais conscient qu'avant de travailler avec OpenShift dans un environnement de production, j'avais besoin d'avoir une solide compréhension des composants du produit et de la façon dont ils interagissent les uns avec les autres. Au cours des semaines à venir, j'ai passé du temps à préparer l'examen Red Hat OpenShift Administration II et à chercher des réponses à mes questions auprès des architectes OpenShift si nécessaire.

Lorsque je n'étudiais pas pour l'examen, j'ai regardé les fonctionnalités du produit OpenShift 4. J'ai pu voir que, pour un site Web mondial, bon nombre de ces fonctionnalités sont très importantes et faciliteraient grandement mon expérience de développement. Voici quelques-uns des avantages :

  • Haute disponibilité
  • Automatisation de la mise à l'échelle
  • Gestion des candidatures
  • Système d'exploitation léger

Configuration et déploiement d'applications

Voici quelques remarques à garder à l'esprit :

  • Dans cet article, je n'aborde pas la sélection d'un service d'hébergement ni les étapes d'installation d'OpenShift 4.
  • Le code source et la base de données utilisés dans ce guide sont des exemples et ne reflètent ni n'utilisent les données d'un site Web de production.
  • Ce guide est issu de mon expérience personnelle lors de l'utilisation des outils mentionnés ci-dessous.
  • Si votre cluster OpenShift est accessible au public, au lieu de la configuration de build basée sur Docker, vous pouvez utiliser la configuration de build basée sur la source à la place.

1) Cloud IDE - Prêt pour le code Red Hat

Remarque :J'utilise ce document comme référence.

Prérequis :

  • rôle d'administrateur de cluster

Étapes :

Créer un nouveau projet :

$ oc new-project wordpress-deploy

Dans le menu de gauche du tableau de bord, cliquez sur Opérateurs et accédez à OperatorHub languette. Modifier le projet en haut à gauche de la page pour wordpress-deploy projet. Choisissez Espaces de travail Red Hat CodeReady et cliquez sur Installer bouton. Sur l'opérateur d'installation page, sélectionnez Choisir un espace de noms existant et assurez-vous que wordpress-deploy l'espace de noms est sélectionné. Enfin, cliquez sur Installer bouton.

Après l'installation, continuez en cliquant sur Afficher l'opérateur bouton. Sous API fournies , cliquez sur Créer une instance .

Sur Créer un CheCluster page, conservez les paramètres par défaut et cliquez sur Créer bouton.

Vérifiez l'installation de l'opérateur 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

Vérifiez que tous les pods sont dans l'état En cours d'exécution état et Prêt . Pour suivre la progression de l'installation, suivez les journaux de l'opérateur. Veuillez noter que l'itinéraire ne sera pas soyez prêt jusqu'à ce que les journaux du module opérateur indiquent "CodeReady Workspaces est maintenant disponible sur http://xyz.org". Cela peut prendre quelques minutes.

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

Récupérez la route prête pour le code :

$ 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

Visitez le itinéraire prêt pour le code et mettez à jour vos informations de compte . Sous Commencer sélectionnez l'onglet PHP CakePHP pile.

Vérifiez que l'espace de travail Red Hat CodeReady a été créé :

2) CI/CD partie 1 - Installer Tekton CLI et OpenShift Pipelines

Remarque :Comme référence, j'utilise ce tutoriel openshift/pipelines. Si vous êtes intéressé, vous pouvez consulter les concepts de haut niveau d'OpenShift Pipelines. Pour mon cas, j'ai choisi Tekton mais n'hésitez pas à utiliser Jenkins, CircleCI ou tout autre outil de pipeline préféré par vous ou votre entreprise.

Tekton est un framework open source natif Kubernetes puissant mais flexible pour la création de systèmes d'intégration continue et de livraison continue (CI/CD). Il vous permet de créer, tester et déployer sur plusieurs fournisseurs de cloud ou systèmes sur site en faisant abstraction des détails de mise en œuvre sous-jacents. Feuille de route 2020 de Tekton Pipelines.

Étapes :

Installez Tekton CLI (tkn) à partir d'ici conformément au fichier Lisez-moi dans le référentiel.

Installez l'opérateur OpenShift Pipelines.

Vérifiez l'installation de Tekton CLI et 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) Appliquer un modèle personnalisé qui crée des pods d'application

Remarque  :J'ai utilisé un exemple de code source du référentiel Github.

Étapes :

Téléchargez le fichier modèle en utilisant curl commande :

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

Importez le modèle dans votre espace de noms :

$ oc create -f openshift-template.yaml

Avant de créer l'application, listez d'abord les variables requises pour le modèle :

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

Traitez le modèle fourni, y compris vos valeurs de paramètres :

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

Vérifiez que tous les pods sont dans l'état En cours d'exécution ou Terminé état :

$ 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 partie 2 - Exécuter le pipeline Tekton

Étapes :

Consultez la liste des ressources créées :

$ 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

Surveillez le pipeline Tekton :

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

Pour démarrer une nouvelle exécution de pipeline :

$ 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) Importation des données de production de l'échantillon à l'aide de la CLI

Remarque :En raison de la grande taille de notre fichier de base de données exporté, nous allons procéder à l'aide de commandes CLI. Veuillez noter qu'en utilisant l'outil d'importation Phpmyadmin, vous obtiendrez une erreur 504 Gateway Time-out en raison des limites de l'importation Phpmyadmin.

Étapes :

Entrez dans le conteneur de pod de base de données :

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

Importez le fichier de sauvegarde à l'aide de la 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

(Facultatif) À l'intérieur de wp_options tableau, modifier siteurl et maison valeurs correspondant à votre chemin d'application.

Obtenir la route de l'application 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

Visitez la route de l'application, où vous devriez voir la page d'accueil de l'application .

[ Obtenez cet ebook gratuit :Gérer vos clusters Kubernetes pour les nuls. ]

Récapitulez

Ce guide fournit un bon point de départ pour créer votre pile de développeurs WordPress sur OpenShift 4 et vous prépare à une configuration réussie.

Ressources et crédits

  • Référentiel de code source
  • Drupal sur OpenShift :Déploiement de votre premier site Drupal
  • Drupal sur OpenShift :Améliorer l'expérience des développeurs

Linux
  1. Comment déployer votre premier pod sur un cluster Kubernetes

  2. Comment créer un sous-domaine pour votre site Web

  3. Comment créer votre site Plesk

  4. Comment créer un pem pour votre SSL existant

  5. Comment créer une galerie d'images dans WordPress

Comment ajouter un reCAPTCHA à votre site WordPress

Comment créer votre propre VPN – Instructions détaillées

Comment installer WordPress sur une pile Nginx LEMP avec Ubuntu 14.04

Comment configurer votre premier site WordPress

Comment sécuriser ou renforcer votre site Web WordPress

Comment créer un environnement de staging WordPress