YAML для докеров и кубернетов: основы

Вы можете получить все файлы в моем репозитории GitHub: Saad/DevOps-Material

Что такое YAML?

  • YAML похож на A, B, C и D DevOps, поскольку он необходим в Kubernetes, облачных вычислениях и многих других программах, которые ежедневно используются в области DevOps.
  • Он очень похож на JSON и XML. Расширение файла YAML может быть .YAML или .YML, оба работают.
  • Ранее полной формой YAML был «Еще один язык разметки», но теперь он был изменен на «YAML — это не язык разметки». Поскольку это уже не просто язык разметки.
  • YAML — это не язык программирования, а формат данных (например, JSON или XML), который используется для обмена данными в структурированном и удобочитаемом формате.
  • YAML может хранить только данные, а не команды.
  • Он позволяет избежать дублирования данных, используя один и тот же файл для нескольких проектов на разных носителях.

  • YAML очень полезен для переноса данных, полученных в результате сериализации и десериализации данных.

Вы спросите, что такое сериализация и десериализация?

Предположим, у вас есть 3 разных проекта на 3 разных носителях, но вам нужно, чтобы все они потребляли одни и те же данные без репликации данных путем создания конкретных данных для всех проектов.

Вот где эти два процесса вступают в действие.

  • Сериализация — это процесс преобразования объектов данных в сложную структуру данных, которую затем можно десериализовать и использовать в соответствии с нашими потребностями.

Где он используется?

  • Он используется в файлах конфигурации для Docker, Kubernetes и т. д.
  • Он также используется в кэшах, журналах и т. д.
  • Мы можем предположить, что он подходит для использования там, где когда-либо требуется передача данных между носителями, он даже может заменить XML и JSON для этого экземпляра.

Преимущества YAML:

  • Он читается человеком и очень легко читается.
  • Он имеет строгий синтаксис, обеспечивающий соблюдение принятого соглашения о константах. Отступ имеет большое значение.
  • Легко конвертируется в JSON и XML.
  • YAML используется многими популярными языками программирования и программным обеспечением.
  • Доказано, что YAML очень эффективен при представлении сложных данных.

После основного введения в YAML мы теперь переходим к одной из самых важных частей, делая это практически!

Основы YAML:

Символы слева — это ключи, а справа у нас есть значение этого соответствующего ключа.

#Key value Pairs
"Car" : "A vehicle with four wheels"
18 : "Legal age"

Двоеточие (:) играет очень важную роль в YAML, оно используется почти в каждом отдельном случае.

Чтобы создать простой список в YAML, мы используем тире/дефис (-), за которым следует пробел.

#List
- Bugatti
- Tesla
- Honda
- Toyota

#With a key
Fruits:
- Apple
- Mango
- Plum

Если есть хотя бы один неуместный отступ, весь список станет недействительным.

#Incorrect Syntax for List
#Identation is very important, that is why this list is incorrect.
- Bugatti
  - Tesla
- Honda
- Toyota

Чтобы сэкономить строки и улучшить читаемость, мы можем прибегнуть к другому способу представления списка.

#Another Valid way to write Lists
Fruits : [Mango, Apple, Plum]

— — — : (три тире) используются для разделения документов в потоке.

… : (Три точки) Обозначает конец документа.

Типы данных в YAML

Как и в Python, нам не нужно явно указывать тип данных, это автоматически делается YAML, но мы также можем указать тип данных, если захотим.

Строки

#Three Ways to represent String value
Name : "Saad Mansuri"
Age : Twenty-Two
Country : 'India'

#Mutli-Line. All the sentence on a different line
Intro : |
This is an intro to YAML.
A Data Format which is Similar to JSON and XML
Used to transfer Data to multiple projects

#Writing a Single Line on multiple lines
SingleLineString: >
All of this
Will be
on a single line.

#Specifying the datatype
ExplicitString : !!str "I am clearly a string!"

Целое число

One : 1

#Specifying the data type
One : !!int 1
negative : !!int -10
exponentials : 3.03E45
NumbersWithComma : !!int +12_300 #12,300

Плавающая

Profitpercent : !!float 200.34
not A Number : .nan

Нет

Null может быть представлен как Null, null, ~ (тильда).

Missing Data : !!null Null

~ : Tilde also represents null

логическое значение

FalseStates : !!bool false
TrueState : !!bool true

Расширенные типы данных

Последовательность

Точно так же, как у нас есть списки в других языках программирования, у нас есть последовательности в YAML.

Последовательность с пустым элементом называется «разреженной последовательностью».

Тип данных — «seq».

car : !!seq
- Colour
- Wheels
- Price
- Name

#Sparse Sequence
#Sequence with empty element(s) are called Sparse Sequence
Free Car: !!se
- Colour
- Wheels
-
- Name

Вложенная последовательность

Последовательность внутри последовательности является вложенной последовательностью.

Будьте очень осторожны с углублениями!

-
 - Cars
 - Bikes
 - Scooters
 - Trucks
-
 - Keyboard
 - Mouse
 - Monitor
 - CPU

Представление JSON будет

[
  [
    "Cars",
    "Bikes",
    "Scooters",
    "Trucks"
  ],
  [
    "Keyboard",
    "Mouse",
    "Monitor",
    "CPU"
  ]
]

Карты

Пары ключ-значение называются картами

Тип данных — «карта».

#Nested Maps
Vehicle : Cars
parts :
Wheels : "Plain"
Colour : "Black"
Price : 100000
Owner : ~

#Another way to Represent
parts : {Wheels : "Plain",Colour : "Black",Price : 100000,Owner : ~}

Пары

Пары могут иметь повторяющиеся ключи

Тип данных — «пары»

pair example: !!pairs
- Name : David
- Name : David
- Name : John

#Another way to represent
pair example: !!pairs [ Name : David, Name : David, Name : John]

Установить

Набор не может иметь повторяющийся ключ

Тип данных «установлен»

people : !!set
? David
? Mary
? John

Якоря

#Anchors for Reusing properties

Parts : &parts
Body: true
wheels : plain


Car :
Name : "Honda"
<<: *parts


#Car is Same as
Car :
Name : "Honda"
Body: true
wheels : plain

#Some or All Properties can be overriden by explicitly mentioning new value for the key
Car2 :
Name : "Toyota"
<<: *parts
wheels : "Graphics"

Попробуйте это самостоятельно, и вы также можете проверить действительность вашего YAML-файла здесь

На сегодня все, этого достаточно для тех, кто только начинает работать с докером и Kubernetes. По ходу дела мы изучим другие способы использования YAML.

Я делаю серию DevOps от новичков до продвинутых. Подписывайтесь и давайте учиться вместе!

Вы можете получить все файлы в моем репозитории GitHub: Saad/DevOps-Material