Spec-Zone.ru › Ansible

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

Примечание

Этот модуль входит в коллекцию community.okd (версия 3.0.1).

Эта коллекция может быть уже установлена, если вы используете пакет ansible. Она не включена в ansible-core. Чтобы проверить установку, выполните команду ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.okd. Для использования этого модуля требуются дополнительные компоненты, см. Требования.

Для использования в плейбуке укажите: community.okd.k8s.

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

Обзор

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

Примечание

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

Требования

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

  • python >= 3.6
  • kubernetes >= 12.0.0
  • PyYAML >= 3.11

Параметры

Параметр

Комментарии

api_key

строка

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

api_version

псевдонимы: api, версия

строка

Используется для указания версии API.

Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса.

Используется вместе с kind, name и namespace для идентификации конкретного объекта.

Если предоставлено определение ресурса, значение apiVersion из resource_definition переопределит этот параметр.

По умолчанию: "v1"

append_hash

логическое значение

Указывает, нужно ли добавлять хэш к имени ресурса для целей неизменяемости.

Применяется только к ресурсам ConfigMap и Secret.

Параметр будет проигнорирован для других типов ресурсов.

Для генерации хэша необходимо полное определение объекта. Это означает, что удаление объекта, созданного с append_hash, будет работать только в том случае, если тот же объект передается со state=absent (или используйте state=absent с именем, включающим сгенерированный хэш, и append_hash=no).

Варианты:

  • false ← (по умолчанию)
  • true

apply

логическое значение

apply сравнивает желаемое определение ресурса с ранее предоставленным определением ресурса, игнорируя свойства, которые автоматически генерируются.

apply лучше работает с Service, чем ‘force=yes’.

исключает merge_type

Варианты:

  • false ← (по умолчанию)
  • true

ca_cert

псевдонимы: ssl_ca_cert

путь

Путь к сертификату CA, используемому для аутентификации с API. Для предотвращения ошибок проверки сертификатов необходимо предоставить полную цепочку сертификатов.

Также может быть указан через переменную среды K8S_AUTH_SSL_CA_CERT.

client_cert

псевдонимы: cert_file

путь

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

client_key

псевдонимы: key_file

путь

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

context

строка

Имя контекста, найденного в файле конфигурации. Также может быть указан через переменную среды K8S_AUTH_CONTEXT.

continue_on_error

логическое значение

добавлено в community.okd 2.0.0

Продолжать при ошибках создания/удаления, когда определено несколько ресурсов.

Это не влияет на этап валидации, который контролируется параметром validate.fail_on_error.

Варианты:

  • false ← (по умолчанию)
  • true

delete_options

словарь

добавлено в kubernetes.core 1.2.0

Настройка поведения при удалении объекта.

Используется только при state=absent.

gracePeriodSeconds

целое число

Укажите время ожидания в секундах перед принудительным завершением.

Реализовано только для ресурсов Pod.

Если не указано, будет использоваться значение по умолчанию для типа объекта.

preconditions

словарь

Укажите условия, которые должны быть выполнены для продолжения удаления.

resourceVersion

строка

Укажите версию ресурса целевого объекта.

uid

строка

Укажите UID целевого объекта.

propagationPolicy

строка

Используется для управления тем, как удаляются зависимые объекты.

Если не указано, будет использоваться политика по умолчанию для типа объекта. Это может отличаться для разных типов объектов.

Варианты:

  • "Foreground"
  • "Background"
  • "Orphan"

force

логическое значение

Если установлено в значение yes, и state равно значению present, существующий объект будет заменен.

Варианты:

  • false ← (по умолчанию)
  • true

host

строка

Укажите URL для доступа к API. Также может быть указан через переменную среды K8S_AUTH_HOST.

impersonate_groups

список / элементы=строка

добавлен в kubernetes.core 2.3.0

Группа(ы) для имитации при выполнении операции.

Также может быть указана через переменную окружения K8S_AUTH_IMPERSONATE_GROUPS. Пример: Group1,Group2

impersonate_user

строка

добавлен в kubernetes.core 2.3.0

Имя пользователя для имитации при выполнении операции.

Также может быть указана через переменную окружения K8S_AUTH_IMPERSONATE_USER.

kind

строка

Используется для указания модели объекта.

Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса.

Используется совместно с api_version, name и namespace для идентификации конкретного объекта.

Если предоставлено определение ресурса, значение kind из resource_definition переопределит этот параметр.

kubeconfig

любой тип

Путь к существующему файлу конфигурации Kubernetes. Если не указано и не указаны другие параметры подключения, клиент Kubernetes попытается загрузить файл конфигурации по умолчанию из ~/.kube/config. Также может быть указана через переменную окружения K8S_AUTH_KUBECONFIG.

Несколько файлов конфигурации Kubernetes могут быть указаны с разделителем ‘;’ для платформ Windows или ‘:’ для других платформ.

Конфигурация kubernetes может быть предоставлена в виде словаря. Эта функция требует версии python kubernetes client >= 17.17.0. Добавлена в версии 2.2.0.

