k8s – Управление объектами Kubernetes (K8s)
Новое в версии 2.6.
Обзор
- Используйте OpenShift Python клиент для выполнения операций CRUD над объектами K8s.
- Передайте определение объекта из исходного файла или в строчном виде. См. примеры для чтения файлов и использования шаблонов Jinja или файлов с зашифрованным содержимым vault.
- Доступ ко всему спектру API K8s.
- Используйте модуль k8s_facts для получения списка информации об объекте типа
kind. - Авторизуйтесь с помощью файла конфигурации, сертификатов, пароля или токена.
- Поддерживает режим проверки.
Псевдонимы: openshift_raw,k8s_raw
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- 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 булево добавлен в 2.8 |
| Указывает, нужно ли добавлять хэш к имени ресурса для целей неизменяемости. Применяется только к ресурсам ConfigMap и Secret. Параметр будет проигнорирован для других типов ресурсов. Для генерации хэша необходимо полное определение объекта — это означает, что удаление объекта, созданного с append_hash, будет работать только в том случае, если тот же объект передается со значением state=absent (или просто используйте state=absent с именем, включающим сгенерированный хэш и append_hash=no). | |
| 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 список добавлен в 2.7 |
| Указывает, нужно ли переопределить подход к слиянию патчей по умолчанию на конкретный тип. По умолчанию обычно используется стратегическое слияние. Например, определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния. Вы можете использовать merge если видите "формат стратегического слияния патча не поддерживается".Требуется openshift >= 0.6.2 Если указано несколько merge_type, они будут использоваться в указанном порядке. Если openshift >= 0.6.2, значение по умолчанию — ['strategic-merge', 'merge'], что идеально подходит для использования одних и тех же параметров для типов ресурсов, которые сочетают пользовательские ресурсы и встроенные ресурсы. Для openshift < 0.6.2 значение по умолчанию — просто strategic-merge. | |
| name строка | Используется для указания имени объекта. Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса. Используется совместно с api_version, kind и namespace для идентификации конкретного объекта. Если предоставлено определение ресурса, значение metadata.name из resource_definition переопределит этот параметр. | ||
| namespace строка | Используется для указания пространства имен объекта. Полезно при создании, удалении или поиске объекта без предоставления полного определения ресурса. Используется совместно с api_version, kind и name для идентификации конкретного объекта. Если предоставлено определение ресурса, значение metadata.namespace из resource_definition переопределит этот параметр. | ||
| password строка | Укажите пароль для аутентификации с API. Также можно указать через переменную окружения K8S_AUTH_PASSWORD. Пожалуйста, ознакомьтесь с описанием параметра username для обсуждения случаев, когда этот параметр применим. | ||
| 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. См. примеры ниже. | ||
| state строка |
| Определяет, должен ли объект быть создан, изменён или удалён. При установке в значение present, объект будет создан, если он ещё не существует. Если установлено в значение absent, существующий объект будет удалён. Если установлено в значение present, существующий объект будет изменён, если его атрибуты отличаются от тех, которые указаны с помощью resource_definition или src. | |
| username строка | Укажите имя пользователя для аутентификации с API. Также можно указать через переменную окружения K8S_AUTH_USERNAME. Обратите внимание, что это работает только с кластерами, настроенными для использования аутентификации HTTP Basic. Если ваш кластер использует другой тип аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует изучить модуль k8s_auth, так как он может выполнять необходимые действия. | ||
| validate - добавлен в 2.8 | Как (если вообще) проверять определение ресурса по отношению к схеме Kubernetes. Требуется модуль kubernetes-validate python. | ||
| fail_on_error булево / обязательно |
| выводить ошибку при ошибках валидации. | |
| strict булево |
| выводить ошибку при передаче неожиданных свойств | |
| version - | версия Kubernetes для проверки. по умолчанию - версия сервера Kubernetes | ||
| validate_certs boolean |
| Указывает, нужно ли проверять сертификаты SSL сервера API. Также можно указать через переменную окружения K8S_AUTH_VERIFY_SSL. алиасы: verify_ssl | |
| wait boolean добавлен в 2.8 |
| Ожидать ли, пока определённые типы ресурсов перейдут в желаемое состояние. По умолчанию модуль завершается после того, как Kubernetes получил запрос. Реализовано для state=present для Deployment, DaemonSet и Pod, и для state=absent для всех типов ресурсов.Для типов ресурсов без реализации wait возвращается немедленно, если wait_condition не установлен. | |
| wait_condition - добавлен в 2.8 | Указывает пользовательское условие для ожидания статуса. Игнорируется, если wait не установлен или установлен в False. | ||
| reason - | Значение поля reason в желаемом условии. Например, если Deployment приостановлен, в поле Progressing будет значение DeploymentPaused reason.Возможные значения reason зависят от типа ресурса в Kubernetes. См. документацию API поля status для данного ресурса, чтобы увидеть возможные значения. | ||
| status - |
| Значение поля status в желаемом условии. Например, если Deployment приостановлен, поле Progressing type будет содержать значение Unknown status. | |
| type - | Тип условия ожидания. Например, для ресурса Pod будет устанавливаться условие Ready (и другие).Требуется, если вы задаёте условие wait_condition. Если оставлено пустым, поле wait_condition будет проигнорировано.Возможные типы условий зависят от типа ресурса в Kubernetes. См. документацию API поля status для данного ресурса, чтобы увидеть возможные значения. | ||
| wait_timeout - добавлен в 2.8 | По умолчанию: 120 | Время ожидания в секундах, пока ресурс не перейдёт в желаемое состояние. Игнорируется, если wait не установлен. | |
Примечания
Примечание
- Клиент 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
k8s:
name: testing
api_version: v1
kind: Namespace
state: present
- name: Create a Service object from an inline definition
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: Create a Service object by reading the definition from a file
k8s:
state: present
src: /testing/service.yml
- name: Remove an existing Service object
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
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.
k8s:
state: present
definition: "{{ lookup('file', '/testing/deployment.yml') }}"
- name: Read definition file from the Ansible controller file system after Jinja templating
k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') }}"
- name: fail on validation errors
k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') }}"
validate:
fail_on_error: yes
- name: warn on validation errors, check for unexpected properties
k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') }}"
validate:
fail_on_error: no
strict: yes
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое | Описание | |
|---|---|---|---|
| result сложное | успех | Созданный, изменённый или существующий объект. Будет пустым в случае удаления. | |
| api_version строка | успех | Версионированный шаблон представления объекта. | |
| duration целое число | при wait равно true | Время выполнения задачи в секундах. Пример: 48 | |
| items список | при resource_definition или src содержат список объектов | Возвращается только при передаче нескольких YAML-документов в src или resource_definition | |
| kind строка | успех | Представляет REST-ресурс, который представляет этот объект. | |
| metadata сложное | успех | Стандартные метаданные объекта. Включают имя, пространство имён, аннотации, метки и т. д. | |
| spec сложное | успех | Конкретные атрибуты объекта. Изменяются в зависимости от api_version и kind. | |
| status сложное | успех | Текущие детали состояния объекта. | |
Статус
- Этот модуль не гарантирует обратной совместимости интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- 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.8/modules/k8s_module.html