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

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

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

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

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

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


当前回答

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

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

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

其他回答

和@Janos Lenart的回答只有微小的区别!

kubectl get deploy deploymentname -o yaml > outputFile。Yaml就行

kubectl -n <namespace> get <resource type> <resource Name> -o yaml 

使用上面的命令,Kubernetes中定义的任何资源都可以以YAML格式导出。

可以通过该命令获取资源的yaml文件 kubectl -n <命名空间> get <资源类型> <资源名称> -o yaml . > . kubectl -n <命名空间> get <资源类型> <资源名称> 为了把秘密带到你的舱里,

使用这样的方法

env
- valueFrom
    secretKeyRef:
      name: secret_name
      key: key_name

or

envFrom
- secretRef:
    name: secret_name

 

kubernetes GitHub问题页面讨论了同样的问题,用户“alahijani”制作了一个bash脚本,导出所有yaml并将它们写入单个文件和文件夹。

由于这个问题在谷歌上排名很好,而且我发现这个解决方案非常好,所以我在这里表示它。

Bash脚本导出yaml到子文件夹:

for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob)
do
    mkdir -p $(dirname $n)
    kubectl get -o=yaml --export $n > $n.yaml
done

另一个用户“acondrat”编写了一个不使用目录的脚本,这使得以后让kubectl应用-f变得很容易。

Bash脚本导出yaml到当前文件夹:

for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token')
do
    kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml
done

最后一个脚本不包括服务帐户。

所有的服务

kubectl get service --all-namespaces -o yaml  > all-service.yaml

所有部署

kubectl get deploy --all-namespaces -o yaml  > all-deployment.yaml