我正在寻找一种方法来导出已部署组件的yaml文件,但不包含集群的特定信息。
kubectl get MYOBJECT --export -o yaml > my.yaml
但是由于 "export "现在已经被废弃了(从1.14开始,并且通常在1.18中应该会消失(在变更日志中没有找到它),有什么可以替代的方法吗?
谢谢
没有一致的方法,因为没有关于默认和其他实时数据清理的整体准则。这就是为什么它被废弃的原因。你应该把你的源文件保存在git或类似的地方。
目前的一个选择是做 -o yaml
或 -o json
并删除不必要的字段
如果你想使用YAML输入输出,你可以使用 yq.
这对我来说是个窍门,根据你的情况添加或删除过滤器。
kubectl get secret "my_secret" -n "my_namespace" --context "my_context" -o yaml \
| yq d - 'metadata.resourceVersion' \
| yq d - 'metadata.uid' \
| yq d - 'metadata.annotations' \
| yq d - 'metadata.creationTimestamp' \
| yq d - 'metadata.selfLink'
使用JQ做的伎俩。
kubectl get secret <secretname> -ojson | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null'
产生的json与
kubectl get secret <secretname> -ojson --export
另一个选择是使用注释字段。kubectl.kubernetes.io/last-applied-configuration
其中保存了资源的初始应用配置,没有自动生成的字段。
例如:
kubectl get <resource kind> <resource name> -o yaml | \
yq r - 'metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"'