Модуль kubernetes.core.k8s — Управление объектами Kubernetes (K8s)
Примечание
Этот модуль входит в коллекцию kubernetes.core (версия 3.2.0).
Вы, возможно, уже установили эту коллекцию, если используете пакет ansible. Она не входит в ansible-core. Чтобы проверить установку, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install kubernetes.core. Для использования этого модуля необходимы дополнительные требования, см. Требования для получения подробностей.
Для использования в playbook укажите: kubernetes.core.k8s.
Описание
- Используйте клиент Kubernetes Python для выполнения операций CRUD с объектами K8s.
- Передайте определение объекта из исходного файла или встройте его. В примерах показано чтение файлов и использование шаблонов Jinja или файлов с вайл-шифрованием.
- Доступ ко всему спектру API K8s.
- Используйте модуль kubernetes.core.k8s_info для получения списка элементов об объекте типа
kind. - Авторизуйтесь с помощью файла конфигурации, сертификатов, пароля или токена.
- Поддерживает режим проверки.
Примечание
Этот модуль имеет соответствующий плагин действий.
Требования
Ниже приведены требования к хосту, на котором выполняется этот модуль.
- python >= 3.9
- kubernetes >= 24.2.0
- PyYAML >= 3.11
- jsonpatch
Параметры
Параметр | Комментарии |
|---|---|
api_key строка | Токен, используемый для аутентификации с API. Также может быть указан через переменную среды K8S_AUTH_API_KEY. |
api_version псевдонимы: api, version строка | Используется для указания версии API. Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса. Используется в сочетании с kind, name и namespace для идентификации конкретного объекта. Если предоставлено определение ресурса, значение apiVersion из resource_definition переопределит этот параметр. По умолчанию: |
append_hash логическое | Добавлять ли хэш к имени ресурса для целей неизменяемости Применяется только к ресурсам ConfigMap и Secret Параметр будет проигнорирован для других типов ресурсов Для генерации хэша необходимо полное определение объекта — это означает, что удаление объекта, созданного с append_hash, будет работать только в том случае, если тот же объект передается со значением state=absent (или просто используйте state=absent с именем, включающим сгенерированный хэш и append_hash=no) Варианты:
|
apply логическое |
исключает Варианты:
|
ca_cert псевдонимы: ssl_ca_cert путь | Путь к сертификату CA, используемому для аутентификации с API. Для избежания ошибок проверки сертификатов необходимо предоставить цепочку сертификатов. Также может быть указан через переменную среды K8S_AUTH_SSL_CA_CERT. |
client_cert псевдонимы: cert_file путь | Путь к сертификату, используемому для аутентификации с API. Также может быть указан через переменную среды K8S_AUTH_CERT_FILE. |
client_key псевдонимы: key_file путь | Путь к файлу ключа, используемому для аутентификации с API. Также может быть указан через переменную среды K8S_AUTH_KEY_FILE. |
context строка | Имя контекста, найденного в файле конфигурации. Также может быть указано через переменную среды K8S_AUTH_CONTEXT. |
continue_on_error логическое добавлен в kubernetes.core 2.0.0 | Продолжать ли при ошибках создания/удаления, когда определено несколько ресурсов. Это не влияет на этап валидации, который контролируется параметром Варианты:
|
delete_all псевдонимы: all логическое добавлен в kubernetes.core 2.5.0 | Когда этот параметр установлен в true и state=absent, модуль удалит все ресурсы указанного типа ресурса в запрошенном пространстве имен. Игнорируется, когда Необходим параметр Этот параметр может использоваться с Варианты:
|
delete_options словарь добавлен в kubernetes.core 1.2.0 | Настройка поведения при удалении объекта. Используется только при state=absent. |
|
gracePeriodSeconds целое число |
Указывает, сколько секунд ожидать перед принудительным завершением. Реализовано только для ресурсов Pod. Если не указано, будет использоваться стандартный интервал ожидания для типа объекта. |
|
preconditions словарь |
Указывает условие, которое должно быть выполнено для продолжения удаления. |
|
resourceVersion строка |
Указывает версию ресурса целевого объекта. |
|
uid строка |
Указывает UID целевого объекта. |
|
propagationPolicy строка |
Используется для управления тем, как удаляются зависимые объекты. Если не указано, будет использоваться политика по умолчанию для типа объекта. Она может варьироваться в зависимости от типа объекта. Варианты:
|
force boolean | Если установлено значение Варианты:
|
generate_name string добавлен в kubernetes.core 2.3.0 | Используется для указания основы имени объекта, к которому автоматически будут добавлены случайные символы на сервере для генерации уникального имени. Этот параметр игнорируется, когда state не установлен в значение Если предоставлено определение ресурса, значение metadata.generateName из resource_definition переопределит этот параметр. Если определение ресурса предоставлено и содержит metadata.name, этот параметр игнорируется. Взаимоисключающее с |
список / элементы=строка добавлен в kubernetes.core 2.5.0 | Скрыть поля, соответствующие этому параметру, в результате Пример может быть Поддерживаются только определения полей, которые не ссылаются на элементы списка (например, |
host строка | Указывает URL для доступа к API. Также может быть указан через переменную среды K8S_AUTH_HOST. |
impersonate_groups список / элементы=строка добавлен в kubernetes.core 2.3.0 | Группа(ы) для имитации при выполнении операции. Также может быть указана через переменную среды K8S_AUTH_IMPERSONATE_GROUPS. Пример: Group1,Group2 |
impersonate_user строка добавлен в kubernetes.core 2.3.0 | Имя пользователя для имитации при выполнении операции. Также может быть указан через переменную среды K8S_AUTH_IMPERSONATE_USER. |
kind строка | Используется для указания модели объекта. Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса. Используется совместно с api_version, name и namespace для идентификации конкретного объекта. Если предоставлено определение ресурса, значение kind из resource_definition переопределит этот параметр. |
kubeconfig любой | Путь к существующему файлу конфигурации Kubernetes. Если не указано и не указаны другие параметры подключения, Kubernetes-клиент попытается загрузить файл конфигурации по умолчанию из ~/.kube/config. Также может быть указан через переменную среды K8S_AUTH_KUBECONFIG. Несколько файлов конфигурации Kubernetes могут быть предоставлены с разделителем «;» для платформы Windows или «:» для других платформ. Конфигурация Kubernetes может быть предоставлена в виде словаря. Эта функция требует версии python kubernetes-клиента >= 17.17.0. Добавлено в версии 2.2.0. |
label_selectors список / элементы=строка добавлен в kubernetes.core 2.2.0 | Селектор (запрос по меткам) для фильтрации. |
merge_type список / элементы=строка | Способ переопределения подхода слияния по умолчанию на определённый тип. По умолчанию обычно используется стратегическое слияние. Например, определения пользовательских ресурсов обычно не обновляются обычным стратегическим слиянием. Возможно, вам потребуется использовать Если указано несколько Взаимоисключающее с merge_type=json устарело и будет удалено в версии 4.0.0. Пожалуйста, используйте kubernetes.core.k8s_json_patch вместо него. Варианты:
|
name строка | Используется для указания имени объекта. Используется для создания, удаления или поиска объекта без предоставления полного определения ресурса. Используется совместно с api_version, kind и namespace для идентификации конкретного объекта. Если предоставлено определение ресурса, значение metadata.name из resource_definition переопределит этот параметр. |
namespace строка | Используется для указания пространства имён объекта. Полезно при создании, удалении или поиске объекта без предоставления полного определения ресурса. Используется совместно с api_version, kind и name для идентификации конкретного объекта. Если предоставлено определение ресурса, значение metadata.namespace из resource_definition переопределит этот параметр. |
no_proxy строка добавлен в kubernetes.core 2.3.0 | Список хостов/доменов/IP/CIDR, разделённых запятыми, которые не должны проходить через прокси. Также может быть указан через переменную среды K8S_AUTH_NO_PROXY. Обратите внимание, что этот модуль не подхватывает типичные настройки прокси из среды (например, NO_PROXY). Эта функция требует kubernetes>=19.15.0. При использовании kubernetes-библиотеки версии менее 19.15.0, возникнут ошибки, даже если параметр no_proxy задан правильно. Пример значения: «localhost,.local,.example.com,127.0.0.1,127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16» |
password строка | Указывает пароль для аутентификации с API. Также может быть указан через переменную среды K8S_AUTH_PASSWORD. Подробнее о применении этого параметра см. описание параметра |
persist_config boolean | Сохранять ли токен обновления конфигурации 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 string | URL HTTP-прокси, который нужно использовать для подключения. Также можно указать через переменную окружения K8S_AUTH_PROXY. Обратите внимание, что этот модуль не подхватывает стандартные настройки прокси из среды (например, HTTP_PROXY). |
proxy_headers dictionary добавлен в kubernetes.core 2.0.0 | Заголовок, используемый для HTTP-прокси. Документацию можно найти здесь https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html?highlight=proxy_headers#urllib3.util.make_headers. |
|
basic_auth string |
Идентификатор пользователя:пароль, разделенные двоеточием, для заголовка базовой аутентификации. Также можно указать через переменную окружения K8S_AUTH_PROXY_HEADERS_BASIC_AUTH. |
|
proxy_basic_auth string |
Идентификатор пользователя:пароль, разделенные двоеточием, для заголовка базовой аутентификации прокси. Также можно указать через переменную окружения K8S_AUTH_PROXY_HEADERS_PROXY_BASIC_AUTH. |
|
user_agent string |
Строка, представляющая пользователя-агента, например, foo/1.0. Также можно указать через переменную окружения K8S_AUTH_PROXY_HEADERS_USER_AGENT. |
resource_definition алиасы: definition, inline string | Укажите валидное определение YAML (в виде строки, списка или словаря) для объекта при создании или обновлении. ПРИМЕЧАНИЕ: kind, api_version, name и namespace будут перезаписаны соответствующими значениями, найденными в предоставленном resource_definition. |
server_side_apply dictionary добавлен в kubernetes.core 2.3.0 | При установке этого параметра применение выполняется на сервере, а не на клиенте. Игнорируется, если Этот параметр требует «kubernetes >= 19.15.0». |
|
field_manager string / обязательно |
Имя менеджера, используемого для отслеживания владения полями. |
|
force_conflicts boolean |
Конфликт — это специальная ошибка состояния, которая возникает, когда операция Server Side Apply пытается изменить поле, которое другой пользователь также претендует на управление. При установке в значение True серверное применение принудительно применит изменения к конфликтам. Варианты:
|
src path | Укажите путь к файлу, содержащему валидное определение YAML объекта или объектов для создания или обновления. Взаимоисключающий с resource_definition. ПРИМЕЧАНИЕ: kind, api_version, name и namespace будут перезаписаны соответствующими значениями, найденными в конфигурации, считанной из файла src. Считывает из локальной файловой системы. Для чтения из файловой системы контроллера Ansible, включая зашифрованные файлы, используйте плагин поиска файлов или плагин поиска шаблонов в сочетании с фильтром from_yaml и передайте результат в resource_definition. См. примеры ниже. URL-адрес файлов манифеста, которые можно использовать для создания ресурса. Добавлено в версии 2.4.0. Взаимоисключающий с template в случае модуля kubernetes.core.k8s. |
state string | Определяет, следует ли создавать, вносить изменения или удалять объект. При установке в значение
Варианты:
|
template any | Укажите валидный файл шаблона YAML для объекта при создании или обновлении. Значение можно указать в виде строки или словаря. Параметр принимает несколько файлов шаблонов. Добавлено в версии 2.0.0. Взаимоисключающий с Файлы шаблонов должны присутствовать в файловой системе контроллера Ansible. Дополнительные параметры можно указать с помощью словаря. Действительные дополнительные параметры -
|
логин строка | Укажите логин для аутентификации с API. Также можно указать через переменную среды K8S_AUTH_USERNAME. Обратите внимание, что это работает только с кластерами, настроенными для использования HTTP Basic Auth. Если ваш кластер имеет другой метод аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует обратиться к модулю community.okd.k8s_auth, так как он может быть полезен. |
валидировать словарь | Как (если вообще) валидировать определение ресурса по схеме Kubernetes. Требуется модуль kubernetes-validate python. |
|
прерывать_при_ошибке_валидации булево |
Прерывать выполнение при ошибках валидации. Варианты:
|
|
строго булево |
Прерывать при передаче неожиданных свойств Варианты:
|
|
версия строка |
Версия Kubernetes для валидации. По умолчанию используется версия сервера Kubernetes |
проверять_сертификаты алиасы: проверять_ssl булево | Проверять ли сертификаты SSL API-сервера. Можно также указать через переменную среды K8S_AUTH_VERIFY_SSL. Варианты:
|
ждать булево | Дожидаться, пока определенные типы ресурсов достигнут желаемого состояния. По умолчанию модуль завершает работу после получения запроса Kubernetes. Реализовано для Для типов ресурсов без реализации Варианты:
|
условие_ожидания словарь | Указывает пользовательское условие статуса для ожидания. Игнорируется, если |
|
причина строка |
Значение поля reason в требуемом условии. Например, если Возможные причины в условии зависят от типа ресурса в Kubernetes. См. документацию API поля status для заданного ресурса, чтобы увидеть возможные значения. |
|
статус строка |
Значение поля status в требуемом условии. Например, если Варианты:
|
|
тип строка |
Тип условия для ожидания. Например, для ресурса Необходимо, если вы указываете Если оставлено пустым, поле Возможные типы условий зависят от типа ресурса в Kubernetes. См. документацию API поля status для заданного ресурса, чтобы увидеть возможные значения. |
задержка_ожидания целое | Количество секунд, ожидаемое между проверками. По умолчанию: |
таймаут_ожидания целое | Время в секундах, которое нужно подождать, пока ресурс достигнет желаемого состояния. Игнорируется, если По умолчанию: |
Примечания
Примечание
- Чтобы избежать ошибок валидации сертификатов SSL, когда
validate_certsравно True, полная цепочка сертификатов API-сервера должна быть предоставлена черезca_certили в файле kubeconfig.
Примеры
- name: Create a k8s namespace
kubernetes.core.k8s:
name: testing
api_version: v1
kind: Namespace
state: present
- name: Create a Service object from an inline definition
kubernetes.core.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
kubernetes.core.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
kubernetes.core.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.
kubernetes.core.k8s:
state: present
definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml }}"
- name: >-
(Alternative) Read definition file from the Ansible controller file system.
In this case, the definition file contains multiple YAML documents, separated by ---.
If the definition file has been encrypted with Ansible Vault it will automatically be decrypted.
kubernetes.core.k8s:
state: present
definition: "{{ lookup('file', '/testing/deployment.yml') | from_yaml_all }}"
- name: Read definition template file from the Ansible controller file system
kubernetes.core.k8s:
state: present
template: '/testing/deployment.j2'
- name: Read definition template file from the Ansible controller file system that uses custom start/end strings
kubernetes.core.k8s:
state: present
template:
path: '/testing/deployment.j2'
variable_start_string: '[['
variable_end_string: ']]'
- name: Read multiple definition template file from the Ansible controller file system
kubernetes.core.k8s:
state: present
template:
- path: '/testing/deployment_one.j2'
- path: '/testing/deployment_two.j2'
variable_start_string: '[['
variable_end_string: ']]'
- name: fail on validation errors
kubernetes.core.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
kubernetes.core.k8s:
state: present
definition: "{{ lookup('template', '/testing/deployment.yml') | from_yaml }}"
validate:
fail_on_error: no
strict: yes
# Download and apply manifest
- name: Download metrics-server manifest to the cluster.
ansible.builtin.get_url:
url: https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
dest: ~/metrics-server.yaml
mode: '0664'
- name: Apply metrics-server manifest to the cluster.
kubernetes.core.k8s:
state: present
src: ~/metrics-server.yaml
# Wait for a Deployment to pause before continuing
- name: Pause a Deployment.
kubernetes.core.k8s:
definition:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example
namespace: testing
spec:
paused: True
wait: yes
wait_condition:
type: Progressing
status: Unknown
reason: DeploymentPaused
# Patch existing namespace : add label
- name: add label to existing namespace
kubernetes.core.k8s:
state: patched
kind: Namespace
name: patch_namespace
definition:
metadata:
labels:
support: patch
# Create object using generateName
- name: create resource using name generated by the server
kubernetes.core.k8s:
state: present
generate_name: pod-
definition:
apiVersion: v1
kind: Pod
spec:
containers:
- name: py
image: python:3.7-alpine
imagePullPolicy: IfNotPresent
# Server side apply
- name: Create configmap using server side apply
kubernetes.core.k8s:
namespace: testing
definition:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
apply: yes
server_side_apply:
field_manager: ansible
# Delete all Deployment from specified namespace
- name: Delete all Deployment from specified namespace
kubernetes.core.k8s:
api_version: apps/v1
namespace: testing
kind: Deployment
delete_all: true
Значения возврата
Общие значения возврата документированы здесь, следующие — поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
result сложное | Созданный, изменённый или в ином случае существующий объект. Будет пустым в случае удаления. Возвращается при: успехе |
|
api_version строка |
Версионированная схема этого представления объекта. Возвращается при: успехе |
|
duration целое число |
время выполнения задачи в секундах Возвращается при: когда Пример: |
|
error сложное |
ошибка при попытке создания/удаления объекта. Возвращается при: ошибке |
|
items список / элементы=строка |
Возвращается только при передаче нескольких yaml-документов в src или resource_definition Возвращается при: когда resource_definition или src содержат список объектов |
|
kind строка |
Представляет REST-ресурс, который представляет этот объект. Возвращается при: успехе |
|
metadata сложное |
Стандартные метаданные объекта. Включают имя, пространство имён, аннотации, метки и т.д. Возвращается при: успехе |
|
spec сложное |
Уникальные атрибуты объекта. Будут различаться в зависимости от api_version и kind. Возвращается при: успехе |
|
status сложное |
Текущие данные статуса объекта. Возвращается при: успехе |
Ссылки на коллекции
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/collections/kubernetes/core/k8s_module.html