Подключение kubernetes.core.kubectl — выполнение задач в подах, работающих в Kubernetes.
Примечание
Этот плагин подключения входит в коллекцию kubernetes.core (версия 6.4.0).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install kubernetes.core. Для работы с этим плагином подключения могут потребоваться дополнительные компоненты. Подробности см. в разделе Требования.
Чтобы использовать его в плейбуке, укажите: kubernetes.core.kubectl.
Краткое описание
- Используйте команду kubectl exec, чтобы запускать задачи в подах, работающих на контейнерной платформе Kubernetes, а также помещать в них файлы и извлекать их.
Требования
На локальном узле-контроллере, который выполняет это подключение, необходимы следующие компоненты.
- kubectl (бинарный файл Go)
Параметры
Параметр | Комментарии |
|---|---|
ca_cert псевдонимы: kubectl_ssl_ca_cert string | Путь к сертификату ЦС, используемому для аутентификации в API. По умолчанию: Конфигурация:
|
client_cert псевдонимы: kubectl_cert_file string | Путь к сертификату, используемому для аутентификации в API. По умолчанию: Конфигурация:
|
client_key псевдонимы: kubectl_key_file string | Путь к файлу ключа, используемому для аутентификации в API. По умолчанию: Конфигурация:
|
kubectl_container string | Имя контейнера. Обязательный параметр, если под содержит несколько контейнеров. По умолчанию: Конфигурация:
|
kubectl_context string | Имя контекста, указанного в файле конфигурации K8s. По умолчанию: Конфигурация:
|
kubectl_extra_args string | Дополнительные аргументы, передаваемые в командную строку kubectl. Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию. По умолчанию: Конфигурация:
|
kubectl_host string | URL для доступа к API. По умолчанию: Конфигурация:
|
kubectl_kubeconfig string | Путь к файлу конфигурации kubectl. По умолчанию используется ~/.kube/config Конфигурацию можно передать в виде словаря. Добавлено в версии 2.4.0. По умолчанию: Конфигурация:
|
kubectl_local_env_vars dictionary добавлено в kubernetes.core 3.1.0 | Локальные переменные среды, передаваемые локально в командную строку kubectl. Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию. По умолчанию: Конфигурация:
|
kubectl_namespace string | Пространство имён пода. По умолчанию: Конфигурация:
|
kubectl_password string | Пароль для аутентификации в API. Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию. Рекомендуем вместо этого использовать варианты аутентификации на основе файлов. По умолчанию: Конфигурация:
|
kubectl_pod string | Имя пода. Обязательный параметр, если имя узла не совпадает с именем пода. По умолчанию: Конфигурация:
|
kubectl_token string | Токен Bearer для аутентификации в API. Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию. Рекомендуем вместо этого использовать варианты аутентификации на основе файлов. Конфигурация:
|
kubectl_username string | Имя пользователя для аутентификации в API. По умолчанию: Конфигурация:
|
validate_certs псевдонимы: kubectl_verify_ssl string | Проверять ли SSL-сертификат API-сервера. По умолчанию — true. По умолчанию: Конфигурация:
|
Примечание
Для каждого типа записей (переменная Ansible, переменная среды и т. д.) указанные выше параметры конфигурации упорядочены по возрастанию приоритета. Например, переменная, расположенная ниже в списке, переопределяет переменную, расположенную выше. Типы записей также упорядочены по возрастанию приоритета. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).
Примеры
- name: Run a command in a pod using local kubectl with kubeconfig file ~/.kube/config
hosts: localhost
gather_facts: no
vars:
ansible_connection: kubernetes.core.kubectl
ansible_kubectl_namespace: my-namespace
ansible_kubectl_pod: my-pod
ansible_kubectl_container: my-container
tasks:
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
- name: Run a command in a pod
ansible.builtin.command: echo "Hello, World!"
- name: Run a command in a pod using local kubectl with inventory variables
# Example inventory:
# k8s:
# hosts:
# foo.example.com:
# ansible_connection: kubernetes.core.kubectl
# ansible_kubectl_kubeconfig: /root/.kube/foo.example.com.config
# ansible_kubectl_pod: my-foo-pod
# ansible_kubectl_container: my-foo-container
# ansible_kubectl_namespace: my-foo-namespace
# bar.example.com:
# ansible_connection: kubernetes.core.kubectl
# ansible_kubectl_kubeconfig: /root/.kube/bar.example.com.config
# ansible_kubectl_pod: my-bar-pod
# ansible_kubectl_container: my-bar-container
# ansible_kubectl_namespace: my-bar-namespace
hosts: k8s
gather_facts: no
tasks:
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
- name: Run a command in a pod
ansible.builtin.command: echo "Hello, World!"
- name: Run a command in a pod using dynamic inventory
hosts: localhost
gather_facts: no
vars:
kubeconfig: /root/.kube/config
namespace: my-namespace
my_app: my-app
tasks:
- name: Get My App pod info based on label
kubernetes.core.k8s_info:
kubeconfig: "{{ kubeconfig }}"
namespace: "{{ namespace }}"
kind: Pod
label_selectors: app.kubernetes.io/name = "{{ my_app }}"
register: my_app_pod
- name: Get My App pod name
ansible.builtin.set_fact:
my_app_pod_name: "{{ my_app_pod.resources[0].metadata.name }}"
- name: Add My App pod to inventory
ansible.builtin.add_host:
name: "{{ my_app_pod_name }}"
ansible_connection: kubernetes.core.kubectl
ansible_kubectl_kubeconfig: "{{ kubeconfig }}"
ansible_kubectl_pod: "{{ my_app_pod_name }}"
ansible_kubectl_namespace: "{{ namespace }}"
- name: Run a command in My App pod
# be aware that the command is executed as the user that started the container
# and requires python to be installed in the image
ansible.builtin.command: echo "Hello, World!"
delegate_to: "{{ my_app_pod_name }}"
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/kubernetes/core/kubectl_connection.html