Spec-Zone.ru › Ansible 2.10

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=no).
Требуется 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, merge_types будут проверены в указанном порядке.
Если 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 Auth. Если ваш кластер использует другой вид аутентификации (например, 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
список / элементы=строка
при ресурс_определение или 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–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/kubernetes/k8s_module.html

Spec-Zone.ru

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