Fuente de inventario de Ansible Kubernetes (K8s)

Fuente De Inventario De Ansible Kubernetes K8s



En esta publicación, aprendemos cómo usar el complemento Kubernetes en la herramienta Ansible. En Ansible, es difícil administrar una gran cantidad de contenedores. Pero utilizar Kubernetes en Ansible es útil al administrar los contenedores. En esta guía, aprenderemos qué es la fuente de inventario de Kubernetes y cómo funciona en Ansible.

Google lanzó el software de administración de fácil acceso llamado Kubernetes, también conocido como K8s, que se utiliza para administrar las configuraciones virtualizadas en un conjunto remoto de máquinas con funciones de instalación sin tiempo de inactividad, reversión automatizada y escalabilidad que proporciona al complemento de Kubernetes un extremadamente adaptable. arquitectura en Ansible. A través de la disponibilidad de API REST para la funcionalidad necesaria, el objetivo principal de Kubernetes es ocultar las complejidades asociadas con el control de una cantidad de contenedores.







La configuración de Kubernetes se basa en cliente-servidor. Sin embargo, de forma predeterminada, solo hay un servidor principal que sirve como host de control. En Kubernetes, también podemos usar controladores multiprincipales para la configuración de Kubernetes. En ocasiones, la fuente de inventario de K8 es necesaria para controlar los sistemas y configurar los servicios en el host remoto para controlar los módulos. Pero existen dificultades para obtener instrucciones específicas sobre cómo hacerlo. Como resultado, implementamos este tutorial sobre cómo crear un Playbook de Ansible que extraiga los pods en un dominio y produzca una fuente de inventario de Kubernetes.



Requisitos previos para usar el origen de inventario de Kubernetes en Ansible

Para usar la fuente de inventario de Kubernetes en Ansible, hay instrucciones o comandos del proceso de etapas a lo largo de esta guía. Asegúrate de tener la preparación necesaria si quieres avanzar en ella:



  • Para trabajar en un escenario de Ansible, primero configuramos la herramienta Ansible en el servidor y nos aseguramos de tener la versión 2.11.7 de Ansible para que podamos usar fácilmente el complemento de Kubernetes.
  • Para evaluar el complemento de Kubernetes, necesitamos un dispositivo de servidor remoto con un clúster de Kubernetes integrado.
  • El host remoto está actualmente configurado para ejecutar las instrucciones y los libros de jugadas de Ansible, así como un archivo de inventario creado. El nombre del dispositivo remoto de destino es K8s Master Node.
  • La versión de Python es 3.6 o superior, que debe instalarse en el dispositivo del controlador Ansible. También puede estar en el dispositivo host remoto de destino.
  • La versión del módulo openshift de Python es 0.6 o superior. También necesitamos un módulo pyYAML de la versión 3.11 o superior. Ambos módulos deben configurarse en el dispositivo servidor remoto, así como en el dispositivo controlador.

Ejemplo:





Este es el primer ejemplo en el que implementamos Kubernetes en Ansible. Para ello, utilizamos cualquier entorno de Ansible para implementar la fuente de inventario de Kubernetes. Los siguientes procesos enumerados se llevan a cabo en el siguiente escenario utilizando el complemento de inventario de Kubernetes:

  • Implementación del nuevo espacio de nombres en el clúster K8s en Ansible.
  • Creación de nginx pod utilizando el libro de jugadas de Ansible.
  • Creación de deployment de nginx en Ansible.

Para que los conceptos y la ejecución sean fáciles de entender, implementamos el ejemplo en una serie de pasos.



Paso 1: implementar el nuevo espacio de nombres en el clúster K8s en Ansible

En el primer paso, creamos el libro de jugadas para que podamos escribir el contenido en el formato '.yml' en Ansible. Para crear el libro de jugadas, el siguiente es el comando que usamos:

[ raíz @ maestro ansible ] # nano nginx_pod.yml

 

Ahora, el libro de jugadas 'pod.yml' se crea y se lanza en la nueva terminal de Ansible. Empezamos a escribir el guión. En el libro de jugadas, primero definimos la versión de la API que usamos en el módulo de Ansible, que es 'v1'. El espacio de nombres que definimos es 'ansible-namespace'. Luego, enumeramos los metadatos del espacio de nombres ansible. En los metadatos, usamos el software nginx y la etiqueta que contiene un nivel de interfaz de valor. En la especificación del libro de jugadas, enumeramos el nombre y la imagen que se almacena en el contenedor; ambos contienen el nginx en él.

