Источник инвентаря Ansible Kubernetes (K8s)

Istocnik Inventara Ansible Kubernetes K8s



В этом посте мы узнаем, как использовать плагин Kubernetes в инструменте Ansible. В Ansible сложно управлять большим количеством контейнеров. Но использование Kubernetes в Ansible полезно при управлении контейнерами. В этом руководстве мы узнаем, что такое источник инвентаризации Kubernetes и как он работает в Ansible.

Google запустила легкодоступное программное обеспечение для управления под названием Kubernetes, также известное как K8s, которое используется для управления виртуализированными конфигурациями на удаленном наборе машин с функциями установки с нулевым временем простоя, автоматическим возвратом и масштабируемостью, что обеспечивает плагин Kubernetes чрезвычайно адаптируемым Архитектура в Ansible. Благодаря доступности REST API для необходимой функциональности основная цель Kubernetes — скрыть сложности, связанные с управлением рядом контейнеров.







Конфигурация Kubernetes основана на клиент-сервере. Однако по умолчанию есть только один главный сервер, который служит управляющим хостом. В Kubernetes мы также можем использовать мультиосновные контроллеры для настройки Kubernetes. Источник инвентаризации K8s иногда необходим для систем управления и настройки служб на удаленном хосте для управления модулями. Но есть трудности с получением конкретных инструкций о том, как это сделать. В результате мы реализуем это руководство о том, как создать Ansible Playbook, который извлекает модули в домене и создает источник инвентаризации Kubernetes.



Предпосылки использования источника инвентаризации Kubernetes в Ansible

Чтобы использовать источник инвентаризации Kubernetes в Ansible, в этом руководстве есть инструкции или команды поэтапного процесса. Убедитесь, что у вас есть необходимая подготовка, если вы хотите двигаться вперед в этом:



  • Для работы в сценарии Ansible мы сначала настраиваем инструмент Ansible на сервере и убеждаемся, что у вас установлена ​​версия Ansible 2.11.7, чтобы мы могли легко использовать подключаемый модуль Kubernetes.
  • Для оценки плагина Kubernetes нам понадобится удаленное серверное устройство со встроенным кластером Kubernetes.
  • Удаленный хост в настоящее время настроен для выполнения инструкций и плейбуков Ansible, а также созданного файла инвентаризации. Имя целевого удаленного устройства — K8s Master Node.
  • Версия Python 3.6 или выше должна быть установлена ​​на устройстве контроллера Ansible. Он также может находиться на целевом удаленном хост-устройстве.
  • Версия модуля openshift Python — 0.6 или выше. Также нам понадобится модуль pyYAML версии 3.11 или выше. Оба модуля должны быть установлены как на удаленном сервере, так и на контроллере.

Пример:





Вот самый первый пример, где мы реализуем Kubernetes в Ansible. Для этого мы используем любую среду Ansible для реализации источника инвентаризации Kubernetes. Перечисленные ниже процессы выполняются в следующем сценарии с использованием подключаемого модуля инвентаризации Kubernetes:

  • Реализация нового пространства имен в кластере K8s в Ansible.
  • Создание модуля nginx с помощью Ansible playbook.
  • Создание развертывания nginx в Ansible.

Чтобы сделать концепции и выполнение простыми для понимания, мы реализуем пример в несколько шагов.



Шаг 1. Реализуйте новое пространство имен в кластере K8s в Ansible

На первом этапе мы создаем playbook, чтобы мы могли писать содержимое в формате «.yml» в Ansible. Чтобы создать playbook, мы используем следующую команду:

[ корень @ Мастер Ансибл ] # нано nginx_pod.yml

Теперь плейбук «pod.yml» создан и запущен в новом терминале Ansible. Приступаем к написанию сценария. В playbook мы сначала определяем версию API, которую мы используем в модуле Ansible, — «v1». Пространство имен, которое мы определяем, называется «ansible-namespace». Затем мы перечисляем метаданные пространства имен ansible. В метаданных мы используем программное обеспечение nginx и метку, которая содержит в себе интерфейс уровня ценности. В спецификации playbook мы указываем имя и изображение, которое хранится в контейнере; оба содержат nginx.

