【问题标题】:Kubernetes single deployment yaml file for spinning up the application用于启动应用程序的 Kubernetes 单一部署 yaml 文件
【发布时间】:2023-03-28 20:53:01
【问题描述】:
我正在为一个包含 8 个微服务、activemq、postgres、redis 和 mongodb 的应用程序设置 kubernetes。
在完成 pod 和部署的整个配置之后,有没有办法创建一个单独的主部署 yaml 文件,该文件将为整个应用程序创建整套服务、replcas 等。
注意:我将为上述所有服务使用多个部署 yaml 文件、状态集等。
【问题讨论】:
标签:
kubernetes
kubernetes-helm
【解决方案1】:
你可以使用这个脚本:
NAMESPACE="your_namespace"
RESOURCES="configmap secret daemonset deployment service hpa"
for resource in ${RESOURCES};do
rsrcs=$(kubectl -n ${NAMESPACE} get -o json ${resource}|jq '.items[].metadata.name'|sed "s/\"//g")
for r in ${rsrcs};do
dir="${NAMESPACE}/${resource}"
mkdir -p "${dir}"
kubectl -n ${NAMESPACE} get -o yaml ${resource} ${r} > "${dir}/${r}.yaml"
done
done
记得在脚本中指定要导出的资源。
More info here
【解决方案2】:
有没有办法创建一个单一的主部署 yaml 文件,该文件将为整个应用程序创建整套服务、副本等。
既然你已经提到了kubernetes-helm,你为什么不把它用于那个确切的目的呢?简而言之,helm 是 Kubernetes 的一种包管理器,有人说类似于 yum 或 apt。它部署了您实际上可以将其称为打包应用程序的图表。它包含所有可作为一个单元部署的预配置应用程序。它不完全是一个文件,而是构建所谓的 helm chart 的更多文件集合。
什么是舵图?
它们基本上是将 K8s yaml 清单组合成一个可以安装到您的集群的单个包。安装包就像运行单个命令一样简单,例如helm install。完成后,图表可高度重复使用,从而减少了创建开发、测试和生产环境的时间。
作为部署多个资源的复杂舵图示例,您想查看Stackstorm。
基本上,一旦在没有任何自定义配置的情况下部署,此图表将为 StackStorm 的每个组件以及 RabbitMQ、MongoDB 和 Redis 等后端部署 2 个副本。