Kubectl导出已不适用。任何替代方案

问题描述 投票:0回答:2

我正在寻找一种方法来导出已部署组件的yaml文件,但不包含集群的特定信息。

kubectl get MYOBJECT --export -o yaml > my.yaml

但是由于 "export "现在已经被废弃了(从1.14开始,并且通常在1.18中应该会消失(在变更日志中没有找到它),有什么可以替代的方法吗?

谢谢

kubernetes export deprecated
2个回答
2
投票

没有一致的方法,因为没有关于默认和其他实时数据清理的整体准则。这就是为什么它被废弃的原因。你应该把你的源文件保存在git或类似的地方。


3
投票

目前的一个选择是做 -o yaml-o json 并删除不必要的字段


2
投票

如果你想使用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'

1
投票

使用JQ做的伎俩。

kubectl get secret <secretname> -ojson | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null'

产生的json与

kubectl get secret <secretname> -ojson --export

1
投票

另一个选择是使用注释字段。kubectl.kubernetes.io/last-applied-configuration 其中保存了资源的初始应用配置,没有自动生成的字段。

例如:

kubectl get <resource kind> <resource name> -o yaml | \
yq r - 'metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"'
© www.soinside.com 2019 - 2024. All rights reserved.