刚学习Kubernetes的同学很多时候在编写Yaml文件的时候总是会出现各样的格式问题,导致在调试的时候浪费大量时间和精力。为了方便,我采用了vim的两个插件来辅助编写Yaml编排文件。
操作
1. 安装VIM插件
插件一: SirVer/ultisnips
用过Sublime的同学肯定知道Text中的代码块,可以很方便的插入预制的一些语法结构,极大提高了编程效率。在Vim中也有一个类似的代码块引擎,UltiSnips就是其中之一。
插件二: honza/vim-snippets
UltiSnips只是个引擎,需要编写一些预制代码块才能满足我们的需要,Github上有个项目涵盖了大部分编程语言的代码块,可以在honza/vim-snippets下载。
插件安装完成后在.vim目录下创建一个UltiSnips目录,这个目录就是存放代码块的目录。
2. Kubernetes代码块
下载andrewstuart/vim-kubernetes,将里面UltiSnips目录下的yaml.snippets文件移动到.vim目录,这样就可以使用了。
3. 自定义代码块
有些时候,我们需要根据自己的需求不能满足的,就需要自己修改yaml.snippets文件了。
比如我这里改了几个小块。
snippets | 缩写 |
---|---|
容器健康检查 | probe |
容器生命周期 | life |
Empty Volume | evolume |
HostPath Volume | hvolume |
ConfigMap Volume | cvolume |
挂载Volumes | mount |
ConfigMap 挂载文件 | mountfile |
代码块如下
snippet probe "Liveness/Readiness Probes" !b
livenessProbe: &probe
initialDelaySeconds: ${1:1}
periodSeconds: 3
timeoutSeconds: 2
httpGet:
port: ${2:80}
path: ${3:/health_check}
httpHeaders:
- name: ${4:Host}
value: ${5}
exec:
command:
- /bin/sh
- -c
- echo "test"
tcpSocket:
port: 80
readinessProbe: *probe $0
initialDelaySeconds: ${1:1}
periodSeconds: 3
timeoutSeconds: 2
httpGet:
port: ${2:80}
path: ${3:/health_check}
- name: ${4:Host}
value: ${5}
exec:
command:
- /bin/sh
- -c
- echo "test"
tcpSocket:
port: 80
endsnippet
snippet evolume "Empty Volume" !b
- name: ${1:name}
emptyDir: {}
endsnippet
snippet hvolume "HostPath Volume" !b
- name: ${1:name}
hostPath:
path: /home/data
endsnippet
snippet cvolume "ConfigMap Volume" !b
- name: ${1:name}
configMap:
name: ${2: name}
defaultMode: 420
items:
- key:
path:
endsnippet
snippet mount "Mount Volumes" !b
volumeMounts:
- mountPath: ${2:/app_conf/}
name: ${1:name}
endsnippet
snippet mountfile "Mount Volumes as File" !b
volumeMounts:
- mountPath: ${3:/app_conf/app1.config}
subPath: ${2:app1.config}
name: ${1:name}
endsnippet
snippet life "Container hooks" !b
lifecycle:
preStop:
exec:
command:
postStart:
exec:
command:
endsnippet
最终我们实现的效果就如下: