Создание объекта 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