Despliegue de una aplicación basada en microservicios en Kubernetes conectado a una instancia de Autonomous Database
Como desarrollador o administrador de aplicaciones, cuando diseña y gestiona aplicaciones nativas en la nube, necesita una infraestructura que sea fácil de aprovisionar y mantener, y le permita centrarse en sus objetivos de diseño y de negocio. OCI Kubernetes Engine (OKE) le permite desplegar y ejecutar aplicaciones basadas en microservicios escalables y de alta disponibilidad en la nube.
Arquitectura
En una arquitectura de microservicios, cada microservicio realiza una tarea sencilla y se comunica con clientes u otros microservicios mediante mecanismos sencillos como solicitudes de API de REST.
Esta arquitectura de referencia está pensada para una aplicación de comercio electrónico compuesta por varios microservicios políglotas desplegados como contenedores Docker en un cluster de Kubernetes. La persistencia de datos se logra mediante una base de datos de Oracle Autonomous Transaction Processing. Los archivos de imágenes y medios de la aplicación de comercio electrónico se almacenan en Oracle Cloud Infrastructure Object Storage.
En el diagrama siguiente se ilustra la arquitectura.
mushop-infraestructura-oracle.zip
La arquitectura tiene los siguientes componentes:
- Región
Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, que alojan dominios de disponibilidad. Las regiones son independientes entre sí y pueden separarse grandes distancias (entre países o incluso continentes).
- Dominio de disponibilidad
Los dominios de disponibilidad son centros de datos independientes dentro de una región. Los recursos físicos de cada dominio de disponibilidad están aislados de los recursos de los otros dominios de disponibilidad, lo que proporciona tolerancia a fallos. Los dominios de disponibilidad no comparten infraestructura, como la alimentación o la refrigeración, ni la red interna del dominio de disponibilidad. Por tanto, un fallo en un dominio de disponibilidad no debería afectar a los demás dominios de disponibilidad de la región.
- Dominios de errores
Un dominio de errores es una agrupación de hardware e infraestructura dentro de un dominio de disponibilidad. Cada dominio de disponibilidad tiene tres dominios de errores con energía y hardware independientes. OCI Kubernetes Engine gestiona la distribución de los nodos en el cluster en varios dominios de errores. Por lo tanto, la aplicación en contenedores está protegida contra fallos en el servidor físico, el mantenimiento del sistema y fallos de alimentación en un dominio de errores.
- Red y subredes virtuales en la nube (VCN)
Una VCN es una red personalizable definida por software que se configura en una región de Oracle Cloud Infrastructure. Al igual que las redes de los centros de datos tradicionales, las redes virtuales le proporcionan el control de su entorno de red. Una VCN puede tener varios bloques de CIDR no superpuestos que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, las cuales se pueden acotar a una región o a un dominio de disponibilidad. Cada subred está formada por un rango contiguo de direcciones que no se solapan con las demás subredes de la VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.
- Gateway de servicio
Un gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico desde la VCN al servicio Oracle recorre el tejido de red de Oracle y no atraviesa Internet.
- Gateway de traducción de direcciones de red (NAT)
Un gateway de NAT permite que los recursos privados de una VCN accedan a los hosts en Internet, sin exponer dichos recursos a las conexiones de Internet entrantes.
- Gateway de Internet
Un gateway de Internet permite el tráfico entre las subredes públicas de una VCN y la red pública de Internet.
- Autonomous Transaction Processing
Oracle Autonomous Transaction Processing es un servicio de base de datos de autogestión, autoseguridad y autorreparación optimizado para las cargas de trabajo de procesamiento de transacciones. No necesita configurar ni gestionar ningún hardware, ni instalar ningún software. Oracle Cloud Infrastructure gestiona la creación, la copia de seguridad, la aplicación de parches, el cambio de versión y el ajuste de la base de datos.
- Almacenamiento de objetos
OCI Object Storage proporciona acceso a grandes cantidades de datos estructurados y no estructurados de cualquier tipo de contenido, incluidas copias de seguridad de base de datos, datos analíticos y contenido enriquecido, como imágenes y vídeos. Puede almacenar datos de forma segura directamente desde Internet o desde la plataforma en la nube. Puede ampliar el almacenamiento sin experimentar ninguna degradación del rendimiento ni de la fiabilidad del servicio.
En esta arquitectura, los activos de medios de la aplicación se almacenan en Oracle Cloud Infrastructure Object Storage en un cubo de la clase de almacenamiento estándar.
- Kubernetes Engine
Oracle Cloud Infrastructure Kubernetes Engine (OCI Kubernetes Engine u OKE) es un servicio totalmente gestionado, escalable y de alta disponibilidad que puede utilizar para desplegar las aplicaciones en contenedores en la nube. Especifique los recursos informáticos que necesitan sus aplicaciones y Kubernetes Engine los aprovisionará en Oracle Cloud Infrastructure en un arrendamiento existente. OKE utiliza Kubernetes para automatizar el despliegue, la ampliación y la gestión de aplicaciones en contenedores en clusters de hosts.
En el siguiente diagrama se muestran las interacciones entre los microservicios en contenedores de esta arquitectura:
mushop-infraestructura-expand-oracle.zip
El servicio DNS enruta el tráfico desde la red pública de Internet a través de un firewall de aplicación web (WAF) al equilibrador de carga, que reenvía las solicitudes entrantes a un microservicio de entrada (Nginx). El microservicio de entrada envía tráfico a un microservicio de enrutador (Traefik). En función de la naturaleza de las solicitudes, el microservicio de enrutador las enruta a los microservicios adecuados de la aplicación. Además de interactuar con otros microservicios, muchos de ellos también interactúan con los servicios de Oracle Cloud Infrastructure: OCI Object Storage, OCI API Gateway, OCI Functions, OCI Email Delivery, OCI Streaming y Oracle Autonomous Database.
Recomendaciones
- VCN
Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque en función del número de recursos que planea asociar a las subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de direcciones IP privadas estándar.
Seleccione bloques de CIDR que no se solapen con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor en la nube) a la que desee configurar conexiones privadas.
Después de crear una VCN, puede cambiar, agregar y eliminar sus bloques CIDR.
Al diseñar las subredes, tenga en cuenta el flujo de tráfico y los requisitos de seguridad. Asocie todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.
Utilizar subredes regionales.
Note:
El código de Terraform para implantar esta arquitectura aprovisiona la base de datos de Oracle Autonomous Transaction Processing en la red de servicios de Oracle. Si prefiere exponer solo un punto final privado para la base de datos, puede ajustar el código de Terraform para asociar la base de datos a una subred privada, como se muestra en el diagrama de arquitectura. - OCI Kubernetes Engine
En esta arquitectura, los nodos de trabajador del cluster de Kubernetes utilizan la unidad VM.Standard2.1 y se ejecutan en Oracle Linux. Puede crear hasta 1000 nodos en un cluster.
Consideraciones
Al implantar esta arquitectura, tenga en cuenta los requisitos para los siguientes parámetros:
- Posibilidades de ampliación
Puede escalar horizontalmente la aplicación actualizando el número de nodos de trabajador en el cluster de Kubernetes, en función de la carga. Del mismo modo, puede reducir el número de nodos de trabajador en el cluster. Al crear un servicio en el cluster de Kubernetes, puede crear un equilibrador de carga para distribuir el tráfico de servicios entre los nodos asignados al servicio. Esta arquitectura utiliza un equilibrador de carga para gestionar las solicitudes entrantes.
- Disponibilidad de aplicación
Los dominios de errores ofrecen resiliencia en un único dominio de disponibilidad. También puede desplegar instancias o nodos que realicen las mismas tareas en varios dominios de disponibilidad. Este diseño elimina puntos únicos de fallo mediante la introducción de redundancia. En esta arquitectura, Oracle Cloud Infrastructure Kubernetes Engine es responsable de distribuir los nodos entre dominios de errores dentro de un dominio de disponibilidad y de gestionar la distribución de los microservicios entre los nodos disponibles dentro del cluster de Kubernetes.
- Capacidad de gestión
Todos los microservicios están en contenedores con Docker. Estas imágenes se almacenan en el servicio Oracle Cloud Infrastructure Registry. El despliegue se automatiza mediante Terraform, que también despliega otros servicios comunes, como gráficos de Grafana, Prometheus y Helm.
Puede utilizar otros servicios de Oracle Cloud Infrastructure, como OCI API Gateway, OCI Functions y OCI Email Delivery para gestionar las API de backend y activar las suscripciones a boletines de noticias o correos electrónicos relacionados con el producto.
- Seguridad
OCI Kubernetes Engine está integrado con Oracle Cloud Infrastructure Identity and Access Management (IAM), que proporciona una autenticación sencilla con la funcionalidad de identidad nativa. Utilice políticas de IAM para controlar quién puede acceder a sus recursos y las acciones que pueden realizar.
Considere el uso de Oracle Cloud Infrastructure Web Application Firewall (WAF) para proteger la aplicación contra el tráfico malicioso desde la red pública de Internet.
Puede utilizar el servicio Oracle Cloud Infrastructure Streaming para transmitir y registrar eventos de nivel de aplicación.
Para proteger los secretos de Kubernetes, puede almacenarlos en un almacén o cifrarlos mediante claves que mantenga en el servicio Oracle Cloud Infrastructure Vault. El cluster de Kubernetes puede acceder al almacén, las claves y los secretos de forma privada a través del gateway de servicio de la VCN, sin exponer las solicitudes de acceso a la red pública de Internet. Las políticas que defina en Oracle Cloud Infrastructure Identity and Access Management controlan el acceso al almacén. El servicio Oracle Cloud Infrastructure Audit permite supervisar y realizar un seguimiento del uso de los secretos y las claves protegidos por el almacén.
Despliegue
El código necesario para desplegar esta arquitectura de referencia está disponible en GitHub. Puede extraer el código en Oracle Cloud Infrastructure Resource Manager con un solo clic, crear la pila y desplegarla. También puede descargar el código de GitHub en la computadora, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.
- Realice el despliegue con Oracle Cloud Infrastructure Resource Manager:
- Haga clic en
Si aún no ha iniciado sesión, introduzca el arrendamiento y las credenciales de usuario.
- Revise y acepte las condiciones.
- Seleccione la región en la que desea desplegar la pila.
- Siga las indicaciones e instrucciones en pantalla para crear la pila.
- Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
- Espere a que se complete el trabajo y revise el plan.
Para realizar cambios, vuelva a la página Detalles de pila, haga clic en Editar pila y realice los cambios necesarios. A continuación, vuelva a ejecutar la acción Plan.
- Si no es necesario realizar más cambios, vuelva a la página Detalles de pila, haga clic en Acciones de Terraform y seleccione Aplicar.
- Haga clic en
- Realice el despliegue con la CLI de Terraform:
- Vaya a GitHub.
- Descargue o clone el código en su computadora local.
- Siga las instrucciones indicadas en
deploy/complete/README.md
.
Explorar más
Obtén más información sobre el despliegue de aplicaciones basadas en microservicios en contenedores en clusters de Kubernetes en la nube.
Log de Cambios
Este log muestra solo los cambios significativos:
21 de abril de 2025 |
|
Diciembre de 1, 2020 | Se han agregado pasos para desplegar la arquitectura mediante Oracle Cloud Infrastructure Resource Manager. |