Bob*_*601 23 export deprecated kubernetes
我正在寻找一种从部署的组件导出 yaml 文件但没有集群特定信息的方法。
kubectl get MYOBJECT --export -o yaml > my.yaml
Run Code Online (Sandbox Code Playgroud)
但是由于“导出”现在已被弃用(自 1.14 起,通常应在 1.18 中消失(未在变更日志中找到),有什么替代方法?
谢谢
如果要使用 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'
Run Code Online (Sandbox Code Playgroud)
小智 7
使用 JQ 可以解决问题。
kubectl get secret <secretname> -ojson | jq 'del(.metadata.namespace,.metadata.resourceVersion,.metadata.uid) | .metadata.creationTimestamp=null'
Run Code Online (Sandbox Code Playgroud)
产生完全相同的JSON
kubectl get secret <secretname> -ojson --export
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用注释字段kubectl.kubernetes.io/last-applied-configuration
,该字段保存资源初始应用配置而没有自动生成的字段。
例子:
kubectl get <resource kind> <resource name> -o yaml | \
yq r - 'metadata.annotations."kubectl.kubernetes.io/last-applied-configuration"'
Run Code Online (Sandbox Code Playgroud)
小智 5
终于创建了一个易于使用的工具:https : //github.com/itaysk/kubectl-neat
您可以轻松地将其安装为 kubectl krew插件:
kubectl krew install neat
Run Code Online (Sandbox Code Playgroud)
用法也很简单
kubectl get pod mypod -o yaml | kubectl neat
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15670 次 |
最近记录: |