#kubernetes #yaml
#kubernetes #yaml
Вопрос:
Я новичок в YAML, и я хотел бы понять следующую часть.файл yaml:
version: "3.7"
services:
influxdb:
image: influxdb:alpine
environment:
INFLUXDB_DB: ft_services
INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin
volumes:
- datainfluxdb:/var/lib/influxdb
deploy:
restart_policy:
condition: on-failure
Насколько я знаю, в файле .yaml можно использовать 3 типа данных: скаляры, последовательности и сопоставления. Например, version: "3.7"
является скаляром. Но я не уверен, каковы следующие:
volumes:
- datainfluxdb:/var/lib/influxdb
environment:
INFLUXDB_DB: ft_services
INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin
Я не совсем понимаю, что это за данные и как они работают, может кто-нибудь дать мне подсказку?
Комментарии:
1. В дополнение к приведенным ниже ответам, могу ли я порекомендовать мой краткий учебник по YAML ? В нем рассматриваются некоторые типичные примеры. Обратная связь приветствуется 🙂
Ответ №1:
Списки
пример
volumes:
- data: /var/lib
other-field: "example"
- data: /etc
Каждая строка с отступом, начинающаяся с -
above, является началом элемента списка. В списке в примере есть два элемента, и весь список назван volumes
. Примером является список карт, но также допустим список скаляров.
Карты
пример
environment:
INFLUXDB_DB: ft_services
INFLUXDB_ADMIN_USER: admin
INFLUXDB_ADMIN_PASSWORD: admin
как вы писали, это карта с парами ключ-значение, и вся карта называется environment
.
Скаляры
Как вы писали, существуют также скаляры различных типов. Значение в кавычках, подобное "3.7"
a string
.
Комментарии:
1.
Lists
— приведенный пример на самом делеList of Maps
, который, я думаю, должен присутствовать как очень популярный в yaml, но как отдельный пример
Ответ №2:
Но я не уверен, каковы следующие:
-
Список карт:
volumes: - datainfluxdb:/var/lib/influxdb
Равный json:
{ "volumes": [ {"datainfluxdb": "/var/lib/influxdb"} ] }
-
Карта:
environment: INFLUXDB_DB: ft_services INFLUXDB_ADMIN_USER: admin INFLUXDB_ADMIN_PASSWORD: admin
Равный json:
{ "environment": { "INFLUXDB_DB": "ft_services", "INFLUXDB_ADMIN_USER": "admin", "INFLUXDB_ADMIN_PASSWORD": "admin" } }
-
И не упоминается в вашем вопросе, а простой список строк
accessModes: - ReadWriteOnce
Равный json:
{ "accessModes": [ "ReadWriteOnce" ] }
Эти 3 наиболее часто встречаются в Kubernetes.
На мой взгляд, в начале YAML становится наиболее запутанным, когда у вас есть вложенные структуры. Для облегчения понимания я предлагаю использовать что-то вроде https://onlineyamltools.com/convert-yaml-to-json преобразовать в JSON, который имеет более явный синтаксис структур.