Era una fría tarde de otoño de 2019 y me senté detrás de mi escritorio de trabajo con una taza de té humeante después de una conversación con mi gerente. Finalmente había decidido tomar la iniciativa en la planificación de la migración de un sitio web de producción global desde una sola máquina virtual a la nube. Ya tenía experiencia con Nginx y Apache como administrador de máquinas virtuales. La segunda parte de la descripción de mi trabajo fue el desarrollo de las características del sitio web en PHP. Sabía que comprender los requisitos tanto desde la perspectiva del desarrollador como del administrador sería importante para mi enfoque para implementar una pila de desarrollo de WordPress en OpenShift. Mi motivación cuando era joven era explorar y aprender nuevas tecnologías mientras hacía mis primeros experimentos en un entorno seguro de espacio aislado.
[ También te puede interesar:Aprenda OpenShift con Minishift ]
Sabía que antes de trabajar con OpenShift en un entorno de producción, necesitaba tener un conocimiento sólido de los componentes del producto y cómo interactúan entre sí. En las próximas semanas, pasé tiempo preparándome para el examen Red Hat OpenShift Administration II y buscando respuestas a mis preguntas de los arquitectos de OpenShift si era necesario.
Cuando no estaba estudiando para el examen, miraba las características del producto OpenShift 4. Pude ver que, para un sitio web global, muchas de esas características son muy importantes y facilitarían mucho mi experiencia de desarrollo. Estos son algunos de los beneficios:
- Alta disponibilidad
- Automatización del escalado
- Administración de aplicaciones
- Sistema operativo ligero
Configuración y despliegue de aplicaciones
Aquí hay algunas notas para tener en cuenta:
- En este artículo, no analizo la selección de un servicio de alojamiento ni los pasos de instalación de OpenShift 4.
- El código fuente y la base de datos utilizados en esta guía son muestras y no reflejan ni utilizan datos de ningún sitio web de producción.
- Esta guía proviene de mi experiencia personal mientras trabajaba con las herramientas que se mencionan a continuación.
- Si su clúster de OpenShift es de acceso público, en lugar de la configuración de compilación basada en Docker, puede usar la configuración de compilación basada en código fuente.
1) IDE en la nube:Red Hat CodeReady
Nota :Estoy usando este documento como referencia.
Requisitos previos:
- función de administrador de clúster
Pasos:
Crear un nuevo proyecto:
$ oc new-project wordpress-deploy
En el menú del panel izquierdo, haga clic en Operadores y vaya a OperatorHub pestaña. Cambiar Proyecto en la parte superior izquierda de la página para wordpress-deploy
proyecto. Elija espacios de trabajo Red Hat CodeReady y haga clic en Instalar botón. En el Operador de instalación página, seleccione Elegir un espacio de nombres existente y asegúrese de que wordpress-deploy
se selecciona el espacio de nombres. Finalmente, haga clic en Instalar botón.
Después de la instalación, continúe haciendo clic en Ver operador botón. En API proporcionadas , haga clic en Crear instancia .
En Crear CheCluster página, mantenga la configuración predeterminada y haga clic en Crear botón.
Verifique la instalación del operador 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
Verifique que todos los pods estén en el estado En ejecución. estado y Listo . Para realizar un seguimiento del progreso de la instalación, siga los registros del operador. Tenga en cuenta que la Ruta no Esté preparado hasta que los registros del pod del operador muestren "CodeReady Workspaces ahora está disponible en http://xyz.org". Puede tardar unos minutos.
$ 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"
...
Recuperar ruta codificada:
$ 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
Visita la ruta codeready y actualice la información de su cuenta . Debajo de Comenzar pestaña, seleccione PHP CakePHP pila.
Verifique que Red Hat CodeReady Workspace ha sido creado:
2) CI/CD parte 1:instalar Tekton CLI y OpenShift Pipelines
Nota :Como referencia, estoy usando este tutorial de openshift/pipelines. Si está interesado, puede consultar los conceptos de alto nivel de OpenShift Pipelines. Para mi caso, elegí Tekton, pero no dude en usar Jenkins, CircleCI o cualquier otra herramienta de canalización preferida por usted o su empresa.
Tekton es un marco de código abierto nativo de Kubernetes poderoso pero flexible para crear sistemas de integración continua y entrega continua (CI/CD). Le permite crear, probar e implementar en varios proveedores de la nube o sistemas locales mediante la abstracción de los detalles de implementación subyacentes. Hoja de ruta de Tekton Pipelines 2020.
Pasos:
Instale Tekton CLI (tkn) desde aquí según el archivo Léame en el repositorio.
Instale el operador de tuberías de OpenShift.
Verifique la instalación de Tekton CLI y 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) Aplicar una plantilla personalizada que crea módulos de aplicaciones
Nota :Usé código fuente de muestra del repositorio de Github.
Pasos:
Descarga el archivo de plantilla usando curl
comando:
$ curl -O https://raw.githubusercontent.com/Tessg22/making-a-wordpress-developer-stack-on-openshift-4/master/deploy/openshift-template.yaml
Cargue la plantilla en su espacio de nombres:
$ oc create -f openshift-template.yaml
Antes de crear la aplicación, primero enumere las variables requeridas para la plantilla:
$ 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}
Procese la plantilla proporcionada, incluidos los valores de sus parámetros:
$ 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 -
Verifique que todos los pods estén en el estado En ejecución. o Completado estado:
$ 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 parte 2 - Ejecutar canalización de Tekton
Pasos:
Consulta la lista de recursos creados:
$ 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
Supervise el oleoducto de Tekton:
$ tkn pipeline logs -f
...
[deploy : oc] build.build.openshift.io/wordpress-2 started
...
Para iniciar una nueva ejecución de canalización:
$ 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) Importación de los datos de producción de muestra usando CLI
Nota :Debido al gran tamaño de nuestro archivo de base de datos exportado, procederemos utilizando los comandos CLI. Tenga en cuenta que al utilizar la herramienta de importación de Phpmyadmin, obtendrá un error de tiempo de espera de puerta de enlace 504 debido a los límites de la importación de Phpmyadmin.
Pasos:
Ingrese al contenedor del 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$
Importe el archivo de copia de seguridad mediante 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
(Opcional) Dentro de wp_options
tabla, editar siteurl y casa valores correspondientes a la ruta de su aplicación.
Obtenga la ruta de la aplicación de 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
Visite la ruta de la aplicación, donde debería ver la Página de inicio de la aplicación .
[ Obtenga este libro electrónico gratuito:Administrar sus clústeres de Kubernetes para principiantes. ]
Resumir
Esta guía proporciona un buen punto de partida para crear su pila de desarrollador de WordPress en OpenShift 4 y lo prepara para una configuración exitosa.
Recursos y créditos
- Repositorio de código fuente
- Drupal en OpenShift:implementación de su primer sitio Drupal
- Drupal en OpenShift:Mejorando la experiencia del desarrollador