可参考:菜鸟教程-yaml入门教程
1.1 yaml文件
1.1.1 简介
YAML(IPA: /ˈjæməl/)是一个可读性高的语言,参考了XML、C、Python等。
理解:Yet Another Markup Language
后缀:可以是.yml或者是.yaml,更加推荐.yaml,其实用任意后缀都可以,只是阅读性不强
1.1.2 基础
- 区分大小写
- 缩进表示层级关系,相同层级的元素左对齐
- 缩进只能使用空格,不能使用TAB
- "#"表示当前行的注释
- 是JSON文件的超级,两个可以转换
- —表示分隔符,可以在一个文件中定义多个结构
- 使用key: value,其中":"和value之间要有一个英文空格
1.1.3 Maps
(1) 简单
apiVersion: v1
kind: Pod
—表示分隔符,可选。要定义多个结构一定要分隔
apiVersion表示key,v1表示value,英文":"后面要有一个空格
kind表示key,Pod表示value
也可以这样写apiVersion: “v1”
转换为JSON格式
{
"apiVersion": "v1",
"kind": "Pod"
}
(2) 复杂
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
metadata表示key,下面的内容表示value,该value中包含两个直接的key:name和labels
name表示key,nginx-deployment表示value
labels表示key,下面的表示value,这个值又是一个map
app表示key,nginx表示value
相同层级的记得使用空间缩进,左对齐
转换为JSON格式:
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"name": "nginx-deployment",
"labels": {
"app": "nginx"
}
}
}
1.1.4 Lists
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container01
image: busybox:1.28
- name: myapp-container02
image: busybox:1.28
containers表示key,下面的表示value,其中value是一个数组
数组中有两个元素,每个元素里面包含name和image
image表示key,myapp-container表示value
转换成JSON格式
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "myapp",
"labels": {
"app": "myapp"
}
},
"spec": {
"containers": [{
"name": "myapp-container01",
"image": "busybox:1.28",
},
{
"name": "myapp-container02",
"image": "busybox:1.28",
}]
}
}