Paso 2: cree el documento de manifiesto en Ansible

Ahora, creamos otro documento en el mismo directorio de Ansible que es el documento de implementación en formato “.yml”. Para crear el documento de manifiesto, use el siguiente comando en la terminal de Ansible:

[ raíz @ maestro ansible ] # nano nginx_deployment.yml

 

En el documento de manifiesto, primero definimos nuevamente la versión de la aplicación, que es 'app/v1'. Luego, decimos qué tipo de archivo es, si es un archivo de implementación. Luego, definimos el espacio de nombres que es ansible-namespace. Para construir la implementación, dos réplicas dentro del espacio de nombres ansible muestran el número del pod. Las imágenes nginx son 1.14.2 que se inician en el pod. El parámetro matchLabels proporciona las etiquetas para los pods y sus especificaciones en el parámetro spec. Si de alguna manera las etiquetas de los pods coinciden con las especificadas en la información de configuración, la implementación se realiza en el documento de manifiesto en Ansible.

Paso 3: Cree el Playbook para la implementación de Kubernetes en Ansible

Ahora, queremos crear otro libro de jugadas en Ansible. En este libro de jugadas, implementamos la funcionalidad de Kubernetes en él. Use el siguiente comando para crear el libro de jugadas:

[ raíz @ maestro ansible ] # nano kubernetes_principal.yml

 

El libro de jugadas se crea en el mismo directorio donde se almacenan el libro de jugadas y el documento de manifiesto anteriores en Ansible. En el libro de jugadas, primero definimos la funcionalidad del libro de jugadas que queremos implementar. Para construir la conexión, proporcionamos los hosts remotos a los que queremos apuntar. Aquí, apuntamos a 'todos' los hosts. A continuación, definimos la variable para verificar el intérprete de Python en Ansible usando la ruta donde se almacena. Ahora, definimos las tareas en el libro de jugadas. Primero, verificamos el estado del dispositivo minikube. A continuación, creamos un nuevo espacio de nombres de Kubernetes en el libro de jugadas. Luego, duplique nginx_pod.yml y nginx_deployment .yml en el dispositivo remoto.

A través de estos documentos yml, construimos la implementación del pod en el dispositivo remoto. Luego, verificamos si el pod de Kubernetes está presente o no en la ubicación especificada en el dispositivo remoto.

Después de la terminación del libro de jugadas, ahora creamos el archivo de inventario para que podamos hacer la conexión entre el controlador Ansible y el host remoto de destino.

Todo:
Hospedadores:
k8s_Nodo_maestro:
host_ansible: 192.168.3.229
usuario_ansible: ansible
ansible_contraseña: ********
conexión_ansible: ssh
puerto_ansible: 22

 

[ raíz @ maestro ansible ] # libro de jugadas ansible kubernates_main.yml

 

Aquí está el resultado deseado donde vemos que las tareas se colocaron con éxito en la máquina de destino:

Después de colocar la tarea en la máquina de destino, verificamos si el 'espacio de nombres ansible' está en el clúster de Kubernetes o no. Usamos el siguiente comando 'grep':

[ raíz @ maestro ansible ] # kubectl obtener espacio de nombres | grep ansible-espacio de nombres

 

Si desea verificar el pod creado en el espacio de nombres del clúster de Kubernetes, escriba el siguiente comando para verificar:

[ raíz @ maestro ansible ] # kubectl obtener pods --namespace ansible-namespace

 

Como puede ver en el resultado anterior, obtenemos los pods que se ejecutan en el dispositivo. Ahora comprobamos el deployment que hicimos en el cluster de Kubernetes. Utilice la siguiente declaración para verificar las implementaciones ya realizadas:

[ raíz @ maestro ansible ] # kubectl get deployments --namespace ansible-namespace

 

Conclusión

Aprendimos cuál es la fuente de inventario de Kubernetes en Ansible. También aprendimos a utilizar el inventario de Kubernetes en Ansible. Luego, implementamos un ejemplo para que aprendamos más claramente sobre el funcionamiento de la fuente de inventario de Kubernetes en Ansible.