Optimice la gestión de las aplicaciones en contenedores mediante instancias de contenedor OCI

La ejecución de aplicaciones en contenedores puede requerir una sobrecarga considerable, incluida la creación de instancias de máquinas virtuales, la instalación de componentes para ejecutar imágenes de contenedor, y todas las dependencias para soportarlas, incluidas las actualizaciones de software y del sistema operativo, y la supervisión de las aplicaciones mientras se ejecutan para garantizar que se ejecutan de forma óptima, están disponibles y no se han visto comprometidas.

Las instancias de contenedor son un servicio informático de Oracle Cloud Infrastructure (OCI) totalmente gestionado que permite a los clientes ejecutar aplicaciones en contenedores sin gestionar servidores. Esto proporciona una experiencia sin servidor que permite a los clientes centrarse en agregar valor a sus aplicaciones en lugar de desplegar y gestionar la infraestructura.

Como alternativa, para ejecutar una aplicación en contenedores sin instancias de contenedor, los clientes deben instanciar una máquina virtual e instalar todos los componentes para ejecutar una imagen de contenedor. Esto incluye el tiempo de ejecución del contenedor, como Docker o Podman, y todas las dependencias para soportarlo. Además, los clientes deben proteger la máquina virtual instalando los parches de seguridad más recientes y aplicando la configuración de seguridad correcta. A medida que se introducen nuevas actualizaciones de software y sistemas operativos, las actualizaciones y los parches deben aplicarse de forma coherente. Cuando se ejecuta la aplicación, es necesario realizar el control para asegurarse de que la aplicación se ejecuta de forma óptima, disponible y que no se ha visto comprometida.

Con las instancias de contenedor, los clientes solo tienen que crear las imágenes de contenedor de la aplicación y almacenarlas en un registro de contenedor. La aplicación en contenedores se puede desplegar mediante la instancia de contenedor con comandos de la CLI o un asistente de GUI guiado en la consola de OCI con los siguientes pasos.

  • Definir parámetros de instancia de contenedor: el cliente define la región de OCI para ejecutar la instancia de contenedor y, opcionalmente, el dominio de disponibilidad y el dominio de errores. A continuación, el cliente selecciona la unidad de computación de la instancia de contenedor. Para cada instancia, puede asignar hasta la CPU y la memoria de la unidad de computación seleccionada. Por ejemplo, si ha seleccionado una unidad AMD E3/E4, puede tener 64 OCPU (128 vCPU) y 1024 GB de memoria en una instancia de contenedor. A continuación, debe agregar la configuración de red, como si la instancia de contenedor necesita una dirección IP pública y la subred para la instancia de contenedor junto con configuraciones de red avanzadas opcionales. En este paso, también tiene la opción de especificar un registro DNS privado y un nombre de host, que generaría un nombre de dominio completo para la instancia de contenedor. También hay una opción avanzada opcional para definir la política de reinicio del contenedor.
  • Especifique la configuración de inicio para la aplicación: en este paso, se especifica la ubicación de la imagen de contenedor que se va a ejecutar, junto con las variables de entorno necesarias para la imagen de contenedor. La imagen puede estar en Oracle Cloud Infrastructure Registry o en cualquier registro compatible con Open Container Initiative público o privado en el que la instancia de contenedor tenga conectividad IP. Para los registros privados, debe proporcionar credenciales para acceder a la imagen de contenedor.
  • Revisar y crear: el último paso es revisar todas las configuraciones y, si todo es preciso, puede continuar con la creación y se iniciará una instancia de contenedor en segundos.

El cargo a los clientes solo se aplica a los recursos de memoria y CPU asignados a sus instancias al mismo ritmo que el de Oracle Cloud Infrastructure Compute habitual. Con una experiencia sencilla, operaciones perfectas y una carga adicional para la experiencia sin servidor, las instancias de contenedor ofrecen la mejor opción para ejecutar contenedores en la nube. Los clientes también pueden integrar instancias de contenedor con otros servicios de OCI, como el servicio MySQL y Oracle Autonomous Database, mediante mecanismos de conexión de base de datos estándar, lo que facilita el aprovechamiento de otros servicios de OCI para aplicaciones en contenedores.

