Spec-Zone.ru › Ansible 2.11

community.okd.k8s – Управление объектами OpenShift

Примечание

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

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

Чтобы использовать его в книге задач, укажите: community.okd.k8s

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

Обзор

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

Требования

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

  • 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
логический тип
    Варианты:
  • no
  • yes
Добавлять ли хэш к имени ресурса для обеспечения неизменяемости
Применимо только к ресурсам ConfigMap и Secret
Для других типов ресурсов параметр будет проигнорирован.
Для генерации хэша необходимо полное определение объекта. Это означает, что удаление объекта, созданного с append_hash, будет работать только в том случае, если тот же объект передается со state=absent (или просто используйте state=absent с именем, включающим сгенерированный хэш и append_hash=no)
apply
логический тип
    Варианты:
  • no
  • yes
apply сравнивает желаемое определение ресурса с ранее предоставленным определением ресурса, игнорируя свойства, которые автоматически генерируются
apply работает лучше с сервисами, чем «force=yes»
взаимоисключающий с 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
логический тип
    Варианты:
  • no ←
  • yes
Если установлено значение 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
логический тип
    Варианты:
  • no
  • yes
Сохранять ли токены обновления конфигурации 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.
username
строка
Укажите имя пользователя для аутентификации с API. Также можно указать через переменную среды K8S_AUTH_USERNAME.
Обратите внимание, что это работает только с кластерами, настроенными на использование HTTP Basic Auth. Если ваш кластер использует другой вид аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует обратиться к модулю k8s_auth, так как он может выполнять необходимые действия.
validate
словарь
Как (если вообще) проверять определение ресурса по схеме Kubernetes. Требуется модуль kubernetes-validate python.
fail_on_error
логический тип
    Варианты:
  • no
  • yes
Прерывать ли выполнение при ошибках проверки.
strict
логический тип
    Варианты:
  • no
  • yes ←
Прерывать ли выполнение при передаче неожиданных свойств
версия
строка
Версия Kubernetes для проверки. По умолчанию используется версия сервера Kubernetes
validate_certs
логический тип
    Варианты:
  • нет
  • да
Проверять или нет сертификаты SSL API-сервера. Также можно указать через переменную окружения K8S_AUTH_VERIFY_SSL.

псевдонимы: verify_ssl
wait
логический тип
    Варианты:
  • нет ←
  • да
Ожидать, пока определённые типы ресурсов перейдут в нужное состояние. По умолчанию модуль завершается, как только Kubernetes получит запрос.
Реализовано для state=present для Deployment, DaemonSet и Pod, и для state=absent для всех типов ресурсов.
Для типов ресурсов без реализации, wait возвращается немедленно, если wait_condition не задано.
wait_condition
словарь
Указывает пользовательское условие для ожидания статуса. Игнорируется, если wait не установлено или установлено в False.
reason
строка
Значение поля reason в вашем желаемом условии
Например, если Deployment приостановлено, то Progressing type будет иметь причину DeploymentPaused.
Возможные причины в условии зависят от каждого типа ресурса в Kubernetes. См. документацию API для поля status данного ресурса, чтобы узнать возможные варианты.
status
строка
    Варианты:
  • True ←
  • False
  • Неизвестно
Значение поля status в вашем желаемом условии.
Например, если Deployment приостановлено, то Progressing type будет иметь статус Unknown.
type
строка
Тип условия для ожидания. Например, ресурс 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.okd.k8s:
    name: testing
    api_version: v1
    kind: Namespace
    state: present

- name: Create a Service object from an inline definition
  community.okd.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.okd.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.okd.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.okd.k8s:
    state: present
    definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml }}"

- name: Read definition file from the Ansible controller file system after Jinja templating
  community.okd.k8s:
    state: present
    definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"

- name: fail on validation errors
  community.okd.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.okd.k8s:
    state: present
    definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
    validate:
      fail_on_error: no
      strict: yes

Значения возврата

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

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

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

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

Пример:
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/okd/k8s_module.html

Spec-Zone.ru

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