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 список / элементы=строка |
| Определяет, следует ли переопределить подход к слиянию патчей по умолчанию указанным типом. По умолчанию обычно используется стратегическое слияние. Например, определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния. Возможно, вам потребуется использовать merge если вы видите сообщение «формат стратегического патча слияния не поддерживается»Требуется 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 строка |
| Определяет, должен ли объект быть создан, изменен или удален. При значении 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 для данного ресурса, чтобы увидеть возможные значения. | ||
| статус строка |
| Значение поля 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