Spec-Zone.ru › Ansible 2.11

Создание объекта K8S

  • Введение
  • Требования к сценарию
  • Предположения
  • Ограничения
  • Описание примера

    • Что ожидать
    • Отладка

Введение

Это руководство покажет вам, как использовать Ansible для создания объектов Kubernetes, таких как Pod, Deployments и Secrets.

Требования к сценарию

  • Программное обеспечение

    • Должен быть установлен Ansible 2.9.10 или более поздней версии
    • Модули Python openshift и kubernetes должны быть установлены на контроллере Ansible (или целевом узле, если выполняется не на локальном хосте)
    • Кластер Kubernetes
    • Бинарный файл Kubectl установлен на контроллере Ansible
  • Доступ / Учетные данные

    • Kubeconfig настроен с заданным кластером Kubernetes

Предположения

  • Пользователь имеет необходимый уровень авторизации для создания, удаления и обновления ресурсов в заданном кластере Kubernetes.

Ограничения

  • community.kubernetes 1.1.0 будет мигрировать в kubernetes.core

Описание примера

В этом случае/примере мы создадим Pod в заданном кластере Kubernetes. Следующий Ansible playbook демонстрирует основные параметры, необходимые для этого.

---
- hosts: localhost
  collections:
    - community.kubernetes
  tasks:
  - name: Create a pod
    k8s:
      state: present
      definition:
        apiVersion: v1
        kind: Pod
        metadata:
          name: "utilitypod-1"
          namespace: default
          labels:
            app: galaxy
        spec:
          containers:
          - name: utilitypod
            image: busybox

Поскольку Ansible использует API Kubernetes для выполнения действий, в данном случае мы будем подключаться напрямую к кластеру Kubernetes.

Для начала нам понадобятся некоторые сведения. Здесь вы используете Kubeconfig, который предварительно настроен в вашей машине. Файл Kubeconfig обычно находится в ~/.kube/config. Настоятельно рекомендуется хранить конфиденциальную информацию, такую как пароль, сертификаты пользователя, более безопасным способом, используя ansible-vault или с помощью учетных данных Ansible Tower.

Теперь вам нужно предоставить информацию о Pod, который будет создан. Используя параметр definition модуля community.kubernetes.k8s, вы задаёте PodTemplate. Этот PodTemplate идентичен тому, что вы предоставляете команде kubectl.

Что ожидать

  • После завершения этого playbook вы увидите некоторую выходную информацию в формате JSON. Эта информация показывает различные параметры, возвращаемые модулем и кластером о недавно созданном Pod.
{
    "changed": true,
    "method": "create",
    "result": {
        "apiVersion": "v1",
        "kind": "Pod",
        "metadata": {
            "creationTimestamp": "2020-10-03T15:36:25Z",
            "labels": {
                "app": "galaxy"
            },
            "name": "utilitypod-1",
            "namespace": "default",
            "resourceVersion": "4511073",
            "selfLink": "/api/v1/namespaces/default/pods/utilitypod-1",
            "uid": "c7dec819-09df-4efd-9d78-67cf010b4f4e"
        },
        "spec": {
            "containers": [{
                "image": "busybox",
                "imagePullPolicy": "Always",
                "name": "utilitypod",
                "resources": {},
                "terminationMessagePath": "/dev/termination-log",
                "terminationMessagePolicy": "File",
                "volumeMounts": [{
                    "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
                    "name": "default-token-6j842",
                    "readOnly": true
                }]
            }],
            "dnsPolicy": "ClusterFirst",
            "enableServiceLinks": true,
            "priority": 0,
            "restartPolicy": "Always",
            "schedulerName": "default-scheduler",
            "securityContext": {},
            "serviceAccount": "default",
            "serviceAccountName": "default",
            "terminationGracePeriodSeconds": 30,
            "tolerations": [{
                    "effect": "NoExecute",
                    "key": "node.kubernetes.io/not-ready",
                    "operator": "Exists",
                    "tolerationSeconds": 300
                },
                {
                    "effect": "NoExecute",
                    "key": "node.kubernetes.io/unreachable",
                    "operator": "Exists",
                    "tolerationSeconds": 300
                }
            ],
            "volumes": [{
                "name": "default-token-6j842",
                "secret": {
                    "defaultMode": 420,
                    "secretName": "default-token-6j842"
                }
            }]
        },
        "status": {
            "phase": "Pending",
            "qosClass": "BestEffort"
        }
    }
}
  • В приведенном выше примере, ‘changed’ имеет значение True, что сообщает о том, что создание Pod началось в заданном кластере. Это может занять некоторое время, в зависимости от вашей среды.

Отладка

Элементы для проверки

  • Проверьте, правильные ли значения, предоставленные для имени пользователя и пароля
  • Проверьте, заполнен ли Kubeconfig правильными значениями

См. также

Kubernetes Python client

Страница GitHub клиента Kubernetes Python

Kubernetes Python client - система отслеживания ошибок

Система отслеживания ошибок для Kubernetes Python client

OpenShift Python client

Страница GitHub клиента динамического API OpenShift

OpenShift Python client - система отслеживания ошибок

Система отслеживания ошибок для OpenShift Dynamic API client

Установка Kubectl

Руководство по установке Kubectl

Работа с playbook

Введение в playbook

Использование зашифрованных переменных и файлов

Использование Vault в playbook

© 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.11/scenario_guides/kubernetes_scenarios/scenario_k8s_object.html

Spec-Zone.ru

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