Antes de explorar este tutorial lo suficientemente largo, déjame disculparte. Esta es la tercera parte (ver las partes uno y dos) y me tomó unos meses escribirla al final, por dos razones: primero, como fundador de la compañía, mi presencia y atención se necesitaban en otra parte y, En segundo lugar, quería nuestro sitio. Para ejecutarse en esta configuración durante un período, de modo que esté seguro de que lo que escribo tendrá resultados buenos, confiables y de rendimiento. Además, dado que usaremos Google Cloud para implementar esta solución, se advierta que activaremos algunos servidores virtuales relativamente pequeños, que tienen un costo de unos pocos dólares (durante los cuales ejecuta estos servidores). Para seguir el tutorial), así que asegúrese de eliminarlos todos después de que termine. ¡La buena noticia es que si nunca ha usado Google Cloud hasta ahora, recibirá un bono de $ 300 de Google para probarlo!
¡Vamos a empezar! Lo que es Kubernetes Kubernetes, en resumen, es una herramienta de orquestación de contenedores. Esto significa que hace todas las tareas pesadas para garantizar que nuestros contenedores funcionen correctamente, destruyen las innecesarias o giran las nuevas, asegura que el enrutamiento de tráfico sea correcto entre ellos y una serie de otras cosas útiles, la mayoría de las cuales tienen que o tienen que o hacerse manualmente en el mundo tradicional de la administración del servidor. ¿Por qué Docker no enjambre? Bueno, en primer lugar, porque no tengo absolutamente ninguna experiencia con él y, en segundo lugar, porque Kubernetes se convierte en un líder del mercado cuando se trata de gestión de contenedores. Y por una buena razón, porque es un proyecto de fuente abierta de Google, una compañía que sabe algo sobre las tecnologías y obstáculos de los servidores que traen. Hay varias entidades (que en Kubernetes se definen con el uso de archivos YAML) a los que nosotros se referirá y usará en este tutorial, que vale la pena mencionar de antemano, pero que probablemente se volverá más familiarizado una vez que los usemos:
El puente es la entidad principal de Kubernetes, por así decirlo. Es casi análogo al contenedor de Docker, la única diferencia es que podemos tener más contenedores en un solo puente. Por ahora, piense en Bridge == contenedor
La implementación es la forma en que controlamos los puentes. Su importancia difiere un poco del significado tradicional de la palabra, porque no es un proceso, sino más bien un fragmento de configuración por el cual definimos cuántas vainas (también llamadas réplicas en este contexto) de una determinada manera que necesitamos, cuántos recursos quiero hazlo. Asignar cada una y muchas otras responsabilidades.
Los servicios son la forma en que exponemos un cierto tipo/grupo de puentes, o internamente para estar conectados de otros puentes o externamente a Internet. Los servicios se encuentran entre las entidades más simples que se definirán. Los secretos son una entidad que posee, adivinó, secretos, como contraseñas y claves API. En Kubernetes, consumimos secretos al montar en un puente, de cierta manera, por decir /etc /secretos (podría ser cualquier cosa). Entonces DB_Secret se almacena como una cadena en/etc/secrets/db_secret.
Los puntos finales son una entidad administrada automáticamente. Normalmente, no debemos definirlos nosotros mismos, porque Kubernetes lo hace cuando definimos un servicio, pero hay excepciones, como cuando queremos que un servicio sea dirigido a un servidor externo que Kubernetes no es consciente. Usaremos este enfoque en nuestro tutorial (Sugerencia: para WP-Contemplate).
El nodo es una máquina física o un servidor virtual que ejecuta un kubelet. Kubelet es un proceso de trabajo de Kubernetes que se comunica con su maestro sobre la condición del nodo y todas las demás entidades. Cuando nuestra pila está en funcionamiento, todos los puentes están en los nodos de trabajo, Master solo realiza un seguimiento de todos y delegado trabajo. Como un jefe.
Ingras es, a pesar de su nombre algo exótico, un objeto simple de enrutamiento de dominio. Con esto, le decimos al saldo de carga de área de Google (o propio) que debe dirigirse a qué servicio y puerto.
¿Confundido? ¡No te preocupes, todo tendrá mucho más sentido pronto!
Configuración de Google Cloud Utilizaremos Google Cloud para configurar nuestra pila de Kubernetes, la razón principal es que no tenemos que cuidar el nudo principal Kubernetes: Google lo hace por nosotros. Para continuar, inicie sesión primero en la consola de Google Cloud y complete todos los detalles, lo que debería brindarle acceso al tablero de la consola: el panel de Google Cloud aquí, navegue por el motor de contenedores y cree sus primeros contenedores de clúster; Siéntase libre de nombrarlos como desee y elija el área más cercana a usted, pero asegúrese de elegir el tipo de micro y deje el tamaño de 3 nudos. En un escenario real, por supuesto, elegiríamos mayores capacidades.
Además, retenga el campo de imagen, escribe cos. Esto representa el sistema operativo optimizado para contenedor, que es el Google Linux, construido especialmente para contenedores y basado en el proyecto de código de código abierto de código abierto.
Creación de Kubernetes Haga clic en Haga clic en Crear y esperar unos minutos para que nuestro clúster esté en línea. Ahora podemos verificar nuestros autos virtuales funcionales navegando en el motor de las computadoras -> VM Courts:

Los tribunales calculan el motor con la configuración del clúster, ahora tenemos que dar un paso atrás y pensar un poco sobre nuestra pila final. El desafío que enfrentamos a WordPress en varios contenedores es tanto (o más importante, qué) queremos compartir esos contenedores y cómo. En primer lugar, hay wp-config.php, que está personalizado para cada instalación de WordPress, y luego está el contenido WP. En mi opinión, tiene sentido hornear el primero directamente en la imagen de una manera que nos permite necesitar tocarlo. Como le hemos mostrado en el tutorial anterior, podemos hacer que lea las variables de entorno, más bien los valores de codificación pesados. La segunda parte es mucho más complicada. Necesitamos todos nuestros contenedores para compartir el mismo contenido WP, lo que significa que tenemos que establecer un disco de red en el que se almacenará ese director. Afortunadamente, hay una solución para esto llamado Glusterfs, que Kubernetes acepta de inmediato, ¡y es bastante trivial de configurar! En la página con sus tribunales enumerados, haga clic en Crear instancia y nuevamente, seleccione el tipo micro de la máquina y colóquelo en la misma área que su clúster de contenedores. Llámalos Gluster-1.
La creación de las instancias de Glusterfs crea el tribunal y, mientras está configurado, crea otra, con exactamente la misma configuración, pero llámalo Gluster-2.

Sí, necesitaremos dos canchas de Glusterfs, por dos razones: primero, por lo que tenemos redundancia y, en segundo lugar, para fines educativos, la pantalla con las canchas de VM ahora debería verse así:

Todos los tribunales de nuestro motor de cálculo si ha prestado atención durante la creación de los tribunales en los párrafos anteriores, es posible que haya notado que el costo de cada tribunal es de aproximadamente $ 4/mes, lo que significa que esta configuración nos costará alrededor de $ 20, que no es caro en absoluto! Por supuesto, para la producción, lo más probable es que necesite canchas más fuertes, pero debería poder poner en funcionamiento toda la pila con menos de $ 100/mes. Sí, esta no es una configuración para un blog simple, pero cuando necesita disponibilidad y rendimiento, es un costo razonable. ¡Glusterfs Confusion ahora es hora de tener nuestras manos un poco! Para continuar, primero deberá instalar Google SDK, que le permitirá conectarse a cualquiera de los tribunales a través del shell. No describiré su configuración aquí, porque la documentación oficial incluye una guía paso por paso para que funcione correctamente. Una vez que haya terminado de configurar, asegúrese de poder enumerar sus tribunales a través de la lista de instancias de cómputo de Shell: $ GcLoud. Si no puede hacer eso, significa que aún no ha autenticado por Shell, así que ejecute $ GCLOUD Auto Iniciar sesión [Correo electrónico protegido]
y confirmar la autenticación en el navegador. Luego establezca el proyecto activo actual: $ gcLoud config establecer el proyecto su proyecto-id (puede encontrar su ID de proyecto haciendo clic en mi primer proyecto en la barra de la consola en la nube). Ahora puede ejecutar el comando de instancias de lista nuevamente y debe obtener algo similar:

