我试图将我的应用程序部署到运行在谷歌容器中的Kubernetes 引擎。

该应用程序可以在https://github.com/Industrial/docker-znc上找到。

Dockerfile内置于谷歌容器注册表上的映像中。

我已经通过+按钮在Kubernetes中部署了应用程序。我没有YAML 对于这个。

我已经在Kubernetes中插入了一个Secret,用于应用程序所需的PEM文件。

如何获得由创建的部署、服务和Pod的YAML Kubernetes通过填写表格? 我如何把秘密进入我的豆荚使用?


当前回答

您可以尝试使用kube-dump bash脚本

使用这个实用工具,您可以将Kubernetes集群资源保存为纯yaml清单,无需不必要的元数据。

GitHub库 回顾博客页面中的实用程序

其他回答

现在——export已弃用,要以'原始'格式从资源中获得输出(刚刚清理了,没有任何关于当前对象状态的信息(在这种情况下不必要的元数据)),您可以使用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)' -

下面的代码将一次性提取所有K8s定义,并将它们放在当前文件夹下面的单独文件夹中。

for OBJ in $(kubectl api-resources --verbs=list --namespaced -o name)
do
   for DEF in $(kubectl get --show-kind --ignore-not-found $OBJ -o name)
   do
      mkdir -p $(dirname $DEF)
      kubectl get $DEF -o yaml \
      | yq eval 'del(.metadata.resourceVersion, .metadata.uid, .metadata.annotations, .metadata.creationTimestamp, .metadata.selfLink, .metadata.managedFields)' - > $DEF.yaml 
   done
done

我知道这个问题太老了,无法回答,但希望有人会觉得它有帮助。

我们可以尝试下面的命令从所有命名空间-中获取一个kind导出

kubectl get <kind> --all-namespaces --export -o yaml

如果你需要“干净”的导出,删除Kubernetes添加的注释,有一个开源项目可以通过连接kubectl get - https://github.com/itaysk/kubectl-neat的输出来做到这一点。

它删除时间戳元数据,等等。

kubectl get pod mypod -o yaml | kubectl neat

kubectl get pod mypod -oyaml | kubectl neat -o json

您可以尝试使用kube-dump bash脚本

使用这个实用工具,您可以将Kubernetes集群资源保存为纯yaml清单,无需不必要的元数据。

GitHub库 回顾博客页面中的实用程序