Spec-Zone.ru › Ansible 2.8

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
    Варианты:
  • no
  • yes
Указывает, нужно ли добавлять хэш к имени ресурса для целей неизменяемости.
Применяется только к ресурсам 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
    Варианты:
  • json
  • merge
  • strategic-merge
Указывает, нужно ли переопределить подход к слиянию патчей по умолчанию на конкретный тип.
По умолчанию обычно используется стратегическое слияние.
Например, определения пользовательских ресурсов обычно не обновляются с помощью обычного стратегического слияния. Вы можете использовать merge если видите "формат стратегического слияния патча не поддерживается".
См. https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/#use-a-json-merge-patch-to-update-a-deployment
Требуется 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
строка
    Варианты:
  • absent
  • present ←
Определяет, должен ли объект быть создан, изменён или удалён. При установке в значение 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
    Выбор:
  • no
  • yes
Указывает, нужно ли проверять сертификаты 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

Spec-Zone.ru

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