Yaml语法

学习自:

​K8s中yaml文件详解(超详细)​_yaml list-CSDN博客

总结

yaml有两种格式:Map、List,与JSON一致。

用缩进代表层级,相同缩进代表的层级相同

Map:键值对

K:V样式来表示键值对信息,例如:

apiVersion: V1
kind: Pod

JSON格式下就表示为:

{
  "apiVersion":"V1",
  "kind":"Pod"
}

List:列表、数组

List的标志是缩进的破折号(-),一个破折号就代表一个List中的一个元素:

city:
  -beijing
  -shanghai
  -shenzhen
  -guangzhou

JSON格式下,就表示为:

{
  "city":["beijing","shanghai","shenzhen","guangzhou"]
}

0、前言

YAML文件是一种类似JSON的配置文件,相比JSON,YAML使用起来更简洁、强大、方便。

它实质上是一种通用的数据串行化格式。

1、语法规则

  • 区分大小写
  • 缩进表明层级同一缩进代表同一层级
  • 只允许空格缩进,不允许TAB;
  • 可以缩进任意空格数,只要保证同级的缩进空格数一样
  • #注释
  • 两种结构类型:Map和List

Map:键值对

K:V样式来表示键值对信息,例如:

apiVersion: V1
kind: Pod

其中V也可以是另一个Map

apiVersion: v1
kind: Pod
metadata:
  name: kube100-site
  labels:
    app:web

该Yaml文件中,metadata这个K对应的V为一个Map,嵌套的labels的V也是一个Map。

实际使用中可以根据情况进行多层嵌套。

YAML文件根据缩进数来知道内容间的关联,只要保证同一级内容的缩进空格数一致即可。例如,name和labels是同级缩进,因此YAML处理器知道它们属于同一Map。而app由于在labels下缩进更大,因此app是labels的V。

List:列表、数组

List的标志是缩进的破折号(-),一个破折号就代表一个List中的一个元素:

city:
  -beijing
  -shanghai
  -shenzhen
  -guangzhou

这里的YAML文件在JSON格式下,就表示为:

{
  "city":["beijing","shanghai","shenzhen","guangzhou"]
}

有时候会存在List的元素为Map,Map的V为List的情况。区分依据为:

  • 一个破折号就代表一个List的元素;
  • 一个破折号下边跟了多个K:V,说明这多个K:V共同构成了一个Map,这个Map就是List的这个元素

从一个破折号到下个破折号之间的所有项都属于同一个List元素,新的破折号则代表新的List元素;

例如

复制代码
apiVersion: v1
kind: Pod
metadata:
  name: kube100-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: flaskapp-demo
      image: jcdemo/flaskapp
      ports: 8080
复制代码

这个YAML文件中,containers的V就是由两个List元素组成的,分别是上图标红、标蓝的部分,而这两个List元素又各是一个Map。

如果用json文件表示,写为:

{
    ……
    "spec":{
        "containers":[{"name":"front-end","image":"nginx","ports":{["containerPort":0]}},
              {"name":"flaskapp-demo","image":"jcdemo/flaskapp","ports":8080}] }

 

posted @   ShineLe  阅读(193)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示