Implementemos en Openshift

Esto esta bien


Me gustar铆a compartir mi historia sobre la migraci贸n de una aplicaci贸n a Openshift. Adem谩s, como resultado, comparar茅 algunas de las soluciones y herramientas m谩s populares para administrar su aplicaci贸n dentro de Openshift. Es la transcripci贸n de mi presentaci贸n en la reuni贸n # 3 de Kubernetes SPB .


Implementemos en Openshift


Que debemos hacer


Antes que nada, hablemos de nuestra aplicaci贸n. Es una soluci贸n empresarial lista para usar, admite diferentes bases de datos, servidores de aplicaciones e interfaces de integraci贸n con sistemas de terceros. Por lo general, nuestros clientes estaban instalando en servidores dedicados, sin embargo, enfrentamos el problema. Tuvimos que ajustar la aplicaci贸n dentro de Openshift.


Prerrequisitos


Implementar


La aplicaci贸n es el producto con una larga historia, debe funcionar de forma inmediata en entornos completamente diferentes. Como resultado, hay muchas p谩ginas en nuestras gu铆as de instalaci贸n. Sin embargo, el esquema de nivel superior es f谩cil, solo debe:


  • Aplicar esquema de base de datos.
  • Prepare la configuraci贸n del servidor de aplicaciones.
  • Instala tu licencia.
  • Inicializa la aplicaci贸n.

Implementar


Desafortunadamente, el mundo es cruel, hab铆a algunos requisitos previos importantes.


  • Podr铆amos construir la aplicaci贸n solo en un esclavo especial de Jenkins, debido a restricciones de seguridad
  • No hubo acceso desde la instalaci贸n Openshift del cliente al registro de docker de desarrolladores privados.
  • No pudimos reutilizar las im谩genes acopladas existentes, porque fueron creadas solo para desarrollar y probar necesidades.
  • Hab铆a libros de jugadas ansibles para el despliegue de aplicaciones en m谩quinas virtuales.

Demostraci贸n de contenedor de Ansible


Contenedor Ansible


Ansible Container es un proyecto de c贸digo abierto que tiene como objetivo permitir la automatizaci贸n de todo el proceso de construcci贸n, implementaci贸n y administraci贸n de contenedores. Lo mejor de todo es que utiliza el mismo lenguaje de automatizaci贸n Ansible simple, potente y sin agentes que ya est谩 utilizando, lo que garantiza que pueda automatizar todo el ciclo de vida de la aplicaci贸n.

Ya hab铆amos escrito algunos roles de Ansible para instalar la aplicaci贸n en m谩quinas virtuales, por lo que los reutilizamos con ansible-container . Ansible container es un conjunto de herramientas para construir contenedores. No estoy seguro de que sea realmente un buen conjunto de herramientas, sin embargo, permite:


  • Cree contenedores de la misma manera que implementamos nuestros servidores.
  • Deje de encadenar juntos los comandos de shell en Dockerfiles.

No hubo ning煤n problema importante con ansible-container porque Openshift creando guidlines de im谩genes es incre铆ble. Sin embargo, me gustar铆a notar:


  • Modificamos nuestros roles ansibles, porque Docker + systemd = pain .
  • No hay posibilidad de usar chroot, sudo dentro de Openshift por defecto, debido a la seguridad. Solo lea CVE-2019-5736 .
  • Por razones de seguridad, Openshift por defecto tambi茅n genera UID aleatorio para cada contenedor, en otras palabras, openshift ignora la opci贸n USER de un Dockerfile.

El punto principal es que ansible-container nos ayud贸 a crear una demostraci贸n muy r谩pido, debido a la reutilizaci贸n.


Demo de contenedores m煤ltiples


Contenedores m煤ltiples


El primer contenedor de demostraci贸n se cre贸 a trav茅s de ansible-container. Fue lo suficientemente bueno para la demostraci贸n, sin embargo, decidimos no usarlo. Dividimos el contenedor monol铆tico en diferentes:


  1. Usamos el contenedor original Openshift PostgreSQL sin ninguna modificaci贸n.
  2. Construimos la aplicaci贸n contenedor sin estado.

Contenedores m煤ltiples


Sin embargo, 驴no estaba claro inicializar la base de datos? Encontramos un gran art铆culo sobre la vida de los PODs dentro de los kubernetes. Entonces, decidimos usar el contenedor init para la inicializaci贸n de la base de datos.


Inicializa la aplicaci贸n


Contenedores m煤ltiples


Como mencion茅 antes, la aplicaci贸n deber铆a funcionar de manera predeterminada en entornos completamente diferentes, admitir diferentes servidores de aplicaciones / bases de datos e interfaces de integraci贸n con sistemas de terceros.


