|
kubectl 指定 -o yaml 输出的 yaml 文件包含一些默认字段,这些字段我们是不需要的,可以使用 yq 来进行去除这些字段,生成的 yaml 文件可以用于迁移/部署服务等。
安装 yq
1
2
| curl -L https://file.babudiu.com/f/AQHE/yq_linux_amd64 -o /bin/yq
chmod +x /bin/yq
| 导出 deployment
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| kubectl get deployment nginx -o yaml | yq eval '
del(
.metadata.annotations,
.metadata.creationTimestamp,
.metadata.generation,
.metadata.resourceVersion,
.metadata.selfLink,
.metadata.uid,
.spec.progressDeadlineSeconds,
.spec.revisionHistoryLimit,
.spec.template.metadata.creationTimestamp,
.status
)
'
| 导出 service
1
2
3
4
5
6
7
8
9
10
11
12
| kubectl get svc nginx -o yaml | yq eval '
del(
.metadata.annotations,
.metadata.creationTimestamp,
.metadata.resourceVersion,
.metadata.selfLink,
.metadata.uid,
.spec.clusterIP,
.spec.externalTrafficPolicy,
.status
)
'
| 导出 Configmap
1
2
3
4
5
6
7
8
9
| kubectl get configmap nginx -o yaml | yq eval '
del(
.metadata.annotations,
.metadata.creationTimestamp,
.metadata.resourceVersion,
.metadata.selfLink,
.metadata.uid
)
'
| 如果导出的 configmap 格式错乱,换行符变成 \n ,可以使用 yq 再次进行格式化
1
| cat prometheus_config.yaml | yq -r '.data."prometheus.yml"'
| 导出 secret
1
2
3
4
5
6
7
8
| kubectl get configmap nginx -o yaml | yq eval '
del(
.metadata.creationTimestamp,
.metadata.resourceVersion,
.metadata.selfLink,
.metadata.uid
)
'
| 导出 ingress
1
2
3
4
5
6
7
8
9
10
11
12
| kubectl get ingress example.com -o yaml | yq eval '
del(
.metadata.annotations."kubectl.kubernetes.io/last-applied-configuration",
.metadata.creationTimestamp,
.metadata.finalizers,
.metadata.generation,
.metadata.resourceVersion,
.metadata.selfLink,
.metadata.uid,
.status
)
'
|
|
|