Kubernetes модули
Тема дорожной карты · Ansible
Работа Ansible с Kubernetes обеспечивается collection kubernetes.core, предоставляющей модули — например, kubernetes.core.k8s — для применения, патчинга и удаления Kubernetes-манифестов непосредственно из playbook без вызова kubectl. Модуль k8s принимает YAML-определения ресурсов или шаблоны на основе Jinja2, обеспечивая параметризованные развёртывания: kubernetes.core.k8s: state=present definition={{ lookup('template', 'deployment.yml.j2') }} рендерит и применяет шаблонное развёртывание за один шаг. Ansible с Kubernetes устанавливается через ansible-galaxy collection install kubernetes.core, а collection выполняет аутентификацию с помощью kubeconfig по пути ~/.kube/config или через явный параметр kubeconfig, поддерживая работу с несколькими кластерами и пространствами имён в рамках одного playbook. Хотя специализированные инструменты вроде Helm и Kustomize лучше подходят для сложной упаковки приложений, интеграция Ansible с Kubernetes наиболее ценна для оркестрации многошаговых операций, охватывающих ресурсы кластера и внешние системы в единм автоматизированном рабочем процессе.
Как это работает
Kubernetes модули использует cloud-специфичные модули для создания cloud-ресурсов (VM, сети, S3-бакеты, DNS). Модули для AWS (amazon.aws), Yandex Cloud (yandex.cloud), Azure (azure.azcollection), GCP (google.cloud), Kubernetes (kubernetes.core). Ansible может быть и IaC, и инструментом конфигурации ("provision и configure"). Сообщество обычно предпочитает Terraform для provisioning + Ansible для конфигурации — разделение ответственности.
Когда применять
Ansible для provisioning — только на маленьких + динамичных нагрузках, где Terraform тяжёл. В большинстве случаев Terraform создаёт VM + выводит inventory, потом Ansible конфигурирует (типичный pipeline). add_host — для добавления свежесозданных хостов в inventory посреди play. Dynamic inventory-плагины — вместо ручных списков для облака.
Типичные ошибки
Ловушки Kubernetes модули: Ansible для provisioning без эквивалента state-файла (не видно, что существует — Terraform трекает); resource-drift между запусками (Ansible сводит, но не enforce "удалить то, чего быть не должно"); дыры в идемпотентности некоторых cloud-модулей (двойной запуск создаёт два ресурса из-за неверного lookup key).