Despliegue de un cluster de Kubernetes con gestión automática de DNS para varios entornos

Gestionar la estrategia de DNS en la nube para sus entornos internos y externos (desarrollo, prueba y producción, por ejemplo) puede resultar complicado y laborioso sin una solución automatizada. Lo ideal es que tanto los usuarios como los clientes puedan navegar a un dominio, y la solución de DNS debe dirigirla a la dirección IP del entorno correcto. Este escenario ideal es fácil de usar y puede evitar errores humanos.

Kubernetes ExternalDNS ofrece capacidades para automatizar una solución de DNS para facilitar a los usuarios la navegación al dominio que desean, incluidas funciones avanzadas como equilibrio de carga global, failover automático, gestión de tráfico basada en DNS y funciones de seguridad incorporadas como extensiones de seguridad del sistema de nombres de dominio (DNSSEC) para ayudar a proteger contra ataques de manipulación y falsificación.

Esta arquitectura de referencia utiliza un único despliegue de cluster de kubernetes con zonas de DNS de Oracle Cloud Infrastructure y Kubernetes ExternalDNS para configurar una solución de DNS diseñada para varios entornos.

Arquitectura

Esta arquitectura utiliza un cluster de OCI Kubernetes Engine desplegado en una zona de DNS de OCI para contener los "registros A" de los servicios expuestos mediante equilibradores de carga. En esta arquitectura, el cluster de OCI Kubernetes Engine (OKE) tiene tres nodos de trabajador y tres espacios de nombres diferentes para la segregación del despliegue. Utilice esta arquitectura para un despliegue de OKE de varios entornos que utilice un único cluster en lugar de varios.

El siguiente diagrama ilustra esta arquitectura de referencia.



multi-tenant-oke-dns-architecture.zip

Cada entorno (desarrollo, prueba y producción) tiene su propio juego de componentes de kubernetes, como espacios de nombres, pods y servicios. Kubernetes ExternalDNS permite la creación y gestión automáticas de registros DNS para servicios de kubernetes expuestos externamente. Esto facilita a los clientes externos el acceso a los servicios dentro del cluster. Los componentes de Kubernetes se enrutan a Kubernetes ExternalDNS, que, a continuación, crea "A records" que apuntan a cada equilibrador de carga de servicio en OCI.

El siguiente diagrama ilustra esta arquitectura de software.



kubernetes-externo-dns.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, denominados dominios de disponibilidad. Las regiones son independientes entre sí y puede haber grandes distancias que las separen (entre países e incluso continentes).

  • Dominios 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 lo tanto, un fallo en un dominio de disponibilidad no debería afectar a los otros 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 cuenta con tres dominios de errores con energía y hardware independientes. Al distribuir los recursos entre varios dominios de errores, las aplicaciones pueden tolerar fallos físicos del servidor, mantenimiento del sistema y fallos de energía en un dominio de errores.

  • Red y subredes virtuales en la nube (VCN)

    Una VCN es una red personalizable y definida por software que puede configurar 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.

  • Equilibrador de carga

    El servicio Oracle Cloud Infrastructure Load Balancing proporciona una distribución automatizada del tráfico desde un único punto de entrada a varios servidores en el backend.

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

  • OCI Kubernetes Engine

    Oracle Cloud Infrastructure Kubernetes Engine (Kubernetes Engine u OKE) es un servicio totalmente gestionado, escalable y disponible 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 provisionará 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.

  • DNS

    El servicio de sistema de nombres de dominio (DNS) de Oracle Cloud Infrastructure es una red anycast global de sistema de nombres de dominio (DNS) con grandes posibilidades de ampliación que ofrece rendimiento, resiliencia y posibilidades de ampliación de DNS para que los usuarios finales se conecten a la aplicación de los clientes lo más rápido posible desde cualquier lugar donde se encuentren.

  • Zona de DNS público/privado

    El servicio Oracle Cloud Infrastructure DNS permite gestionar zonas. Una zona es una parte del espacio de nombres DNS. Un registro de inicio de autoridad (SOA) define una zona. Una zona contiene todas las etiquetas que están por debajo el árbol, a menos que se especifique lo contrario.

Recomendaciones

Utilice las siguientes recomendaciones como punto de partida. Sus requisitos pueden diferir de la arquitectura descrita aquí.
  • Red virtual en la nube (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.

    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.

  • Ancho de banda de 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 que el servicio amplíe el ancho de banda automáticamente en función de los patrones de tráfico. Con cualquiera de los enfoques, puede cambiar la unidad en cualquier momento después de crear el equilibrador de carga.

Consideraciones

Al desplegar varios entornos dentro de un único cluster de OCI Kubernetes Engine, tenga en cuenta lo siguiente.

  • Seguridad

    Considere el uso de políticas de red de Kubernetes para separar la conectividad de los espacios de nombres y confiar en el control de acceso basado en roles para controlar el acceso a la gestión de los espacios de nombres.

Despliegue

Las instrucciones para configurar Kubernetes ExternalDNS para utilizar Oracle Cloud Infrastructure DNS están disponibles en "Configuración de ExternalDNS para utilizar Oracle Cloud Infrastructure DNS" en la documentación de Oracle Cloud Infrastructure.

Explorar más

Obtenga más información sobre el despliegue de un cluster de OCI Kubernetes Engine con gestión automática de DNS.

Revise estos recursos adicionales:

Confirmaciones

Autor:

  • Guido Alejandro Ferreyra

Log de Cambios

Este log muestra los cambios significativos: