Spec-Zone.ru › Ansible

Подключение 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.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_SSL_CA_CERT
  • Переменная: ansible_kubectl_ssl_ca_cert
  • Переменная: ansible_kubectl_ca_cert

client_cert

псевдонимы: kubectl_cert_file

string

Путь к сертификату, используемому для аутентификации в API.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_CERT_FILE
  • Переменная: ansible_kubectl_cert_file
  • Переменная: ansible_kubectl_client_cert

client_key

псевдонимы: kubectl_key_file

string

Путь к файлу ключа, используемому для аутентификации в API.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_KEY_FILE
  • Переменная: ansible_kubectl_key_file
  • Переменная: ansible_kubectl_client_key

kubectl_container

string

Имя контейнера.

Обязательный параметр, если под содержит несколько контейнеров.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_CONTAINER
  • Переменная: ansible_kubectl_container

kubectl_context

string

Имя контекста, указанного в файле конфигурации K8s.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_CONTEXT
  • Переменная: ansible_kubectl_context

kubectl_extra_args

string

Дополнительные аргументы, передаваемые в командную строку kubectl.

Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_EXTRA_ARGS
  • Переменная: ansible_kubectl_extra_args

kubectl_host

string

URL для доступа к API.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_HOST
  • Переменная среды: K8S_AUTH_SERVER
  • Переменная: ansible_kubectl_host
  • Переменная: ansible_kubectl_server

kubectl_kubeconfig

string

Путь к файлу конфигурации kubectl. По умолчанию используется ~/.kube/config

Конфигурацию можно передать в виде словаря. Добавлено в версии 2.4.0.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_KUBECONFIG
  • Переменная: ansible_kubectl_kubeconfig
  • Переменная: ansible_kubectl_config

kubectl_local_env_vars

dictionary

добавлено в kubernetes.core 3.1.0

Локальные переменные среды, передаваемые локально в командную строку kubectl.

Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию.

По умолчанию: {}

Конфигурация:

  • Переменная: ansible_kubectl_local_env_vars

kubectl_namespace

string

Пространство имён пода.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_NAMESPACE
  • Переменная: ansible_kubectl_namespace

kubectl_password

string

Пароль для аутентификации в API.

Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию. Рекомендуем вместо этого использовать варианты аутентификации на основе файлов.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_PASSWORD
  • Переменная: ansible_kubectl_password

kubectl_pod

string

Имя пода.

Обязательный параметр, если имя узла не совпадает с именем пода.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_POD
  • Переменная: ansible_kubectl_pod

kubectl_token

string

Токен Bearer для аутентификации в API.

Обратите внимание: эти данные передаются непосредственно в командной строке и могут раскрыть конфиденциальную информацию. Рекомендуем вместо этого использовать варианты аутентификации на основе файлов.

Конфигурация:

  • Переменная среды: K8S_AUTH_TOKEN
  • Переменная среды: K8S_AUTH_API_KEY
  • Переменная: ansible_kubectl_token
  • Переменная: ansible_kubectl_api_key

kubectl_username

string

Имя пользователя для аутентификации в API.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_USERNAME
  • Переменная: ansible_kubectl_username
  • Переменная: ansible_kubectl_user

validate_certs

псевдонимы: kubectl_verify_ssl

string

Проверять ли SSL-сертификат API-сервера. По умолчанию — true.

По умолчанию: ""

Конфигурация:

  • Переменная среды: K8S_AUTH_VERIFY_SSL
  • Переменная: ansible_kubectl_verify_ssl
  • Переменная: ansible_kubectl_validate_certs

Примечание

Для каждого типа записей (переменная 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 }}"

Авторы

  • xuxinkun (@xuxinkun)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)

© 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

Spec-Zone.ru

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