Spec-Zone.ru › Ansible 2.9

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
    Варианты:
  • 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, 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
строка
    Варианты:
  • absent
  • present ←
Определяет, должен ли объект быть создан, обновлён или удалён. При установке в 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 / обязательно
    Варианты:
  • no
  • yes
выполнять ли прерывание при ошибках валидации.
strict
boolean
    Варианты:
  • нет ←
  • yes
выполнять ли прерывание при передаче неожиданных свойств
version
-
версия Kubernetes для валидации. По умолчанию используется версия сервера Kubernetes
validate_certs
boolean
    Варианты:
  • no
  • yes
Проверять ли SSL-сертификаты API-сервера. Также можно указать через переменную окружения K8S_AUTH_VERIFY_SSL.

псевдонимы: verify_ssl
wait
boolean
добавлен в 2.8
    Варианты:
  • нет ←
  • yes
Ожидать ли, пока определенные виды ресурсов окажутся в желаемом состоянии. По умолчанию, модуль завершается после того, как 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
-
    Варианты:
  • yes
  • no
  • Unknown
Значение поля 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

Spec-Zone.ru

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