Despliegue microservicios en un cluster de Kubernetes

En una arquitectura de microservicios, cada microservicio realiza una tarea simple y se comunica con clientes u otros microservicios mediante el uso de mecanismos ligeros, como las solicitudes de API de REST. Puede codificar cada microservicio utilizando un lenguaje de programación que sea más adecuado para la tarea que realiza. Las aplicaciones basadas en microservicios son más fáciles de desplegar y mantener.

Arquitectura

En esta arquitectura de referencia, se muestran los microservicios de Python Flask y Redis desplegados como contenedores de Docker en un cluster de Kubernetes en Oracle Cloud Infrastructure. Los contenedores extraen imágenes de Docker de Oracle Cloud Infrastructure Registry.

El siguiente diagrama ilustra esta arquitectura de referencia.

Descripción de microservicios: oci.png a continuación
Descripción de la ilustración microservices-oci.png

microservices-oci-oracle.zip

La arquitectura tiene los siguientes componentes:

  • Región

    An Oracle Cloud Infrastructure region is a localized geographic area that contains one or more data centers, called availability domains. Las regiones son independientes de otras regiones y las grandes distancias pueden separarlas (entre países o incluso continentes).

  • Dominios de disponibilidad

    Los dominios de disponibilidad son centros de datos independientes e 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 alimentación o refrigeración, o la red de dominio de disponibilidad interna. Por lo tanto, es poco probable que un fallo en un dominio de disponibilidad afecte a los otros dominios de disponibilidad de la región.

  • Dominios de fallos

    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 alimentación y hardware independientes. Cuando distribuye recursos en varios dominios de errores, las aplicaciones pueden tolerar fallos del servidor físico, mantenimiento del sistema y fallos de alimentación dentro de un dominio de errores.

  • Red virtual en la nube (VCN) y subred

    A VCN is a customizable, software-defined network that you set up in an Oracle Cloud Infrastructure region. Al igual que las redes de centros de datos tradicionales, las VCN proporcionan un control total sobre su entorno de red. Una VCN puede tener varios bloques CIDR no solapados que puede cambiar después de crear la VCN. Puede segmentar una VCN en subredes, que se pueden acotar a una región o a un dominio de disponibilidad. Cada subred consta de un rango de direcciones contiguas que no se solapan con las otras subredes de VCN. Puede cambiar el tamaño de una subred después de la creación. Una subred puede ser pública o privada.

  • Container Engine para Kubernetes

    Oracle Cloud Infrastructure Container Engine for Kubernetes is a fully managed, scalable, and highly available service that you can use to deploy your containerized applications to the cloud. You specify the compute resources that your applications require, and Container Engine for Kubernetes provisions them on Oracle Cloud Infrastructure in an existing tenancy. Container Engine for Kubernetes utiliza Kubernetes para automatizar el despliegue, el ajuste y la gestión de aplicaciones en contenedores en clusters de hosts.

  • Registro

    Oracle Cloud Infrastructure Registry is an Oracle-managed registry that enables you to simplify your development-to-production workflow. El registro facilita el almacenamiento, el uso compartido y la gestión de artefactos de desarrollo, como imágenes de Docker. The highly available and scalable architecture of Oracle Cloud Infrastructure ensures that you can deploy and manage your applications reliably.

Recomendaciones

Los requisitos pueden ser diferentes de la arquitectura que se describe aquí. Utilice las siguientes recomendaciones como punto de partida.

  • VCN

    Al crear una VCN, determine el número de bloques CIDR necesarios y el tamaño de cada bloque según el número de recursos que planea asociar a subredes de la VCN. Utilice bloques CIDR que estén dentro del espacio de direcciones IP privadas estándar.

    Seleccione bloques CIDR que no se superpongan 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 de CIDR.

    Al diseñar las subredes, tenga en cuenta los requisitos de flujo de tráfico y seguridad. Conecte 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.

    Para simplificarlo, esta arquitectura utiliza una subred pública para alojar Container Engine for Kubernetes. También puede utilizar una subred privada. En ese caso, utilice un gateway de NAT para permitir el acceso a la red pública de Internet desde el cluster.

  • Container Engine para Kubernetes

    En esta arquitectura, los nodos de trabajador utilizan la unidad VM.Standard2.1 y se ejecutan en Oracle Linux. Se utilizan dos nodos de trabajador para alojar dos microservicios diferentes, pero puede crear hasta 1000 nodos en cada cluster.

  • Registro

    Utilizamos Oracle Cloud Infrastructure Registry como un registro privado de Docker para uso interno, enviando imágenes de Docker a y sacándolas del registro. También puede utilizarlo como un registro público de Docker, lo que permite a cualquier usuario con acceso a Internet y la URL correspondiente extraer imágenes de repositorios públicos en el registro.

Consideraciones

  • Escalabilidad

    Puede ampliar la aplicación actualizando el número de nodos de trabajador en el cluster de Kubernetes, según 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 servicio entre los nodos asignados a ese servicio.

  • Disponibilidad de la aplicación

    Los dominios de errores proporcionan la mejor resiliencia dentro de un único dominio de disponibilidad. También puede desplegar instancias o nodos que realizan las mismas tareas en varios dominios de disponibilidad. Este diseño elimina un único punto de fallo mediante la introducción de redundancia.

  • Capacidad de gestión

    Esta arquitectura utiliza dos microservicios. Uno es un microservicio de Flask de Python, una aplicación web simple que realiza operaciones de CRUD. El otro microservicio es una base de datos en memoria de Redis. El microservicio Python-Flask se comunica con el microservicio Redis para recuperar los datos.

  • Seguridad

    Utilice políticas que restrinjan quién puede acceder a qué recursos de Oracle Cloud Infrastructure tiene su compañía y cómo.

    Container Engine for Kubernetes is integrated with Oracle Cloud Infrastructure Identity and Access Management (IAM). IAM proporciona una autenticación sencilla con la funcionalidad de identidad nativa de Oracle Cloud Infrastructure.

Desplegar

El código necesario para desplegar un cluster de OKE está disponible en GitHub. Este código no despliega los microservicios.

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 su computadora, personalizar el código y desplegar la arquitectura mediante la CLI de Terraform.

  • Desplegar mediante Oracle Cloud Infrastructure Resource Manager:
    1. Haga clic en Despliegue en Oracle Cloud.

      Si aún no ha iniciado sesión, introduzca las credenciales de arrendamiento y usuario.

    2. Revise y acepte las condiciones.
    3. Seleccione la región en la que desea desplegar la pila.
    4. Siga las indicaciones de la pantalla y las instrucciones para crear la pila.
    5. Después de crear la pila, haga clic en Acciones de Terraform y seleccione Plan.
    6. Espere a que termine 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.

    7. 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.
  • Realice el despliegue mediante la CLI de Terraform:
    1. Vaya a GitHub.
    2. Descargue o clone el código en su equipo local.
    3. Siga las instrucciones de README.md.

Log de cambios

Este log muestra cambios importantes: