Infraestructura
Cuando alojas tu aplicación o base de datos con Kinsta, tus proyectos se ejecutan en la infraestructura de primer nivel de Google Cloud Platform. En esta guía, nos sumergiremos un poco en los detalles de nuestra infraestructura de Alojamiento de Aplicaciones y Alojamiento de Bases de Datos.
Despliegue
Repositorio Git
El código de tu aplicación se almacena en un repositorio Git. Puedes elegir entre cualquiera (o todos) de los siguientes:
MyKinsta Añadir/Desplegar Aplicación
En MyKinsta, cuando añades una aplicación, se conecta al repositorio de Git para recuperar la aplicación.
Bot MyKinsta
Con el despliegue automático en la configuración de tu aplicación, si realizas un cambio o una fusión en tu repositorio, el bot MyKinsta lo detecta, extrae la aplicación de tu proveedor de servicios Git y despliega la versión actualizada de la aplicación.
Google Cloud Build
MyKinsta envía la aplicación a Google Cloud Build para construir una imagen de la aplicación a partir del código. Sabe qué aplicaciones o módulos instalar para la aplicación a partir de la información de los buildpacks o del Dockerfile. La salida es una imagen que se puede convertir en un contenedor.
Registro de Artefactos de Google
Almacena las imágenes de contenedor que están listas para desplegarse. Cada aplicación tiene una única imagen que puede utilizarse siempre que sea necesario desplegarla.
Clúster Kubernetes
La imagen del registro de artefactos se envía al clúster, que es una máquina virtual (VM) donde pueden ejecutarse varios contenedores. Los clústeres se ajustan para garantizar que la solicitud del registro de artefactos encuentra el contenedor correcto, los contenedores se ejecutan y tienen los recursos adecuados. Si hay algún problema con un contenedor, la aplicación se redistribuye a otro contenedor. Utilizamos cri-o v1.23.x en nuestra infraestructura; sin embargo, esta versión no es estática y se puede actualizar a medida que actualizamos diferentes componentes del stack.
Nuestra infraestructura Kubernetes soporta una configuración multi-tenant, donde cada aplicación se ejecuta en su propio entorno de contenedores. El aislamiento de la red y la virtualización multicapa garantizan la seguridad y evitan el acceso no autorizado entre aplicaciones. Este diseño te proporciona una plataforma de alojamiento fiable y segura, lo que te permite centrarte en tu negocio principal mientras nosotros nos encargamos de la infraestructura subyacente. Desplegamos al menos un clúster por región, con la posibilidad de crear clústeres adicionales en función del número de aplicaciones de cada región. Este sistema garantiza una asignación de recursos y una escalabilidad óptimas para satisfacer las crecientes necesidades de nuestros clientes.
Solicitudes
Cloudflare
Cuando un visitante accede al sitio web de una aplicación, primero accede a Cloudflare, que sabe qué clúster aloja el sitio web. A continuación, envía la solicitud de acceso al clúster correcto.
Actualmente, para el alojamiento de aplicaciones y bases de datos, Cloudflare incluye las reglas predeterminadas del cortafuegos, la protección DDoS predeterminada y otros valores predeterminados.
Equilibrio de Carga en la Nube
Cada clúster tiene un equilibrador de carga que recibe la solicitud de acceso de Cloudflare y envía aleatoriamente un nodo VM worker.
Ingress
El nodo VM worker recibe la solicitud en el sistema Ingress, que sabe qué contenedor es responsable del nombre de alojamiento solicitado. El sistema Ingress envía la solicitud al contenedor correcto, y si el contenedor tiene una base de datos adjunta, se comunica con la base de datos y envía una respuesta por la misma ruta.
Máquinas virtuales (VM)
Una máquina virtual (VM) puede contener varios contenedores y varias bases de datos.
Contenedores
Cada contenedor o aplicación puede tener varias copias en la VM. En este caso, el sistema Ingress lo sabe y envía aleatoriamente a través de una de las copias del mismo contenedor.
Almacenamiento Persistente
Puedes añadir almacenamiento persistente a un proceso web o a procesos en segundo plano. Esto añade un volumen de almacenamiento que se adjunta a la VM (máquina virtual) de tu aplicación y conserva los datos incluso si la aplicación se reinicia o se vuelve a desplegar.