Kubectl Export 已弃用。任何选择
Kubectl Export is deprecated . Any alternative
我正在寻找一种从已部署组件导出 yaml 文件但没有集群特定信息的方法。
kubectl get MYOBJECT --export -o yaml > my.yaml
但由于 "export" 现已弃用(从 1.14 开始,通常应该在 1.18 中消失(未在更新日志中找到它),有什么替代方案?
谢谢
没有一致的方法来执行此操作,因为没有关于默认设置和其他实时数据清理的总体指南。这就是它被弃用的原因。您应该将源文件保存在 git 或类似文件中。
目前的一种选择是 -o yaml
或 -o json
并删除不必要的字段
使用 JQ 就可以了。
kubectl get secret <secretname> -ojson | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null'
产生与
完全相同的JSON
kubectl get secret <secretname> -ojson --export
如果要使用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'
另一种选择是使用注释字段 kubectl.kubernetes.io/last-applied-configuration
,它保存资源初始应用的配置,没有自动生成的字段。
示例:
kubectl get <resource kind> <resource name> -o yaml | \
yq r - 'metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"'
基于以上输入,我在我们的 fubectl 项目中创建了一个短片:https://github.com/kubermatic/fubectl/pull/58
希望对其他人也有帮助:
kget-ex RESOURCE > export.yaml
对于使用 yq
v4.x 的任何人,您可以执行以下操作以获得所需的内容:
kubectl get <resource> -n <namespace> <resource-name> -o yaml \
| yq eval 'del(.metadata.resourceVersion, .metadata.uid, .metadata.annotations, .metadata.creationTimestamp, .metadata.selfLink, .metadata.managedFields)' -
终于创建了一个易于使用的工具:https://github.com/itaysk/kubectl-neat
您可以轻松地将其全部安装为 kubectl krew 插件:
kubectl krew install neat
用法也很简单
kubectl get pod mypod -o yaml | kubectl neat
导出在最新版本的 Kube 或 Openshift 中已弃用。我们可以直接像下面这样
oc get virtualservices -o yaml > project.yaml
oc get routes -o yaml > project.yaml
我正在寻找一种从已部署组件导出 yaml 文件但没有集群特定信息的方法。
kubectl get MYOBJECT --export -o yaml > my.yaml
但由于 "export" 现已弃用(从 1.14 开始,通常应该在 1.18 中消失(未在更新日志中找到它),有什么替代方案?
谢谢
没有一致的方法来执行此操作,因为没有关于默认设置和其他实时数据清理的总体指南。这就是它被弃用的原因。您应该将源文件保存在 git 或类似文件中。
目前的一种选择是 -o yaml
或 -o json
并删除不必要的字段
使用 JQ 就可以了。
kubectl get secret <secretname> -ojson | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null'
产生与
完全相同的JSONkubectl get secret <secretname> -ojson --export
如果要使用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'
另一种选择是使用注释字段 kubectl.kubernetes.io/last-applied-configuration
,它保存资源初始应用的配置,没有自动生成的字段。
示例:
kubectl get <resource kind> <resource name> -o yaml | \
yq r - 'metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"'
基于以上输入,我在我们的 fubectl 项目中创建了一个短片:https://github.com/kubermatic/fubectl/pull/58
希望对其他人也有帮助:
kget-ex RESOURCE > export.yaml
对于使用 yq
v4.x 的任何人,您可以执行以下操作以获得所需的内容:
kubectl get <resource> -n <namespace> <resource-name> -o yaml \
| yq eval 'del(.metadata.resourceVersion, .metadata.uid, .metadata.annotations, .metadata.creationTimestamp, .metadata.selfLink, .metadata.managedFields)' -
终于创建了一个易于使用的工具:https://github.com/itaysk/kubectl-neat
您可以轻松地将其全部安装为 kubectl krew 插件:
kubectl krew install neat
用法也很简单
kubectl get pod mypod -o yaml | kubectl neat
导出在最新版本的 Kube 或 Openshift 中已弃用。我们可以直接像下面这样
oc get virtualservices -o yaml > project.yaml
oc get routes -o yaml > project.yaml