Tenga en cuenta los siguientes requisitos adicionales al implementar la aplicación Ops Manager en varios clústeres de Kubernetes:
Descripción general de redes
La siguiente tabla describe:
Orígenes de conexiones a las instancias de la aplicación de Ops Manager
Las tareas que realiza la aplicación Ops Manager después de conectarse
La URL de Ops Manager que utiliza cada tipo de conexión y cómo configurarla.
Origen de la conexión | Propósito o acción | URL al Administrador de operaciones |
|---|---|---|
El operador de Kubernetes | Configura la instancia de Ops Manager y habilita la supervisión una vez que la base de datos de la aplicación esté en estado en ejecución. | A través de un Ops Manager por defecto FQDN en el formato: |
El operador de Kubernetes | Configura un recurso | A través del ConfigMap del proyecto, configurado cuando creas un proyecto |
Agente de MongoDB en los Pods de la Base de Datos de la Aplicación | Recibir la configuración de automatización | Sin tener que conectar a una instancia de Ops Manager. El MongoDB Agent está funcionando en modo sin cabeza. |
Agente de supervisión en los pods de la base de datos de la aplicación | Envía datos de supervisión | A través de un FQDN de Ops Manager predeterminado en el formato: |
Agente de MongoDB en los pods de recursos | Recibe los procesos de configuración, backup y restauración de Automatización | A través del ConfigMap del proyecto, configurado cuando creas un proyecto |
Agente de monitoreo en los pods de recursos | Envía datos de supervisión | A través del ConfigMap del proyecto, configurado cuando creas un proyecto |
Usuario | Utiliza la Interfaz de Usuario o la API de Ops Manager | A través de un dominio público externo de la instancia de Ops Manager expuesta externamente, configurada con |
Malla de servicios
Agregue los nodos que alojan las instancias de la base de datos de la aplicación y las instancias de la aplicación de Ops Manager a la misma malla de servicio para permitir lo siguiente:
Conectividad de red entre componentes implementados.
Resolución DNS entre clústeres.
Para simplificar la configuración de red entre el operador de Kubernetes y las instancias de Ops Manager, recomendamos que añadas el clúster del operador, que es el clúster de Kubernetes donde instalas el operador de Kubernetes, a la misma malla de servicios, aunque no es un requisito estricto. Si incluye el clúster de operadores en la misma malla de servicios, podrá usarlo como host para la aplicación Ops Manager y las instancias de la base de datos de la aplicación.
Configure una malla de servicios para los siguientes clústeres de Kubernetes e inclúyalos en la configuración de la malla:
El "clúster de operadores" en el que se implementa el propio operador de Kubernetes.
Los “nodos Kubernetes clústeres” que alojarán las instancias de la aplicación Ops Manager.
Clústeres Kubernetes adicionales de nodos, o los mismos clústeres de nodos utilizados para Ops Manager, que alojarán las instancias de la base de datos de la aplicación.
Tener la misma malla de servicio configurada para todos los clústeres de Kubernetes garantiza que cada instancia de Ops Manager pueda establecer una conexión segura con cualquiera de las instancias de la base de datos de aplicaciones implementadas en varios clústeres de Kubernetes.
Después de implementar las instancias de la base de datos de la aplicación en los clústeres de Kubernetes miembros, el punto final de la API de cada instancia de Ops Manager que implemente en los clústeres de Kubernetes miembros debe poder conectarse directamente a cada una de las instancias de la base de datos de la aplicación. Esto permite al operador de Kubernetes completar las etapas necesarias para implementar las instancias de Ops Manager en los clústeres miembros, como la creación de usuarios administradores y la configuración de copias de seguridad.
Equilibrio de carga
En la mayoría de los casos, debe proporcionar un acceso externo a la aplicación Ops Manager para permitir el acceso de los usuarios a la interfaz de usuario de Ops Manager.
Para implementaciones de múltiples clústeres de la aplicación Ops Manager, cada clúster puede exponer sus pods que alojan la aplicación Ops Manager individualmente mediante un servicio de LoadBalancertipo.
Crear un servicio de LoadBalancer usando spec.externalConnectivity y redirige un dominio externo a la dirección IP externa de ese servicio. Incluso si configura más de una instancia de la aplicación Ops Manager, el servicio de Kubernetes envía el tráfico de manera rotativa a todos los Pods disponibles que alojan la aplicación Ops Manager.
Dado que el operador de Kubernetes no admite el equilibrio de carga del tráfico a todos los pods en todos los clústeres de Kubernetes, debe configurar el equilibrio de carga fuera de la configuración del operador de Kubernetes.
Los siguientes ejemplos y diagramas ilustran algunas de las muchas formas en las que se puede configurar el balanceo de carga en varios clústeres de Kubernetes.
Ejemplo de diagrama 1: Balanceador de carga externo
Configura un balanceador de carga de red externo (un proxy passthrough) para todos los clústeres de Kubernetes que alojan la aplicación Ops Manager y la base de datos de la aplicación. La aplicación Ops Manager es sin estado. El equilibrador de carga puede reenviar el tráfico al servicio LoadBalancer de cada clúster de forma rotativa, o a un clúster a la vez, si configuras el equilibrador de carga de tal manera que, mientras un clúster está activo, el otro clúster está pasivo. El siguiente diagrama ilustra este enfoque.
En este diagrama:
El operador de Kubernetes crea un servicio externo de tipo
LoadBalancer, denominado<om_resource_name>-svc-ext, con una dirección IP externa asignada, en cada clúster nodo. Puedes configurar este servicio globalmente para todos los clústeres nodo utilizandospec.externalConnectivity. O, si este servicio es específico para cada clúster nodo, puedes configurarlo usandospec.clusterSpecList.externalConnectivity.Cada servicio que el Operador de Kubernetes crea para la aplicación Ops Manager siempre contiene todos los Pods que alojan la aplicación Ops Manager del clúster actual.
Ejemplo de diagrama 2: Equilibrio de carga mediante una malla de servicios con un proxy
Utilice las capacidades de equilibrio de carga entre clústeres proporcionadas por una malla de servicios.
En cada clúster de Kubernetes, el Kubernetes Operator crea un servicio, llamado <om_resource_name>-svc, que puedes usar para distribuir el tráfico a todos los Pods disponibles que hospedan las instancias de la aplicación Ops Manager en todos los clústeres nodo.
Puedes implementar un componente proxy, como Nginx o HAProxy, en uno de los clústeres, exponerlo externamente a través de su FQDN público de Internet y configurar el proxy para redirigir todo el tráfico de red a través del pasante TCP al servicio llamado <om_resource_name>-svc.<namespace>.svc.cluster.local.
El siguiente diagrama ilustra este enfoque.
En este diagrama:
En cada clúster miembro, el operador de Kubernetes crea un servicio de tipo al
ClusterIPque se puede acceder<om_resource_name>-svc.<namespace>.svc.cluster.localmediante. Este servicio contiene en sus puntos finales todos los pods implementados en este clúster miembro.El tráfico entre clústeres de Kubernetes es gestionado por el service mesh. Cuando el Operador de Kubernetes crea servicios en cada clúster nodo para la Aplicación Ops Manager, el Operador de Kubernetes no asigna un sufijo de índice de clúster a los nombres de estos servicios. Por lo tanto, el service mesh puede realizar el equilibrio de carga de tráfico en todos los Pods que hospeden la aplicación Ops Manager en todos los clústeres.
En cada clúster nodo, el Operador de Kubernetes implementa un StatefulSet llamado
<om_resource_name>-<cluster-index>. Por ejemplo,om-0es el nombre del StatefulSet para el nodo clúster con el índice 0.Aunque cada clúster tiene implementado un servicio
<om_resource_name>-svcClusterIP, este no gestiona el tráfico del usuario. Cuando el usuario accede al servicio enMember Cluster 1, la malla de servicios gestiona el tráfico.Cada pod que hospeda la aplicación Ops Manager lleva el nombre de su StatefulSet. Por ejemplo,
om-1-2es el nombre del pod número 2 en el clúster con el índice 1.