Приложения Kubernetes можно конфигурировать декларативно с помощью файлов YAML. Эти файлы позволяют нам легко управлять приложениями Kubernetes. Все файлы в Kubernetes часто пишутся на декларативных языках, таких как JSON или YAML. Независимо от того, какой синтаксис вы выберете, API преобразует предоставленный вами файл в конце в формат JSON, однако обычно вы найдете файлы, написанные на YAML, поскольку он прост для чтения и написания.
Файлы Kubernetes YAML включают такие структуры данных: пары ключ-значение, списки, карты, список карт и карта списков.
Четыре поля, которые обязательно должны присутствовать, это apiVersion
, kind
, metadata
и spec
(спецификация). Давайте рассмотрим и поймем каждый из них.
apiVersion:
Из этого поля понятно, что оно связано с API, и это действительно так. Это API, используемый для создания объекта Kubernetes. Значение apiVersion
обычно равно v1, которое содержит многие основные объекты. Оно также может быть app/v1, которое содержит объекты с некоторыми другими функциональными возможностями. Рассмотрим пример со значением v1.
apiVersion: v1
ПРИМЕЧАНИЕ: Чтобы синтаксис в YAML-файле был правильным, после двоеточия должен быть добавлен пробел.
kind:
Здесь мы определяем тип объекта, который хотим создать. Объекты, которые мы указываем здесь, связаны с apiVersion
, которую мы указали выше, и эта apiVersion
дает нам доступ к использованию различных объектов. Типы объектов могут быть Pod, Deployment, Service, Job или DemonSets.
kind: Pod
метаданные:
Метаданные объекта, который мы указали, предоставляют уникальные свойства этого объекта. Они могут содержать поля name, namespace и label. Таким образом, через них мы получаем информацию об объекте. Вот пример.
metadata:
name: nginx
спецификация:
Поскольку мы создаем объект, мы ожидаем, что объект будет что-то делать, поэтому здесь мы определяем работу объекта. Спецификация объекта также зависит от apiVersion
, указанной выше. Сюда входят контейнеры, требования к памяти, объемы хранения, сеть или другие детали, о которых Kubernetes необходимо знать. Здесь мы также можем указать более сложные свойства и дать более глубокую информацию.
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
ПРИМЕЧАНИЕ: Чтобы обеспечить распознавание списков и карт, убедитесь в правильности отступов.
Пример полного и простого YAML-файла kubernetes.
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Спасибо, что прочитали 🙂
Счастливого обучения!