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