Yaml语法规则
-
大小写敏感
-
使用缩进表示层级关系
-
缩进时不允许使用Tab键,只允许使用空格
-
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
-
#号表示注释,从这个字符一直到行尾,都会被解析器忽略
Yaml数据结构
1.yaml支持三种数据结构
-
对象:键值对的集合,又称为映射(mapping) /哈希(hashes) /字典(dictionary)
-
数组:一组次序排列的值,又称为序列(sequence) /列表(list)
-
纯量:(scalars) 单个的,不可两分的值
2.对象表示
对象就是一组键值对,使用冒号结构表示 :
role: web
env: test
3.数组表示
数组就是一个键可以对应多个值,如下
1 2 3 4 5 6 |
command: - wget - '-O' - "/work-dir/index.html" - http:kubernetes.io |
4.复合结构
复合结构是对象和数组的结合表现形式,在一个对象中嵌套多个数组
1 2 3 4 5 6 |
containers: - name: nginx image: nginx:latest - name: php image: php:latest |
5.纯量表示
纯量是最基本的,不可再分的值
- 字符串 — "我是字符串"
- 布尔值 — true and false
- 整数 — 10
- 浮点数 — 10.30
- Null — null
- 时间 — 23:59:29
- 日期 — 1976-07-31
Yaml多行字符串
多行字符串可以使用
| 管道符号来保留换行
- 加号表示保留文字末尾的换行
- 减号表示删除字符串末尾的换行
1 2 3 4 5 6 7 |
data: nginx-conf: |- #这里表示换行和删除字符串末尾的换行 server { listen 80; server_name localhost; } |
Yaml多个配置写到一个文件内
假如我们要在同一个yaml文件中做好几件不同的事情,这个时候可以使用 — 符号来区分为多个区块。
例如我们要使用yaml文件来创建 deploy控制器和service,我们可以这样写
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
apiVersion:v1 kind: Deployment metadata: ... spec: ... --- #使用---来区分两件事情 apiVersion:v1 kind: Service metadata: ... spec: ... |