Arquitectura

Esta arquitectura despliega una aplicación WordPress en contenedores con una base de datos MySQL integrada mediante instancias de contenedor. La instancia de contenedor se desplegará en una subred pública con una dirección IP pública accesible desde Internet.

Las instancias de contenedor están diseñadas para aplicaciones independientes que no requieren orquestación de contenedores. Entre ellos se incluyen API, aplicaciones web, trabajos de integración y despliegue continuos, tareas de automatización, procesamiento de datos y medios, entornos de desarrollo y prueba, etc. Para las aplicaciones en contenedores que requieren orquestación, OCI proporciona Oracle Container Engine for Kubernetes (OKE), un servicio de Kubernetes gestionado con una opción sin servidor con nodos virtuales.

Cada instancia de contenedor puede ejecutar varios contenedores. Todos los contenedores de una instancia de contenedor comparten el mismo ciclo de vida, recursos, red y almacenamiento. Los contenedores de una instancia de contenedor tienen el mismo concepto que un pod en Kubernetes con el contenedor de aplicación principal y los contenedores de sidecar de soporte. Los contenedores de sidecar están allí para mejorar o ampliar las funcionalidades del contenedor de aplicación principal. Un ejemplo es una instancia de contenedor con la aplicación web principal y un contenedor sidecar que exporta los logs de la aplicación web a un servidor de registro.

Nota:

La ejecución de un contenedor de base de datos junto con un contenedor de aplicaciones solo es adecuada para desarrollo y pruebas. Considerar el uso de Oracle MySQL Database Service para despliegues de producción.

Desplegaremos WordPress con una base de datos integrada con instancias de contenedor en esta arquitectura de referencia. El siguiente video pasa por el proceso.

El siguiente diagrama ilustra esta arquitectura de referencia.



oci-container-instance-wordpress-oracle.zip

