k8s – Управление объектами Kubernetes (K8s)
Новая версия с 2.6.
Обзор
- Используйте клиент OpenShift Python для выполнения операций CRUD над объектами K8s.
- Передайте определение объекта из исходного файла или в строчном виде. См. примеры для чтения файлов и использования шаблонов Jinja или зашифрованных файлами vault.
- Доступ ко всему спектру API K8s.
- Используйте модуль k8s_info, чтобы получить список элементов об объекте типа
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=нет) Требуется openshift >= 0.7.2 | |
| apply логическое значение добавлен в 2.9 |
| apply сравнивает желаемое определение ресурса с ранее предоставленным определением ресурса, игнорируя свойства, которые автоматически генерируютсяapply лучше работает с Services, чем 'force=yes'Требуется openshift >= 0.9.2 исключает merge_type | |
| ca_cert путь | Путь к сертификату CA, используемому для аутентификации с API. Для предотвращения ошибок проверки сертификатов необходимо предоставить цепочку сертификатов. псевдонимы: 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, 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, чтобы понять, когда этот параметр применим. | ||
| proxy - добавлен в 2.9 | 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. См. примеры ниже. | ||
| state строка |
| Определяет, должен ли объект быть создан, обновлён или удалён. При установке в present, объект будет создан, если он ещё не существует. При установке в absent, существующий объект будет удалён. При установке в present, существующий объект будет обновлён, если его атрибуты отличаются от указанных с помощью resource_definition или src. | |
| username строка | Укажите имя пользователя для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_USERNAME. Обратите внимание, что это работает только с кластерами, настроенными на использование HTTP Basic Auth. Если в вашем кластере используется другой способ аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует изучить модуль k8s_auth, так как он, возможно, выполнит то, что вам нужно. | ||
| validate - добавлен в 2.8 | как (если вообще) валидировать определение ресурса по схеме Kubernetes. Требуется модуль kubernetes-validate python и openshift >= 0.8.0 | ||
| fail_on_error boolean / обязательно |
| выполнять ли прерывание при ошибках валидации. | |
| strict boolean |
| выполнять ли прерывание при передаче неожиданных свойств | |
| 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 c(тип) будет иметь причину DeploymentPaused. Возможные причины в условии специфичны для каждого типа ресурса в Kubernetes. См. документацию API поля status для данного ресурса, чтобы увидеть возможные варианты. | ||
| status - |
| Значение поля status в желаемом состоянии. Например, если Deployment приостановлен, то Progressing type будет иметь статус Unknown. | |
| type - | Тип условия ожидания. Например, ресурс Pod установит условие Ready (среди других).Требуется, если вы указываете wait_condition. Если оставлено пустым, поле wait_condition будет проигнорировано.Возможные типы условия специфичны для каждого типа ресурса в Kubernetes. См. документацию API поля status для данного ресурса, чтобы увидеть возможные варианты. | ||
| wait_sleep - добавлен в 2.9 | По умолчанию: 5 | Количество секунд ожидания между проверками. | |
| wait_timeout - добавлен в 2.8 | По умолчанию: 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
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.9/modules/k8s_module.html