kubernetes.core.k8s – Управление объектами Kubernetes (K8s)
Примечание
Этот плагин входит в коллекцию kubernetes.core (версия 1.1.1).
Для его установки используйте: ansible-galaxy collection install kubernetes.core.
Для использования в playbook, укажите: kubernetes.core.k8s.
Обзор
- Используйте OpenShift Python клиент для выполнения операций CRUD над объектами K8s.
- Передайте определение объекта из исходного файла или в строке. См. примеры для чтения файлов и использования шаблонов Jinja или зашифрованных vault-файлов.
- Доступ ко всему спектру API K8s.
- Используйте модуль kubernetes.core.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 список / элементы=строка |
| Используется для переопределения метода слияния по умолчанию на конкретный тип. По умолчанию обычно используется стратегическое слияние. Например, определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния. Возможно, вам потребуется использовать merge если вы видите "формат стратегического слияния не поддерживается".Требуется 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 строка |
| Определяет, должен ли быть создан, изменён или удалён объект. Если установлено в 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 для заданного ресурса, чтобы увидеть возможные значения. | ||
| статус строка |
| Значение поля 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
kubernetes.core.k8s:
name: testing
api_version: v1
kind: Namespace
state: present
- name: Create a Service object from an inline definition
kubernetes.core.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
kubernetes.core.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
kubernetes.core.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.
kubernetes.core.k8s:
state: present
definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml }}"
- name: Read definition template file from the Ansible controller file system
kubernetes.core.k8s:
state: present
template: '/testing/deployment.j2'
- name: Read definition template file from the Ansible controller file system that uses custom start/end strings
kubernetes.core.k8s:
state: present
template:
path: '/testing/deployment.j2'
variable_start_string: '[['
variable_end_string: ']]'
- name: fail on validation errors
kubernetes.core.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
kubernetes.core.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/kubernetes/core/k8s_module.html