La arquitectura tiene los siguientes componentes:

  • Arrendamiento

    Un arrendamiento es una partición segura y aislada que Oracle configura en Oracle Cloud cuando se registra en Oracle Cloud Infrastructure. Puede crear, organizar y administrar sus recursos en Oracle Cloud en su arrendamiento. Un arrendamiento es sinónimo de una compañía u organización. Normalmente, una compañía tendrá un arrendamiento único y reflejará su estructura organizativa dentro de ese arrendamiento. Un único arrendamiento suele estar asociado a una única suscripción, y una única suscripción suele tener un solo arrendamiento.

  • Región

    Una región de Oracle Cloud Infrastructure es un área geográfica localizada que contiene uno o más centros de datos, denominados dominios de disponibilidad. Las regiones son independientes de otras regiones, y grandes distancias pueden separarlos (entre países o incluso continentes).

  • Compartimento

    Los compartimentos son particiones lógicas entre regiones dentro de un arrendamiento de Oracle Cloud Infrastructure. Utilice compartimentos para organizar los recursos en Oracle Cloud, controlar el acceso a los recursos y definir cuotas de uso. Para controlar el acceso a los recursos de un compartimento determinado, debe definir políticas que especifiquen quién puede acceder a los recursos y qué acciones pueden realizar.

  • 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 tal como suministro eléctrico o sistema de refrigeración o la red del dominio de disponibilidad interno. Por tanto, es poco probable que un fallo en un dominio de disponibilidad afecte a los otros dominios de disponibilidad de la región.

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

  • Red virtual en la nube (VCN) y subred

    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 centros de datos tradicionales, las VCN le ofrecen un control total sobre su entorno de red. Una VCN puede tener varios bloques CIDR no superpuestos 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 contiguo de direcciones que no se solapan con las otras 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.

  • Lista de seguridad

    Para cada subred, puede crear reglas de seguridad que especifiquen el origen, el destino y el tipo de tráfico que se debe permitir dentro y fuera de la subred.

  • 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 servicio

    El gateway de servicios proporciona acceso desde una VCN a otros servicios, como Oracle Cloud Infrastructure Object Storage. El tráfico de la VCN al servicio de Oracle recorre el tejido de red de Oracle y no usa nunca Internet.

  • Registro de contenedor

    Registro gestionado por Oracle que permite simplificar el flujo de trabajo de desarrollo a producción.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida. Sus requisitos pueden ser diferentes de la arquitectura descrita aquí.
  • 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 en la VCN. Utilice bloques CIDR que estén dentro del espacio de dirección IP privada estándar.

    Seleccione bloques CIDR que no se solapen con ninguna otra red (en Oracle Cloud Infrastructure, su centro de datos local u otro proveedor en la nube) en la que desea 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 los requisitos de seguridad y flujo de tráfico. Conecte todos los recursos de un nivel o rol específico a la misma subred, que puede servir como límite de seguridad.

  • Seguridad

    Utilice Oracle Cloud Guard para controlar y mantener de forma proactiva la seguridad de los recursos en Oracle Cloud Infrastructure. Cloud Guard utiliza recetas de detector que puede definir para examinar los recursos en busca de debilidades de seguridad y supervisar a los operadores y usuarios en busca de actividades de riesgo. Cuando se detecta una configuración incorrecta o una actividad insegura, Cloud Guard recomienda acciones correctivas y ayuda a realizar esas acciones en función de las recetas de responsable de respuesta que pueda definir.

    Para los recursos que requieren máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta definida por Oracle de políticas de seguridad que se basan en las mejores prácticas. Por ejemplo, no se debe poder acceder a los recursos de una zona de seguridad desde la red pública de Internet y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure valida las operaciones según las políticas de la receta de zona de seguridad y deniega operaciones que violan cualquiera de las políticas.

  • Cloud Guard

    Clone y personalice las recetas por defecto proporcionadas por Oracle para crear recetas de detector y responsable de respuesta personalizadas. Estas recetas permiten especificar qué tipo de violaciones de seguridad generan una advertencia y qué acciones se pueden realizar en ellas. Por ejemplo, puede que desee detectar bloques de Object Storage que tengan una visibilidad definida como pública.

    Aplique Cloud Guard en el nivel del arrendamiento para abarcar el ámbito más amplio y reducir la carga administrativa que supone el mantenimiento de varias configuraciones.

    También puede utilizar la función de lista gestionada para aplicar determinadas configuraciones a los detectores.

  • Zonas de seguridad

    Para los recursos que requieren máxima seguridad, Oracle recomienda utilizar zonas de seguridad. Una zona de seguridad es un compartimento asociado a una receta definida por Oracle de políticas de seguridad que se basan en las mejores prácticas. Por ejemplo, no se debe poder acceder a los recursos de una zona de seguridad desde la red pública de Internet y se deben cifrar mediante claves gestionadas por el cliente. Al crear y actualizar recursos en una zona de seguridad, Oracle Cloud Infrastructure valida las operaciones con las políticas de la receta de zona de seguridad y deniega operaciones que violan cualquiera de las políticas.

  • Grupos de seguridad de red (NSG)

    Puede usar los NSG para definir un juego de reglas de entrada y salida que se aplican a VNIC específicas. Recomendamos utilizar NSG en lugar de listas de seguridad, ya que los NSG le permiten separar la arquitectura de subred de la VCN de los requisitos de seguridad de la aplicación.

  • Ancho de banda del equilibrador de carga

    Al crear el equilibrador de carga, puede seleccionar una unidad predefinida que proporcione un ancho de banda fijo o especificar una unidad personalizada (flexible) en la que defina un rango de ancho de banda y permita al servicio escalar el ancho de banda automáticamente en función de los patrones de tráfico. Con cualquier enfoque, puede cambiar la unidad en cualquier momento después de crear el equilibrador de carga.

Reconocimientos

  • Autores: Rishikesh Palve, Chiping Hwang
  • Colaboradores: John Sulyok