Шаг 2: Создайте документ манифеста в Ansible

Теперь мы создаем еще один документ в том же каталоге Ansible, который является документом развертывания в формате «.yml». Чтобы создать документ манифеста, используйте следующую команду в терминале Ansible:

[ корень @ Мастер Ансибл ] # нано nginx_deployment.yml

В документе манифеста мы сначала снова определяем версию приложения «app/v1». Затем мы говорим, что это за файл, является ли он файлом развертывания. Затем мы определяем пространство имен, которое является ansible-namespace. Для сборки реализации две реплики внутри пространства имен ansible показывают номер пода. Образы nginx версии 1.14.2 запускаются в модуле. Параметр matchLabels предоставляет теги для модулей и их спецификации в параметре spec. Если каким-то образом теги в модулях совпадают с указанными в информации о конфигурации, реализация происходит в документе манифеста в Ansible.

Шаг 3: Создайте Playbook для реализации Kubernetes в Ansible

Теперь мы хотим создать еще один плейбук в Ansible. В этом плейбуке мы реализуем в нем функционал Kubernetes. Используйте следующую команду для создания playbook:

[ корень @ Мастер Ансибл ] # нано kubernetes_main.yml

Плейбук создается в том же каталоге, где предыдущий плейбук и документ манифеста хранятся в Ansible. В playbook мы сначала определяем функциональность playbook, которую мы хотим реализовать. Чтобы построить соединение, мы предоставляем удаленные хосты, на которые мы хотим ориентироваться. Здесь мы нацелены на «все» хосты. Далее мы определяем переменную для проверки интерпретатора Python в Ansible, используя путь, по которому она хранится. Теперь мы определяем задачи в playbook. Сначала мы проверяем состояние устройства minikube. Затем мы создаем новое пространство имен Kubernetes в playbook. Затем скопируйте файлы nginx_pod.yml и nginx_deployment.yml на удаленное устройство.

С помощью этих документов yml мы создаем реализацию модуля на удаленном устройстве. Затем мы проверяем, присутствует ли модуль Kubernetes в указанном месте на удаленном устройстве.

После завершения playbook мы теперь создаем файл инвентаризации, чтобы установить соединение между контроллером Ansible и целевым удаленным хостом.

Все:
хосты:
k8s_Master_Node:
доступный_хост: 192.168.3.229
ansible_user: доступный
доступный_пароль: ********
доступное_соединение: ssh
доступный_порт: 22

[ корень @ Мастер Ансибл ] # ansible-playbook kubernates_main.yml

Вот желаемый вывод, где мы видим, что задачи успешно размещены на целевой машине:

После размещения задачи на целевой машине проверяем, находится ли «ansible-namespace» в кластере Kubernetes или нет. Мы используем следующую команду «grep»:

[ корень @ Мастер Ансибл ] # kubectl получить пространство имен | grep доступное пространство имен

Если вы хотите проверить созданный pod в пространстве имен кластера Kubernetes, напишите для проверки следующую команду:

[ корень @ Мастер Ансибл ] # kubectl получить модули --namespace ansible-namespace

Как видно из предыдущего вывода, мы получаем модули, работающие на устройстве. Теперь проверяем развертывание, которое мы сделали в кластере Kubernetes. Используйте следующий оператор для проверки уже выполненных развертываний:

[ корень @ Мастер Ансибл ] # kubectl получить развертывания --namespace ansible-namespace

Заключение

Мы узнали, что такое источник ресурсов Kubernetes в Ansible. Мы также узнали, как использовать инвентарь Kubernetes в Ansible. Затем мы реализовали пример, чтобы лучше узнать о работе источника инвентаризации Kubernetes в Ansible.