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