Spec-Zone.ru › Ansible

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

Примечание

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

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

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

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

  • Краткое описание
  • Требования
  • Параметры
  • Примечания
  • Примеры
  • Возвращаемые значения

Краткое описание

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

Примечание

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

Требования

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

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

Параметры

Параметр

Комментарии

api_key

string

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

api_version

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

string

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

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

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

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

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

append_hash

boolean

Следует ли добавлять хеш к имени ресурса для обеспечения его неизменяемости

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

Для других видов ресурсов параметр будет молча игнорироваться

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

Варианты:

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

apply

boolean

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

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

несовместим с merge_type

Варианты:

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

ca_cert

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

path

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

client_cert

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

path

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

client_key

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

path

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

context

string

Имя контекста из файла конфигурации. Также можно указать с помощью переменной окружения K8S_AUTH_CONTEXT.

continue_on_error

boolean

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

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

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

Варианты:

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

delete_options

dictionary

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

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

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

gracePeriodSeconds

integer

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

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

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

preconditions

dictionary

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

resourceVersion

string

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

uid

string

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

propagationPolicy

string

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

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

Варианты:

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

force

boolean

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

Варианты:

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

host

string

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

impersonate_groups

list / elements=string

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

Группа или группы, от имени которых выполняется операция.

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

impersonate_user

string

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

Имя пользователя, от имени которого выполняется операция.

Также можно указать с помощью переменной окружения K8S_AUTH_IMPERSONATE_USER.

kind

string

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

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

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

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

kubeconfig

any

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

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

Конфигурацию Kubernetes можно передать в виде словаря. Для этой возможности требуется версия клиента Python kubernetes >= 17.17.0. Добавлено в версии 2.2.0.

merge_type

list / elements=string

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

Например, определения пользовательских ресурсов обычно нельзя обновить с помощью стандартного стратегического объединения. Если вы видите сообщение “strategic merge patch format is not supported”, можно использовать 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 удален в версии 4.0.0. Вместо него используйте kubernetes.core.k8s_json_patch.

Варианты:

  • "merge"
  • "strategic-merge"

name

string

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

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

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

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

namespace

string

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

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

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

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

no_proxy

string

добавлено в 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

string

Укажите пароль для аутентификации в API. Также можно указать с помощью переменной окружения K8S_AUTH_PASSWORD.

Описание параметра username содержит информацию о случаях, когда применим этот параметр.

persist_config

boolean

Сохранять ли токены обновления конфигурации kube. Также можно указать с помощью переменной окружения K8S_AUTH_PERSIST_CONFIG.

Если в контексте k8s используются учетные данные пользователя с токенами обновления (например, oidc или аутентификация gke/gcloud), токен обновляется клиентской библиотекой Python k8s, но по умолчанию не сохраняется. Поэтому срок действия старого токена обновления может истечь, и следующая аутентификация может завершиться ошибкой. Если установить этот флаг в true, клиенту Python k8s будет указано сохранять новый токен обновления в файл конфигурации kube.

По умолчанию — false.

Обратите внимание: текущая версия клиентской библиотеки Python k8s пока не поддерживает установку этого флага в True.

Исправление для этой библиотеки k8s находится здесь: https://github.com/kubernetes-client/python-base/pull/169

Варианты:

  • false
  • true

proxy

string

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

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

proxy_headers

dictionary

добавлено в 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

string

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

Также можно указать с помощью переменной окружения K8S_AUTH_PROXY_HEADERS_BASIC_AUTH.

proxy_basic_auth

string

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

Также можно указать с помощью переменной окружения K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH.

user_agent

string

Строка, задающая нужный user-agent, например foo/1.0.

Также можно указать с помощью переменной окружения K8S_AUTH_PROXY_HEADERS_USER_AGENT.

resource_definition

псевдонимы: definition, inline

string

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

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

src

path

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

Чтение выполняется из локальной файловой системы. Чтобы читать из файловой системы контроллера Ansible, включая файлы с хранилищем секретов, используйте подключаемый модуль поиска file или template в сочетании с фильтром 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-аутентификации. Если в кластере используется другой способ аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать ожидаемым образом. В этом случае ознакомьтесь с модулем community.okd.k8s_auth, который может подойти для вашей задачи.

validate

dictionary

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

fail_on_error

boolean

Следует ли завершать выполнение с ошибкой при ошибках проверки.

Варианты:

  • false
  • true

strict

boolean

Следует ли завершать выполнение с ошибкой при наличии неожиданных свойств

Варианты:

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

version

string

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

validate_certs

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

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

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

Варианты:

  • false
  • true

wait

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

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

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

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

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

Варианты:

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

wait_condition

словарь

Задаёт пользовательское условие в поле status, которого нужно дождаться.

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

reason

строка

Значение поля reason в требуемом условии

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

Допустимые причины в условии зависят от типа ресурса Kubernetes.

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

status

строка

Значение поля status в требуемом условии.

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

Варианты:

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

type

строка

Тип условия, которого нужно дождаться.

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

Обязателен, если вы указываете wait_condition.

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

Допустимые типы условий зависят от типа ресурса Kubernetes.

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

wait_sleep

целое число

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

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

wait_timeout

целое число

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

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

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

Примечания

Примечание

  • Чтобы избежать ошибок проверки SSL-сертификата, когда validate_certs имеет значение True, необходимо передать полную цепочку сертификатов API-сервера через ca_cert или в файле kubeconfig.

Примеры

- name: Create an OCP project
  community.okd.k8s:
    state: present
    resource_definition:
      apiVersion: project.openshift.io/v1
      kind: Project
      metadata:
        name: testing

- 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

сложный тип

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

Возвращается: success

api_version

строка

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

Возвращается: success

duration

целое число

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

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

Пример: 48

error

сложный тип

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

Возвращается: error

items

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

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

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

kind

строка

Обозначает REST-ресурс, представленный этим объектом.

Возвращается: success

metadata

сложный тип

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

Возвращается: success

spec

сложный тип

Специфичные атрибуты объекта. Зависят от значений api_version и kind.

Возвращается: success

status

сложный тип

Сведения о текущем состоянии объекта.

Возвращается: success

Авторы

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

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

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

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

Spec-Zone.ru

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