Hay muchas formas de inicializar la aplicaci贸n:


  1. Pase la configuraci贸n a trav茅s de variables de entorno. Esto significa agregar toda nuestra documentaci贸n / conocimiento sobre c贸mo inicializar la aplicaci贸n para cada caso de uso en cada contenedor. No suena bien
  2. Use el gancho de inicio, esto es aproximadamente lo mismo que el primero.
  3. Inicializar durante la provisi贸n a Openshift.
  4. Utilice un contenedor externo con configuraci贸n individual para cada caso de uso.

Elegimos el 煤ltimo, creamos un controlador de replicaci贸n adicional para inicializar la aplicaci贸n. Enserio?


Contenedores m煤ltiples


Leemos la documentaci贸n nuevamente.


Una vaina (como en una vaina de ballenas o vaina de guisantes) es un grupo de uno o m谩s contenedores (como los contenedores Docker), con almacenamiento / red compartidos y una especificaci贸n sobre c贸mo ejecutar los contenedores.

POD es un grupo de contenedores. Como resultado, decidimos ejecutar 3 contenedores en una aplicaci贸n POD


  1. Contenedor de inicializaci贸n para una inicializaci贸n de PostgreSQL.
  2. El contenedor de la aplicaci贸n.
  3. Contenedor de inicializaci贸n de aplicaciones.

Este enfoque permite almacenar nuestra configuraci贸n como un c贸digo, hay dos resultados interesantes: la configuraci贸n de la aplicaci贸n es comprobable y reproducible.


Herramientas


Ya existen muchas cosas para administrar OpenShift.



Durante la migraci贸n, prob茅 algunos de ellos. Me gustar铆a compartir mis resultados.


Plantillas OpenShift


Plantillas OpenShift


Plantillas OpenShift


Pros:


  • Nativa Tiene una documentaci贸n asombrosa.

Contras:


  • Sin embargo, otras plantillas de YAML.
  • Registro horrible archivo YAML.
  • Te interesan las dependencias de servicios.

Guiones y plantilla


Guiones personalizados


Pros:


  • Scripting

Contras:


  • Kludges

Proveedor de Terraform k8s


Proveedor de Terraform k8s


Proveedor de Terraform k8s


Pros:


  • No te preocupes por crear orden.
  • Reutilice el c贸digo como m贸dulos.
  • Puede agregar l贸gica de inicializaci贸n.

Contras:


  • No es compatible con OpenShift, solo k8s.
  • A veces anticuado.
  • Otra herramienta m谩s.

Contenedor Ansible


Contenedor Ansible


Contenedor Ansible


Pros:


  • Hacer CM, no bash
  • Reutilice los roles existentes. rol = imagen.
  • Un conjunto de herramientas para todo.

Contras:


  • Enormes im谩genes, debido a una sola capa.
  • Parece abandonada y desactualizada.

Ansible contenedor fue reemplazado por Ansible bender .


Ansible k8s module


Ansible k8s module


M贸dulo Ansible + k8s


Pros:


  • Libro de jugadas 煤nico para todos.
  • Reutilice el c贸digo como roles.
  • Puede agregar l贸gica de inicializaci贸n.

Contras:


  • No hay soporte de proxy.
  • Te importa eliminar. Si desea eliminar algo, debe declararlo.
  • Te importa crear orden. Debe implementar la aplicaci贸n antes de la inicializaci贸n.

Paquete de libro de jugadas ansible


Paquete de libro de jugadas ansible


Un Ansible Playbook Bundle (APB) es una definici贸n de aplicaci贸n ligera (metacontenedor). Se utilizan para definir e implementar grupos complejos de aplicaciones, configuraciones de implementaci贸n, implementaciones y servicios en un cl煤ster de OpenShift Origin que ejecuta Ansible Service Broker. Los APB ofrecen m谩s potencia y configuraci贸n simple al aprovechar el poder de Ansible. Los APB tienen las siguientes caracter铆sticas:

Paquete de libro de jugadas ansible


La idea principal es empacar todo lo necesario en un contenedor y ejecutar el contenedor dentro de Openshift. Paquete de libro de jugadas ansible


Pros:


  • Agrupa todo.
  • Probable y reproducible.
  • Integraci贸n del cat谩logo de servicios.

Contras:


  • Necesitas permisos de administrador.
  • La documentaci贸n a veces est谩 desactualizada.

Resultado


Resultado


Por un lado, no quiero ser la autoridad final, pero por otro lado, me gustar铆a compartir mi punto de vista. No existe una bala de plata.



PS


Source: https://habr.com/ru/post/441906/


All Articles