Spec-Zone.ru › Ansible 2.11

community.kubernetes.k8s – Управление объектами Kubernetes (K8s)

Примечание

Этот плагин входит в состав коллекции community.kubernetes (версия 1.1.1).

Для его установки используйте: ansible-galaxy collection install community.kubernetes

Для использования в книге задач укажите: community.kubernetes.k8s

  • Обзор
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Обзор

  • Используйте OpenShift Python-клиент для выполнения операций CRUD над объектами K8s.
  • Передайте определение объекта из исходного файла или встройте его. См. примеры для чтения файлов и использования шаблонов Jinja или зашифрованных файлами vault.
  • Доступ ко всему спектру API K8s.
  • Используйте модуль community.kubernetes.k8s_info, чтобы получить список элементов об объекте типа kind.
  • Авторизуйтесь с помощью файла конфигурации, сертификатов, пароля или токена.
  • Поддерживает режим проверки.

Примечание

Этот модуль имеет соответствующий плагин действия.

Требования

Ниже перечислены требования, необходимые на хосте, на котором выполняется этот модуль.

  • python >= 2.7
  • openshift >= 0.6
  • PyYAML >= 3.11

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
api_key
строка
Токен, используемый для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_API_KEY.
api_version
строка
По умолчанию:
"v1"
Используется для указания версии API.
Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса.
Используется совместно с kind, name и namespace для идентификации конкретного объекта.
Если предоставлено определение ресурса, значение apiVersion из resource_definition переопределит этот параметр.

псевдонимы: api, version
append_hash
булево
    Варианты:
  • нет
  • да
Добавлять ли хеш к имени ресурса для обеспечения неизменяемости.
Применяется только к ресурсам ConfigMap и Secret.
Параметр будет проигнорирован для других типов ресурсов.
Для генерации хеша требуется полное определение объекта. Это означает, что удаление объекта, созданного с append_hash, будет работать только в том случае, если тот же объект передается со значением state=absent (или просто используйте state=absent с именем, содержащим сгенерированный хеш и append_hash=нет).
Требуется openshift >= 0.7.2
apply
булево
    Варианты:
  • нет
  • да
apply сравнивает желаемое определение ресурса с ранее предоставленным определением ресурса, игнорируя свойства, которые автоматически генерируются.
apply работает лучше с сервисами, чем 'force=yes'.
Требуется openshift >= 0.9.2
взаимоисключающее с merge_type
ca_cert
путь
Путь к сертификату CA, используемому для аутентификации с API. Необходимо предоставить полную цепочку сертификатов, чтобы избежать ошибок проверки сертификатов. Также может быть указан через переменную окружения K8S_AUTH_SSL_CA_CERT.

псевдонимы: ssl_ca_cert
client_cert
путь
Путь к сертификату, используемому для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_CERT_FILE.

псевдонимы: cert_file
client_key
путь
Путь к файлу ключа, используемому для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_KEY_FILE.

псевдонимы: key_file
context
строка
Имя контекста, найденного в файле конфигурации. Также может быть указан через переменную окружения K8S_AUTH_CONTEXT.
force
булево
    Варианты:
  • нет ←
  • да
Если установлено в yes, и state равно present, существующий объект будет заменён.
host
строка
Укажите URL для доступа к API. Также может быть указан через переменную окружения K8S_AUTH_HOST.
kind
строка
Используется для указания модели объекта.
Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса.
Используется совместно с api_version, name и namespace для идентификации конкретного объекта.
Если предоставлено определение ресурса, значение kind из resource_definition переопределит этот параметр.
kubeconfig
путь
Путь к существующему файлу конфигурации Kubernetes. Если не указано и другие параметры подключения не предоставлены, клиент openshift попытается загрузить файл конфигурации по умолчанию из ~/.kube/config.json. Также может быть указан через переменную окружения K8S_AUTH_KUBECONFIG.
merge_type
список / элементы=строка
    Варианты:
  • json
  • merge
  • strategic-merge
Используется для переопределения метода слияния по умолчанию на конкретный тип. По умолчанию обычно используется стратегическое слияние.
Например, определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния. Возможно, вам потребуется использовать merge если вы видите "формат стратегического слияния не поддерживается".
См. https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment
Требуется openshift >= 0.6.2
Если указано несколько merge_type, они будут использоваться в указанном порядке.
Если openshift >= 0.6.2, по умолчанию ['strategic-merge', 'merge'], что идеально для использования одних и тех же параметров для типов ресурсов, которые объединяют пользовательские ресурсы и встроенные ресурсы. Для openshift < 0.6.2 по умолчанию strategic-merge.
взаимоисключающее с apply
name
строка
Используется для указания имени объекта.
Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса.
Используется совместно с api_version, kind и namespace для идентификации конкретного объекта.
Если предоставлено определение ресурса, значение metadata.name из resource_definition переопределит этот параметр.
namespace
строка
Используется для указания пространства имён объекта.
Полезно при создании, удалении или поиске объекта без предоставления полного определения ресурса.
Используется совместно с api_version, kind и name для идентификации конкретного объекта.
Если предоставлено определение ресурса, значение metadata.namespace из resource_definition переопределит этот параметр.
password
строка
Укажите пароль для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_PASSWORD.
Пожалуйста, ознакомьтесь с описанием параметра username для обсуждения случаев применения этого параметра.
persist_config
булево
    Варианты:
  • нет
  • да
Сохранять ли токены обновления конфигурации kube. Также может быть указан через переменную окружения K8S_AUTH_PERSIST_CONFIG.
Когда контекст k8s использует учетные данные пользователя с токенами обновления (например, oidc или gke/gcloud auth), токен обновляется библиотекой k8s python, но по умолчанию не сохраняется. Поэтому старый токен обновления может истечь, и следующая аутентификация может завершиться неудачно. Установка этого флага в true укажет библиотеке k8s python сохранить новый токен обновления в файл конфигурации kube.
По умолчанию false.
Обратите внимание, что текущая версия библиотеки k8s python пока не поддерживает установку этого флага в True.
Исправление для этой библиотеки k8s python находится здесь: https://github.com/kubernetes-client/python-base/pull/169
proxy
строка
URL HTTP-прокси, который нужно использовать для подключения. Также может быть указан через переменную окружения K8S_AUTH_PROXY.
Обратите внимание, что этот модуль не подхватывает типичные параметры прокси из среды (например, HTTP_PROXY).
resource_definition
строка
Предоставьте валидное YAML-определение (в виде строки, списка или словаря) для объекта при создании или обновлении.
ПРИМЕЧАНИЕ: kind, api_version, name и namespace будут перезаписаны соответствующими значениями, найденными в предоставленном resource_definition.

псевдонимы: definition, inline
src
путь
Укажите путь к файлу, содержащему валидное YAML-определение объекта или объектов, которые нужно создать или обновить. Взаимоисключительно с resource_definition. ПРИМЕЧАНИЕ: kind, api_version, name и namespace будут перезаписаны соответствующими значениями, прочитанными из файла src.
Читает из локальной файловой системы. Для чтения из файловой системы контроллера Ansible, включая зашифрованные файлы, используйте плагин поиска файла или плагин поиска шаблонов, в сочетании с фильтром from_yaml, и передайте результат в resource_definition. См. примеры ниже.
Взаимоисключительно с template в случае модуля k8s.
state
строка
    Варианты:
  • absent
  • present ←
Определяет, должен ли быть создан, изменён или удалён объект. Если установлено в present, объект будет создан, если он ещё не существует. Если установлено в absent, существующий объект будет удалён. Если установлено в present, существующий объект будет изменён, если его атрибуты отличаются от указанных с помощью resource_definition или src.
шаблон
сырой
Предоставьте допустимый YAML-шаблон определения объекта при создании или обновлении.
Значение может быть предоставлено в виде строки или словаря.
Взаимоисключающее с src и resource_definition.
Файлы шаблонов должны присутствовать в файловой системе контроллера Ansible.
Дополнительные параметры могут быть указаны с помощью словаря.
Допустимые дополнительные параметры -
newline_sequence (строка): Укажите последовательность новой строки для использования в файлах шаблонов. Допустимые значения: "\n", "\r", "\r\n". Значение по умолчанию "\n".
block_start_string (строка): Строка, обозначающая начало блока. Значение по умолчанию "{%".
block_end_string (строка): Строка, обозначающая конец блока. Значение по умолчанию "%}".
variable_start_string (строка): Строка, обозначающая начало оператора вывода. Значение по умолчанию "{{".
variable_end_string (строка): Строка, обозначающая конец оператора вывода. Значение по умолчанию "}}".
trim_blocks (логическое): Определяет, когда новые строки должны быть удалены из блоков. При установке в yes первая новая строка после блока удаляется (блок, а не тег переменной!). Значение по умолчанию true.
lstrip_blocks (логическое): Определяет, когда начальные пробелы и табуляции должны быть удалены. При установке в yes начальные пробелы и табуляции удаляются с начала строки в блок. Эта функция требует Jinja 2.7 или новее. Значение по умолчанию false.
имя_пользователя
строка
Укажите имя пользователя для аутентификации с API. Также может быть указано через переменную окружения K8S_AUTH_USERNAME.
Обратите внимание, что это работает только с кластерами, настроенными для использования аутентификации HTTP Basic. Если ваш кластер использует другой вид аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует обратиться к модулю k8s_auth, поскольку он может сделать то, что вам нужно.
валидация
словарь
Как (если вообще) валидировать определение ресурса по отношению к схеме Kubernetes. Требуется модуль kubernetes-validate python и openshift >= 0.8.0
fail_on_error
булево
    Варианты:
  • нет
  • да
Требовать отказ при обнаружении ошибок валидации.
строго
булево
    Варианты:
  • нет
  • да ←
Требовать отказ при передаче неожиданных свойств
версия
строка
Версия Kubernetes для валидации. По умолчанию используется версия сервера Kubernetes
validate_certs
булево
    Варианты:
  • нет
  • да
Проверять ли сертификаты SSL API-сервера. Также может быть указано через переменную окружения K8S_AUTH_VERIFY_SSL.

псевдонимы: verify_ssl
ждать
булево
    Варианты:
  • нет ←
  • да
Ожидать, пока определенные типы ресурсов окажутся в желаемом состоянии.
По умолчанию модуль завершается после получения запроса Kubernetes.
Реализовано для state=present для Deployment, DaemonSet и Pod, и для state=absent для всех типов ресурсов.
Для типов ресурсов без реализации wait возвращается немедленно, если wait_condition не установлено.
wait_condition
словарь
Указывает пользовательское условие для ожидания статуса.
Игнорируется, если wait не установлено или установлено в False.
причина
строка
Значение поля reason в желаемом условии.
Например, если Deployment приостановлен, поле Progressing type будет иметь причину DeploymentPaused.
Возможные причины в условии специфичны для каждого типа ресурса в Kubernetes.
См. документацию API поля status для заданного ресурса, чтобы увидеть возможные значения.
статус
строка
    Варианты:
  • True ←
  • False
  • Unknown
Значение поля status в желаемом условии.
Например, если Deployment приостановлен, поле Progressing type будет иметь статус Unknown.
тип
строка
Тип условия для ожидания.
Например, для ресурса Pod будет установлено условие Ready (среди других).
Требуется, если вы указываете условие wait_condition.
Если оставлено пустым, поле wait_condition будет проигнорировано.
Возможные типы условий специфичны для каждого типа ресурса в Kubernetes.
См. документацию API поля status для заданного ресурса, чтобы увидеть возможные значения.
wait_sleep
целое
По умолчанию:
5
Количество секунд ожидания между проверками.
wait_timeout
целое
По умолчанию:
120
Время ожидания в секундах, пока ресурс не окажется в желаемом состоянии.
Игнорируется, если wait не установлено.

Примечания

Примечание

  • Если ваша библиотека OpenShift Python не версия 0.9.0 или новее, и вы пытаетесь удалить элемент из ассоциативного массива/словаря, например метку или аннотацию, вам необходимо явно установить значение удаляемого элемента в null. Простое удаление записи в словаре не удалит ее из OpenShift или Kubernetes.
  • Клиент OpenShift Python оборачивает клиент K8s Python, предоставляя полный доступ ко всем API и моделям, доступным на обеих платформах. Подробности о версиях API и дополнительную информацию можно найти по адресу https://github.com/openshift/openshift-restclient-python
  • Для предотвращения ошибок проверки SSL-сертификатов, когда validate_certs имеет значение True, полная цепочка сертификатов API-сервера должна быть предоставлена через ca_cert или в файле kubeconfig.

Примеры

- name: Create a k8s namespace
  community.kubernetes.k8s:
    name: testing
    api_version: v1
    kind: Namespace
    state: present

- name: Create a Service object from an inline definition
  community.kubernetes.k8s:
    state: present
    definition:
      apiVersion: v1
      kind: Service
      metadata:
        name: web
        namespace: testing
        labels:
          app: galaxy
          service: web
      spec:
        selector:
          app: galaxy
          service: web
        ports:
        - protocol: TCP
          targetPort: 8000
          name: port-8000-tcp
          port: 8000

- name: Remove an existing Service object
  community.kubernetes.k8s:
    state: absent
    api_version: v1
    kind: Service
    namespace: testing
    name: web

# Passing the object definition from a file

- name: Create a Deployment by reading the definition from a local file
  community.kubernetes.k8s:
    state: present
    src: /testing/deployment.yml

- name: >-
    Read definition file from the Ansible controller file system.
    If the definition file has been encrypted with Ansible Vault it will automatically be decrypted.
  community.kubernetes.k8s:
    state: present
    definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml }}"

- name: Read definition template file from the Ansible controller file system
  community.kubernetes.k8s:
    state: present
    template: '/testing/deployment.j2'

- name: Read definition template file from the Ansible controller file system that uses custom start/end strings
  community.kubernetes.k8s:
    state: present
    template:
      path: '/testing/deployment.j2'
      variable_start_string: '[['
      variable_end_string: ']]'

- name: fail on validation errors
  community.kubernetes.k8s:
    state: present
    definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
    validate:
      fail_on_error: yes

- name: warn on validation errors, check for unexpected properties
  community.kubernetes.k8s:
    state: present
    definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
    validate:
      fail_on_error: no
      strict: yes

Возвращаемые значения

Общие возвращаемые значения описаны в здесь, следующие поля уникальны для данного модуля:

Ключ Возвращаемое значение Описание
результат
сложный
успех
Созданный, измененный или иначе присутствующий объект. Будет пустым в случае удаления.

api_version
строка
успех
Версионированная схема этого представления объекта.

duration
целое
когда wait равно true
время выполнения задачи в секундах

Пример:
48
items
список / элементы=строка
когда resource_definition или src содержат список объектов
Возвращается только при передаче нескольких YAML-документов в src или resource_definition

kind
строка
успех
Представляет REST-ресурс, который представляет этот объект.

metadata
сложный
успех
Стандартные метаданные объекта. Включают имя, пространство имен, аннотации, метки и т.д.

spec
сложный
успех
Уникальные атрибуты объекта. Зависят от api_version и kind.

status
сложный
успех
Текущие данные состояния объекта.



Авторы

  • Chris Houseknecht (@chouseknecht)
  • Fabian von Feilitzsch (@fabianvf)

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/collections/community/kubernetes/k8s_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API