Lista de tribunales en el terminal ahora, abra dos pestañas separadas en cualquier programa que use para ejecutar shell, ya que configuraremos ambas instancias de Glusterfs al mismo tiempo: en el navegador, haga clic en el icono de flecha SSH y elija Ver comando GcLoud, que Luego debe copiarlo a uno de sus conchas, cada instancia en una. Para mí, uno de ellos se ve así: $ GCLOUD Compute-Project “Avian-Current-168511” SSH-Zone “Europe-West1- B” “Gluster-1” Antes de configurar Glusterfs, asegurémonos de que ambos nudos estén actualizados y que hayan instalado Glusterfs. Ejecute estos comandos en ambos:
$ sudo -i para cambiar a la cuenta raíz

$ apt-get actualización para actualizar depósitos apt
$ apt-get install -y apt-transport-https
$ Wget -o – https://download.gluster.org/pub/gluster/glusterfs/3.11/rsa.pub | Apt -ky add – $ wget -o – https://download.gluster.org/pub/gluster/glusterfs/3.11/rsa.pub | APT -KY ADD – Para instalar la clave pública RSA A Glusterfs (cambie 3.11 para la versión correcta)

$ echo en https://download.gluster.org/pub/gluster/glusterfs/last/debian/jessie/apt Jessie Main> /etc/apt/source.list.d/gluster.list (asegúrese de que su distribución. Es correcto )
$ apt-get actualización
$ apt-get install -y glusterfs-server
$ PS aux | GreP Gluster
$ mkdir -p /date /ladrillo1
Con Glusterfs instalado, ahora es el momento de configurarlo. Vale la pena señalar que no hay noción de nodos maestros/esclavos, todos los servidores se llaman iguales, porque un cliente que monta un volumen de Glusterfs puede conectarse y leer/escribir a cualquiera de ellos.
Volvamos a nuestra consola en la nube y verifiquemos las direcciones IP internas de nuestros nodos Glusterfs, porque tendremos que conectarlos. En mi caso, los IP son 10.132.0.5 (llamemos a este nodo Gluster-1) y 10.132.0.6 (Gluster-2). En Gluster-1, ejecute $ Gluster Peer Sample 10.132.0.6 y en Gluster-2, ejecute $ GLUSTER 10.132.0.5 He probado ambas instancias entre ellos, lo que significa que ahora son conscientes del otro, pero aún así difunden ningún volumen , así que hagamos esto. En ambos nodos, cree el director que se servirá como un solo volumen, pero replicado, llamado WP-Content-Site1 (la réplica significa que cierto director siempre está sincronizado en ambos nudos). Recomiendo usar un nombre un poco más específico, porque probablemente desee tener más sitios web que monten WP-Account en los mismos nodos Glusterfs (no se preocupe por WordPress en este momento, podemos montar este volumen en el WP nuestro Instalado en un nombre completamente diferente). Para crear el director, ejecute $ mkdir -p/date/brick1/wp-content-site1 casi allí! Con ambos nodos con sus directores, todo lo que tenemos que hacer es crear un volumen de Glusterfs. En Gluster-1, ejecute los siguientes comandos: $ Gluster Volume Crear réplica WP-Centent-Site1 2 10.132.0.5:/data/brick1/wp-content-site1 10.132.
$ Gluster Volume Start WP-Content-Site1
$ mkdir -p /mnt /wp-account-site1
$ Mount -T Glusterfs 10.132.0.5:/wp-content-site1/mnt/wp-content-site1
$ touch /mnt/wp-content-site1/test.txt
Pasemos por lo que acabamos de hacer. En primer lugar, creamos un nuevo volumen, que se replica en ambos nudos y utilizamos el parámetro de fuerza, de lo contrario, Glusterfs se quejaría de que prefieren tener volúmenes en discos externos. Luego comenzamos el volumen recién creado, lo que significa que los clientes externos ahora pueden conectarse a cualquiera de los dos nodos para montar el volumen. De hecho, en el paso 4 hice exactamente esto, monté el volumen a través de Glusterfs en el nodo en sí. (Nota: No confunda/date/Brick1/WP-Account-Site1 y/Mnt/WP-Context1-El primero es lo que Glusterfs usa como sistema de archivos, mientras que el último lo ha montado para probar el volumen podría omitir este paso ). Finalmente, creamos un archivo de prueba Gluster-1 que ahora debería figurar en Gluster-2 si ejecutamos $ LS/Date/Brick1/WP-Content-Site1. Ahora puede desmontar /mnt /wp-contento-site1, pero que sea como es, porque es este directorio que utilizaremos como nuestro contenido WP (siéntase libre de salir de la carcasa en Gluster -2- ”
Ya no lo necesito más). Entonces, antes de cerrar el shell Gluster-1, descargue WordPress y extraiga WP-Content: + $ cd/mnt/wp-centent-site1- $ wget https://wordpress.org/late.tar.gz -$ tar -zxf Último .tar.gz -$ mv wordpress/wp -content/*. -$ rm -rf wordpress ortat.tar.gz -$ chown -r 1000: 1000. Tenga en cuenta que en el futuro, si tiene que hacer ajustes a la CONTMACA WP, este es el director en el que los realizará y los cambios se propagarán automáticamente a ambos nodos correctamente. Además, tenga en cuenta que hemos establecido permisos para el usuario/grupo que tiene UID/GID 1000, esto se debe a que nuestra imagen de WordPress tiene el usuario y el grupo www -ATA establecido en la misma ID, por lo que evitamos cualquier problema de permisos posibles . ¡Listo, no dude en cerrar el shell, nuestro clúster Glusterfs ahora está configurado correctamente y listo para montar en cuántos puentes de Kubernetes queremos! Afortunadamente, la configuración de MySQL, Google Cloud, viene con su oferta MySQL alojada, lo que hace que su configuración sea muy simple, literalmente solo unos pocos clics. En la consola de la nube, explore el SQL (haga clic en el icono de la hamburguesa a la parte superior derecha, si el menú no es visible), luego elija Creación de instancias. En la página siguiente, seleccione MySQL y luego elija la segunda generación. La siguiente pantalla debería ser familiar hasta ahora:
Configuración de MySQL Court. Siéntase libre de seleccionar el mismo tipo de automóvil que para todos los demás servicios: DB-F1-Micro. Como la interfaz probablemente le advertirá, este automóvil no está cubierto por Google SLOS, pero es perfecto para las pruebas y el desarrollo, lo que hacemos aquí. Elija la ubicación de instancia en la misma región/área que el clúster de su contenedor para minimizar la latencia de la red. MySQL de Google acepta la replicación de conmutación por error en el cuadro, solo tiene que verificar la réplica de conmutación por error creada por la caja de selección, pero no usaremos una por ahora; siempre podemos regresar y crearla más tarde, mientras se ejecuta el tribunal principal. Finalmente, cree una contraseña de root (no olvide guardarla en algún lugar de forma segura) para MySQL y haga clic en Crear en la parte inferior. Después de unos minutos, su tribunal debería estar listo, así que continúe verificándolo haciendo clic en el nombre de la corte (MySQL-0 en mi caso). No tiene nada que hacer aquí por ahora, pero puede volver a esta página, más tarde, para agregar una respuesta, hacer seguridad y verificar su rendimiento. Antes de continuar configurando Kubernetes, aún necesita una cosa: una cuenta de servicio. Estos son tipos especiales de cuentas, utilizados por los servicios, en lugar de las personas, y vienen con algunos detalles adicionales, como claves y roles privados. Para crear una cuenta de servicio, explore la página de cuentas de servicio (en IAM & Admin en la navegación principal), haga clic en Crear la cuenta de servicio y complete el formulario de la siguiente manera:
Configuración de la cuenta de servicio (asegúrese de seleccionarlos: Cloud SQL Client y Cloud SQL Editor) Después de hacer clic en la creación, se descargará automáticamente un archivo JSON;Manténgalo en un lugar seguro y recuerde dónde está, porque lo necesitará en breve.Nuestro WordPress utilizará esta cuenta de servicio para proporcionar la conexión a nuestro MySQL Court (para aumentar la seguridad), por lo que necesitamos crear un usuario de SQL para adjuntar a la cuenta de servicio.Para crear uno, primero enumere las instancias en Shell, de la siguiente manera: $ GCLOUD Beta SQL Instancias Lista y cree el usuario de MySQL (cambie los valores según sea necesario): $ GcLoud Beta SQL Usuarios crea nubes WP_USER
Creación del usuario de MySQL en el terminal Finalmente, cree la base de datos: las bases de datos de $ GCLOUD beta SQL creen WP_Turial-Instance = MySQL-0 No necesita dar permisos específicos, porque todos los usuarios que define tienen acceso a todas las bases de datos en la misma corte. Aunque esto puede parecer una mala idea, tenga en cuenta que esta es una configuración avanzada y controlada de usted) y una cuenta de servicio (es decir, sin jugar con contraseñas). Ahora ha terminado de configurar MySQL, ¡es hora de implementar finalmente nuestro WordPress! Configuración de Kubernetes Debido a que haremos la mayor parte de la configuración de Kubernetes a través de la línea de comandos, primero debemos instalar el comando kubectl, que forma parte del conjunto de herramientas de gcLoud: $ gcloud compone instalar kubectl y luego iniciar sesión en Google Cloud y configurar la configuración. (Cambie la zona horaria y la ID del proyecto de acuerdo con su configuración).
$ GcLoud config set Project avian-corrente-168511 para establecer el proyecto activo actual
$ GCLOUD config Set COMPUTES/Area European-West1-B para establecer la zona horaria
$ GcLoud contenedor clusters get-credentials cluster-1 para guardar su configuración en un archivo local
Su orden Kubectl ahora debe estar disponible y conectado al clúster correcto. Para verificar, ejecute $ kubectl obtenga pods-thol-naspaces que deberían devolver algo como esto:

La lista de puentes en el terminal como se mencionó anteriormente, un puente es similar a un contenedor y aquí ve muchos de ellos bajo el espacio de nombre del sistema de kube, que son creados automáticamente por Google Container Engine y necesario para ejecutar el clúster correcto, por lo que Es posible querer dejarlos solos secretos para que WordPress funcione correctamente, primero debemos establecer algunos secretos, siendo el más importante las credenciales de acceso MySQL.¿Recuerdas el archivo de cuenta de servicio que creé anteriormente (llamado algo como my-project-name-12345.json)?Ahora es el momento de usarlo;

Copiéelo en el directorio del proyecto, cambie el nombre en el creencia. Esto abrirá un editor (VIM, muy probablemente) con una sola clave en su fecha, llamada Credential.json y el valor es el contenido del archivo de credencial original, codificado en Base64. Aunque esto puede parecer confundido al principio, tiene sentido. Como mencionamos anteriormente, cuando los secretos son consumidos por Kubernetes, se montan en el sistema de archivos como archivos ordinarios, que Kubernetes decodifica automáticamente, que verá pronto. Cierre vim presionando: Q (columna, luego Q). Los secretos que acabamos de crear serán utilizados por nuestro puente proxy CloudsQL (explicado brevemente), pero no por WordPress, por lo que tenemos que crear otro conjunto de secretos sin los cuales WordPress no puede ejecutarse. A saber, sales. En el directorio del proyecto, cree uno nuevo y llámelo K8S (abreviatura de Kubernetes) e ingrese el siguiente archivo en el interior, llamado WordPress-Secrets.yml: [Gist https://gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12bafru-wordpress——–wordpress—- Secrets-Syml /] Como sugiere el archivo, debe convertir cada una de las sales y claves de WordPress (generadas aquí en sus valores codificados Base64, que se realiza con este comando: $ ECHO ‘A-TUNCH-off-Gibberish- aquí ‘

| Base64 Una vez que se hayan definido todos los valores, implementa el archivo secreto: $ kubectl create -f wordpress -secrets.yml ahora elimínelo, no lo necesitará y contiene datos confidenciales que no desea compartir o enviar erróneamente en un depósito de git. Contenido de WP compartido antes de implementar WordPress, necesitamos una forma de acceder a nuestro volumen de Glusterfs que creamos anteriormente. Según la documentación oficial sobre los servicios, debemos crear un servicio sin selectores y un conjunto apropiado de puntos finales. Create two new files in the K8S directory called glusterfs-service.yml and glusterfs-endpoints.yml and enter the following content in: [Gist https://gist.github.com/tomazzaman/5639efa1cf694F629008345E35A12BAFUDIU-GLUSTERFSPOINTS- [gist https:/ /gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-glusterfs-service/] para verificar que el servicio se ha apoderado de los puntos finales correctos, ejecute $ kubectl obtenga svc y $ kubectl describe los glosadores SVC. Si ve los puntos finales correctos IP como la siguiente captura de pantalla, significa que nuestro clúster está listo para conectarse a GLUSTFS:

La obtención de información de GLUSTERFS en el terminal no se preocupe por el puerto (1), es solo un puerto sustituto porque los servicios no pueden existir sin definir uno. La implementación de WordPress con todas nuestras adicciones en funcionamiento, ahora es el momento de finalmente implementar WordPress. Una vez más, cree un nuevo archivo YAML, llámelo WordPress-Imployment.yml y coloque el siguiente contenido en él: este archivo puede parecer un poco intimidante al principio, su actualización se convierte en una segunda naturaleza una vez que se da cuenta de lo que es. Vamos a superarlo para aclarar: Línea 4: Nombre de esta implementación
Línea 6: cuántas réplicas (vainas del mismo tipo) queremos ejecutar en esta pila, en nuestro caso 3.
Línea 9: Una de las responsabilidades de implementación es la ejecución de cualquier número de respuestas que definimos. Las etiquetas sirven como una forma de Kubernetes para monitorear los estados de POD. En nuestro caso, observe todos los puentes etiquetados con la aplicación: WordPress.
Línea 10: Cuando implementamos una nueva versión de WordPress, ¿cómo queremos que la implementación la inicie? Podemos destruir primero los viejos puentes, luego crear otros nuevos, o podemos hacer una actualización continua, que elimina un puente, crea uno nuevo con una nueva versión y borra otro puente antiguo, reemplazándola nuevamente con una con una versión nueve . , y así sucesivamente, hasta que todos los puentes se hayan actualizado. La mayoría de las veces, esta es la forma preferida, porque siempre tenemos vainas disponibles en Internet, evitando cualquier tiempo no funcional durante nuestra implementación.
Línea 15: La plantilla (y la especificación posterior -> contenedores en las líneas 19 y 10) es la parte más importante de la implementación. Sirve como modelo para todos los puentes creados.
Línea 35: LivityProbe es el modo Kubernetes para verificar si nuestro puente funciona correctamente. Si no, evitará el envío de cualquier tráfico e intentará reiniciarlo.

Línea 49: Exponer el puerto 80
Línea 52: Instale los secretos que creamos anteriormente en/etc/secretos y nuestro volumen glusterfs in/lime/www/wordpress/wp-content
Línea 58: el segundo contenedor en este puente es creado por Google con el propósito de conectarse a CloudsQL, por lo que no dude en leer este documento cómo funciona. Lo que vale la pena señalar aquí es que los contenedores en el mismo puente comparten la lógica localhost (no lo confunden con la máquina virtual host en funcionamiento, sigue siendo un entorno aislado), por lo que nos conectamos a 127.0.0.1:3306 en nuestro puente de WordPress .

Línea 65: en cuyo caso MySQL queremos conectar este puente. Para obtenerlo, ejecute las instancias de $ gcloud beta sql, luego $ gcloud beta sql instancias descripciones mysql-0 (cambie mysql-0 con el nombre de su corte) y localice el nombre de la conexión.
Línea 78: Aquí definimos todos los volúmenes que cualquiera de nuestras cápsulas quiere consumir. Aquí, puede ver el volumen de credenciales de instancia CloudSQL definidos. ¿Observe cómo el nombre con cada volumen coincide con el de VolumeMemounts en las líneas 54, 56 y 71? No es una coincidencia, así que cuida los errores de escritura.
Tiempo de la verdad: $ kubectl create -f wordpress -deployment.yml (¡asegúrese de actualizar la línea 65!) Esto creará 3 puentes de WordPress idénticos: enumerar puentes de WordPress y redirigir el puerto ahora, no podemos acceder a WordPress a través de un área o un área IP todavía, porque no hemos expuesto los puentes en Internet, ¡pero aún podemos probarlo! Ejecute $ kubectl obtenga vainas, elija una de ellas (sin importar cuál) y ejecute $ kubectl puerto-forward wordpress-pod-name 8080: 80. Esto asignará el puerto 80 del puente al puerto de 8080 en la computadora, por lo que ahora puede abrir su navegador, navegar en http: // localhost: 8080 e instalar WordPress! Solución de problemas y revistas Si, por cualquier motivo, cualquiera de sus puentes se comporta mal una vez que los ha configurado, hay algunos pedidos que pueden ser extremadamente útiles para investigar lo que está sucediendo:
$ Kubectl Logs WordPress-498979938-258SJ eliminará las revistas de cualquier puente dado. Si la cápsula está en un bucle de reinicio, es posible que desee agregar previamente al orden. Alternativamente, visite la página de Google Journal para inspeccionarlos desde su navegador
$ Kubectl Exec -Ti WordPress-498979938-258SJ Bash se conectará al Shell del Puente, como SSH.
$ Kubectl Eliminar pod WordPress-498979938-258SJ eliminará el puente y, debido a que usamos una implementación, automáticamente creará una nueva en su lugar.
La exposición de WordPress a Internet, el tutorial oficial sugiere la creación de un servicio LoadBalaccer para exponer el puerto en nuestros puentes, pero esta no es en realidad la mejor práctica, por varias razones:
No tenemos control sobre la IP en el que se expondrán los servicios
Necesitamos lidiar con la finalización de SSL, agregando otro nivel de complejidad que necesitamos mantener, o una responsabilidad adicional a nuestra imagen, podemos exponer más áreas en la misma IP.
Nuestras revistas no mostrarán IP apropiadas para los visitantes, sino en nuestro servicio interno.
Entonces, lo que debemos hacer a cambio es crear un servicio, como Nodeport. Este tipo de servicio mapea nuestro puerto de contenedor 80 en todos los nodos en el clúster, ya sea que el contenedor esté en cierto nudo o no en un puerto arbitrario, mayor a 30000. [Gist https://gist.github.com/tomazzaman/ 5639efa1cf694f629008345e35a12baff #File-WordPress-Service-Syml /] Guarde este archivo en su directorio K8S y ejecute $ Kubectl Create -f WordPress-Service.yml. Para verificar si el servicio ha creado los puntos finales necesarios, ejecute $ kubectl get svc, ep. Si ve algo como las próximas capturas de pantalla, el servicio dirige el tráfico desde el puerto 31586 correctamente (en mi caso, es posible para diferente) al puerto 80 de los puentes. Entonces, ¿cómo los exponemos ahora en Internet? Usaremos lo que se llama la entrada. Similar a un servicio, Ingress instruye a Master Kubernetes cómo dirigir el tráfico, la principal diferencia es que Ingres es responsable de mapear el tráfico externo, basado en un conjunto de reglas que definimos. En su directorio K8S, cree un nuevo archivo, llamado wordpress-ngress.yml e ingrese el siguiente contenido (actualice el dominio): [Gist https://gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12bafui-wordpress-yml/]] Ahora, antes de que pueda visitar el dominio para verificar el funcionamiento de WordPress, debemos solucionar dos problemas: en nuestra configuración DNS (con nuestro Registrador de dominio), debemos crear un registro, lo que indica la IP que Google lo asignó para ingresar . Ejecute $ Kubectl Describir WordPress y encontrar un campo, llamado dirección.
Debido a que hemos instalado WordPress a través del puerto hacia adelante anteriormente, WordPress probablemente querrá redirigirnos al puerto 8080, lo que no funcionará. Entonces, edite la implementación ($ kubectl editar implement WordPress) y agregue dos nuevas variables de entorno (en algún lugar alrededor de la línea 45 de nuestro WordPress.yml): wp_siteurl y wp_home, ambas deben configurarse en el dominio final (incluido http: //). Guarde y deje el archivo para actualizar la implementación y dar a Kubernetes durante unos segundos para implementar un nuevo conjunto de vainas con estas nuevas configuraciones. Nuestra pila ahora está configurada y deberíamos poder visitar el dominio en nuestro navegador para ver nuestra nueva WordPress Instalación en funcionamiento! Terminamos mucho, pero exploremos en el tablero de Google Cloud lo que acaba de suceder. Acceda a la página de equilibrio de carga y haga clic en el único saldo de carga allí para extender la vista. Hay muchas cosas allí:
Hay un front-end definido, que es una IP y un puerto en el que aceptamos el tráfico
Hay reglas definidas (lo que hemos hecho con nuestra entrada)

Hay un Backynd definido (lo que Google hizo por nosotros)
Le animo a que edite esta configuración de equilibrio de carga y haga clic poco para darle una impresión de cómo encajan las cosas: no explicaré en detalles aquí, porque este tutorial es bastante largo y la documentación oficial de Google puede ser buena. Fuente de aprendizaje posterior. Además, si desea mantener esta nueva IP que Google ha asignado a la entrada, visite la página de dirección IP y cambie el efímero a Static. Bonificación: Letsencrypt con Kube-Lego ahora, que nuestra pila está completamente abierta y se ejecuta, agregando una implementación que se ocupa de nuestros certificados SSL Fining y Registring solo requiere unos pocos pedidos adicionales. Usaremos kube-lego para ambas tareas, porque es un enfoque a gran escala y probado en la lucha por los certificados en los grupos de Kubernetes. Lo primero que necesitamos es un configMap. En Kubernetes, ConfigMaps se usa, como su nombre indica, para la configuración. La parte del “mapa” del nombre representa combinaciones de claves y sus valores. Como Kube-Lego predeterminado es predeterminado a los servidores de puesta en escena de LetsEnsencrypt, nuestro mapa de configuración debe incluir la URL del servidor de producción y nuestra dirección de correo electrónico. [GIST HTTPS:
//gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-lego-configmap-yml/] Guarde el archivo en el directorio k8s y ejecute $ kubectl create -f lego-configmap.yml (nota que la documentación oficial kub kub usa el agolio usa El nombre Kub-kube-lego para implementar entidades, pero parecía más claro usarlo en el espacio de nombres del sistema de kube donde todas las otras entidades del sistema) con la configuración en su lugar, es hora de implementar Kube-Lego: [GIST HTTPS : //gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-lego-deployment-yml/] Guarde el archivo en k8s y ejecute $ kubectl create -f lego-deployment.yml para verificar: $ kubectl get pods. System. System. System. Debería ver un puente llamado kube-lego-1702644611-9HNT0 (las dos últimas filas serán diferentes para usted). Ahora, en el último bit, debemos cambiar la entrada que creamos anteriormente para permitir que Kube-Lego sepa por qué queremos áreas certificadas. Ejecutar $ Kubectl Editing predeterminado. Esto abrirá su editor favorito con nuestra entrada original modificada original de Google (debe haber muchas anotaciones adicionales). Compare con la siguiente esencia: [Gist https://gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-wordpress-ingres-tls-yml/] Notará que faltan algunas partes, tan completas: dos nuevas annotaciones : kubernetes.io/ingress.class: GCE y kubernetes.io/tls-acme: “verdadero”
TLS KEY (que es una matriz) con hosts (también una matriz) y un nombre de secreto definido
Guarda el archivo y cierra.Debido a que nuestro puente Kube-Lego observa automáticamente nuestras entradas, no necesita hacer nada más, se hará cargo de las actualizaciones, solicitará el certificado necesario de LetsenCrypt y reconfigurará el saldo de carga.¡Listo, visite la URL que usó para configurar toda esta pila HTTPS antes y disfrute de las habilidades recién adquiridas!(Por cierto, un tweet en este artículo sería muy apreciado). Recibí muchas solicitudes para este artículo y estoy pensando en organizar una sesión de seminario web/en vivo en la que transmitiré este proceso en flujo.Dime si estabas interesado en participar en los comentarios a continuación.
Introducción del desarrollador de WordPress en Docker, Tercera parte: Kubernetes
Tags Introducción del desarrollador de WordPress en Docker Tercera parte: Kubernetes
homefinance blog