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

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

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

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

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

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


当前回答

如果您需要查看和编辑文件,请使用:

kubectl编辑服务

其他回答

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

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

下面的代码将一次性提取所有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

如果您有读访问权限,我们可以通过命令行从Kubernetes集群中获取与任何类型相关的内容。

kubectl get <kind> <kindname> -n <namespace> -o <yaml or json>

例如,如果希望从名称空间导出部署,请执行以下命令-

kubectl get deploy mydeploy -n mynamespace -o yaml > mydeploy.yaml

kubectl get deploy mydeploy -n mynamespace -o json > mydeploy.json

获取部署(服务、pod、secret等)的yaml:

kubectl get deploy deploymentname -o yaml

可以使用以下命令-存储已部署kubernetes服务的输出 Kubectl get SVC -n -o yaml > SVC -output.yaml

对于部署-

kubectl get deploy <deployment-name> -n <your-namespace> -o yaml > deploy-output.yaml

豆荚

kubectl get pod <pod-name> -n <your-namespace> -o yaml > pod-output.yaml

您可以使用以下命令-获取您的秘密详细信息 Kubectl得到秘密-n -o yaml 要使用更新部署文件,请使用以下命令- Kubectl编辑部署-n 在你的pod模板下添加以下-

这将在吊舱容器部分下,将秘密体积挂载到容器 volumeMounts: -名称:foo mountPath:“/ etc / foo” 只读的:真 这将在部署时进入pod模板部分 卷: -名称:foo 秘密: secretName: mysecret