YAML(k8s)编写技巧

YAML(k8s)编写技巧

Content #

Kubernetes 的官方参考文档( https://kubernetes.io/docs/reference/kubernetes-api/

技巧一,kubectl api-resources 命令它会显示出资源对象相应的 API 版本和类型,比如 Pod 的版本是“v1”, Ingress 的版本是“networking.k8s.io/v1”,照着它写绝对不会错。

技巧二,命令 kubectl explain 它相当于是 Kubernetes 自带的 API 文档,会给出对象字段的详细说明,这样我们就不必去网上查找了。比如想要看 Pod 里的字段该怎么写,就可以这样:

kubectl explain pod
kubectl explain pod.metadata
kubectl explain pod.spec
kubectl explain pod.spec.containers

技巧三,kubectl 的两个特殊参数 –dry-run=client 和 -o yaml 前者是空运行,后者是生成 YAML 格式,结合起来使用就会让 kubectl 不会有实际的创建动作,而只生成 YAML 文件。

例如,想要生成一个 Pod 的 YAML 样板示例,可以在 kubectl run 后面加上这两个参数:

kubectl run ngx --image=nginx:alpine --dry-run=client -o yaml

就会生成一个绝对正确的 YAML 文件:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: ngx
  name: ngx
spec:
  containers:
  - image: nginx:alpine
    name: ngx
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

接下来你要做的,就是查阅对象的说明文档,添加或者删除字段来定制这个 YAML 了。

这个小技巧还可以再进化一下,把这段参数定义成 Shell 变量(名字任意,比如$do/$go,这里用的是$out),用起来会更省事,比如:

export out="--dry-run=client -o yaml"
kubectl run ngx --image=nginx:alpine $out

Viewpoints #

From #

11|YAML:Kubernetes世界里的通用语