merge_type

список / элементы=строка

Определяет, переопределить ли стандартный подход к слиянию патчей на определённый тип. По умолчанию обычно используется стратегическое слияние.

Например, определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния. Вы можете использовать merge, если видите сообщение «формат стратегического слияния не поддерживается»

https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment

Если указано несколько merge_type, типы слияния будут использоваться в указанном порядке

По умолчанию устанавливается значение ['strategic-merge', 'merge'], что идеально подходит для использования одних и тех же параметров для типов ресурсов, которые объединяют пользовательские ресурсы и встроенные ресурсы.

Взаимоисключающие с apply

merge_type=json устарел и будет удалён в версии 3.0.0. Пожалуйста, используйте kubernetes.core.k8s_json_patch вместо этого.

Варианты:

  • "json"
  • "merge"
  • "strategic-merge"

name

строка

Используется для указания имени объекта.

Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса.

Используется совместно с api_version, kind и namespace для идентификации конкретного объекта.

Если предоставлено определение ресурса, значение metadata.name из resource_definition переопределит этот параметр.

namespace

строка

Используется для указания пространства имён объекта.

Полезно при создании, удалении или поиске объекта без предоставления полного определения ресурса.

Используется совместно с api_version, kind и name для идентификации конкретного объекта.

Если предоставлено определение ресурса, значение metadata.namespace из resource_definition переопределит этот параметр.

no_proxy

строка

добавлен в kubernetes.core 2.3.0

Список хостов/доменов/IP/CIDR (через запятую), которые не должны проходить через прокси. Также может быть указана через переменную окружения K8S_AUTH_NO_PROXY.

Обратите внимание, что этот модуль не использует стандартные настройки прокси из окружения (например, NO_PROXY).

Эта функция требует kubernetes >= 19.15.0. Если библиотека kubernetes менее 19.15.0, возникает ошибка, даже если no_proxy задан правильно.

Пример значения: “localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16”

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

Варианты:

  • false
  • true

proxy

строка

URL HTTP-прокси, который необходимо использовать для подключения. Также может быть указана через переменную окружения K8S_AUTH_PROXY.

Обратите внимание, что этот модуль не использует стандартные настройки прокси из окружения (например, HTTP_PROXY).

proxy_headers

словарь

добавлен в kubernetes.core 2.0.0

Заголовок, используемый для HTTP-прокси.

Документация доступна здесь https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html?highlight=proxy_headers#urllib3.util.make_headers.

basic_auth

строка

Разделённое двоеточием имя пользователя:пароль для заголовка базовой аутентификации.

Также может быть указано через переменную окружения K8S_AUTH_PROXY_HEADERS_BASIC_AUTH.

proxy_basic_auth

строка

Разделённое двоеточием имя пользователя:пароль для заголовка прокси-базовой аутентификации.

Также может быть указано через переменную окружения K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH.

user_agent

string

Строка, представляющая пользовательский агент, например foo/1.0.

Также может быть указана через переменную среды K8S_AUTH_PROXY_HEADERS_USER_AGENT.

resource_definition

aliases: definition, inline

string

Укажите допустимое YAML-определение (в виде строки, списка или словаря) объекта при создании или обновлении.

ПРИМЕЧАНИЕ: kind, api_version, name и namespace будут перезаписаны соответствующими значениями, найденными в предоставленном resource_definition.

src

path

Укажите путь к файлу, содержащему допустимое YAML-определение объекта или объектов для создания или обновления. Взаимоисключительно с resource_definition. ПРИМЕЧАНИЕ: kind, api_version, name и namespace будут перезаписаны соответствующими значениями, найденными в файле конфигурации, прочитанном из файла src.

Читает из локальной файловой системы. Для чтения из файловой системы контроллера Ansible, включая зашифрованные файлы, используйте плагин поиска файлов или плагин поиска шаблонов в сочетании с фильтром from_yaml и передайте результат в resource_definition. См. примеры ниже.

URL-адрес файлов манифестов, которые можно использовать для создания ресурса. Добавлено в версии 2.4.0.

Взаимоисключительно с template в случае модуля kubernetes.core.k8s.

state

string

Определяет, должен ли объект быть создан, изменен или удален. При установке в значение present объект будет создан, если он еще не существует. При установке в значение absent существующий объект будет удален. При установке в значение present существующий объект будет изменен, если его атрибуты отличаются от тех, которые указаны с помощью resource_definition или src.

patched состояние - это существующий ресурс, которому применено данное изменение. Если ресурс не существует, пропустить его без ошибок.

Варианты:

  • "absent"
  • "present" ← (по умолчанию)
  • "patched"

template

any

добавлено в community.okd 2.0.0

Укажите допустимое YAML-шаблонное определение объекта при создании или обновлении.

Значение может быть указано в виде строки или словаря.

Взаимоисключительно с src и resource_definition.

Файлы шаблонов должны присутствовать на файловой системе контроллера Ansible.

Дополнительные параметры можно указать, используя словарь.

Допустимые дополнительные параметры -

newline_sequence (str): Укажите последовательность новых строк для использования в шаблонизации файлов. допустимые значения — “\n”, “\r”, “\r\n”. Значение по умолчанию — “\n”.

block_start_string (str): Строка, отмечающая начало блока. Значение по умолчанию — “{%”.

block_end_string (str): Строка, отмечающая конец блока. Значение по умолчанию — “%}”.

variable_start_string (str): Строка, отмечающая начало оператора печати. Значение по умолчанию — “{{“.

variable_end_string (str): Строка, отмечающая конец оператора печати. Значение по умолчанию — “}}”.

trim_blocks (bool): Определить, когда следует удалять новые строки из блоков. При установке в значение yes первая новая строка после блока удаляется (блок, а не тег переменной!). Значение по умолчанию — true.

lstrip_blocks (bool): Определить, когда следует удалять начальные пробелы и табуляции. При установке в значение yes начальные пробелы и табуляции удаляются из начала строки в блоке. Эта функциональность требует Jinja 2.7 или более поздней версии. Значение по умолчанию — false.

username

string

Укажите имя пользователя для аутентификации с API. Также может быть указано через переменную среды K8S_AUTH_USERNAME.

Обратите внимание, что это работает только с кластерами, настроенными для использования аутентификации HTTP Basic. Если ваш кластер имеет другой тип аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует изучить модуль community.okd.k8s_auth, так как он может выполнять необходимые действия.

validate

dictionary

как (если вообще) проверить определение ресурса по схеме Kubernetes. Требуется модуль kubernetes-validate python

fail_on_error

boolean

выполнять ли отказ при ошибках проверки.

Варианты:

  • false
  • true

strict

boolean

выполнять ли отказ при передаче непредвиденных свойств

Варианты:

  • false
  • true ← (по умолчанию)

version

string

версия Kubernetes для проверки. по умолчанию — версия сервера Kubernetes

validate_certs

aliases: verify_ssl

boolean

Проверять ли сертификаты SSL API-сервера. Также может быть указано через переменную среды K8S_AUTH_VERIFY_SSL.

Варианты:

  • false
  • true

wait

boolean

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

По умолчанию модуль завершается, как только Kubernetes получил запрос.

Реализовано для state=present для Deployment, DaemonSet и Pod, и для state=absent для всех типов ресурсов.

Для типов ресурсов без реализации wait возвращается немедленно, если wait_condition не установлен.

Варианты:

  • false ← (по умолчанию)
  • true

wait_condition

dictionary

Указывает пользовательское условие для ожидания состояния.

Игнорируется, если wait не установлен или установлен в значение False.

reason

string

Значение поля reason в вашем желаемом состоянии.

Например, если Deployment приостановлено, то поле Progressing type будет иметь значение DeploymentPaused.

Возможные значения reason зависят от типа ресурса в Kubernetes.

См. документацию API для поля status данного ресурса, чтобы увидеть возможные варианты.

status

string

Значение поля status в вашем желаемом состоянии.

Например, если Deployment приостановлено, то поле Progressing type будет иметь значение Unknown.

Возможные значения:

  • "True" ← (по умолчанию)
  • "False"
  • "Unknown"

type

string

Тип состояния, для которого ожидается завершение.

Например, для ресурса Pod будет установлено состояние Ready (среди прочих).

Обязательно укажите, если задается состояние wait_condition.

Если поле оставлено пустым, то поле wait_condition будет проигнорировано.

Возможные типы состояния зависят от типа ресурса в Kubernetes.

См. документацию API для поля status данного ресурса, чтобы увидеть возможные варианты.

wait_sleep

integer

Количество секунд ожидания между проверками.

По умолчанию: 5

wait_timeout

integer

Время ожидания в секундах, пока ресурс не достигнет желаемого состояния.

Игнорируется, если wait не задано.

По умолчанию: 120

Примечания

Примечание

  • Для избежания ошибок валидации 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: true

- 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: false
      strict: true

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

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

Ключ

Описание

result

complex

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

Возвращается при: успехе

api_version

string

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

Возвращается при: успехе

duration

integer

Время выполнения задачи в секундах.

Возвращается при: если wait равно true

Пример: 48

error

complex

Ошибка при попытке создания/удаления объекта.

Возвращается при: ошибке

items

list / elements=string

Возвращается только при передаче нескольких YAML-документов в src или resource_definition.

Возвращается при: если resource_definition или src содержит список объектов

kind

string

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

Возвращается при: успехе

metadata

complex

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

Возвращается при: успехе

spec

complex

Уникальные атрибуты объекта. Изменяются в зависимости от api_version и kind.

Возвращается при: успехе

status

complex

Текущие детали состояния объекта.

Возвращается при: успехе

Авторы

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

Ссылки на коллекцию

  • Система отслеживания ошибок
  • Репозиторий (исходный код)

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

Spec-Zone.ru

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