python - 在 Kubernetes 上自动部署
问题描述
我很想知道YAML
在 Kubernetes 中自动化部署的最佳方法是什么
我有一个cert-manager
helm 安装和一个kong YAML
清单以及一个Ingress
在 Kubernetes 集群中创建、安装和工作的资源
此部署为我提供了TLS
加密,以便将https
协议获取到我的应用程序服务,该服务也通过 helm 安装(我已经为它创建了一个 helm 图表)
我的目标是找到执行YAML
我创建的那些文件的方式,以及一些自动方式的掌舵命令,而不是手动执行这些步骤和过程。
也许重要的是要记住,所有这些 cert-manager、kong 和 Ingress 部署都与我创建的 helm chart 服务应用程序相关联,因此我一直在部署以下内容:
我已经创建了我的服务应用程序的掌舵图,并通过
helm install ...
命令安装了它我已经使用类似的外部服务安装
kong
了kong-ingress-controller
YAML 清单。Postgres
我已经
cert-manager
通过 helm 安装并添加它helm repo add jetstack https://charts.jetstack.io
并执行
helm install \
--name cert-manager \
--namespace cert-manager \
--version v0.7.0 \
jetstack/cert-manager
- 而且,我创建了一个
Ingress
和KongIngress
资源来允许访问我的 helm chart 应用程序服务,并允许 kong 管理入口操作和其他操作,如路由、证书和服务创建,并将诸如basic-auth
插件之类的东西关联到我的服务应用程序
所有这些过程都是通过kubectl apply ...
执行 YAML 文件以及helm ....
来自 CLI 的命令完成的。
这意味着,目前这个过程高度依赖于人类事件,我想自动化安装过程kong
,cert-manager
即使是可能的Ingress
创建。
当我认为这有可能时,我是对的吗?
最好的方法是什么?
我一直在一些地方阅读和寻找,有些人也对我进行了以下选择:
从我的掌舵图应用程序?
我一直在读 helm 有一个名字
hooks
hooks
本身描述如下:
一种允许图表开发人员在发布生命周期中的某些点进行干预的机制。例如,您可以使用挂钩来:
在加载任何其他图表之前,在安装期间加载 ConfigMap 或 Secret。
在安装新图表之前执行一个作业备份数据库,然后在升级后执行第二个作业以恢复数据。
在删除版本之前运行作业,以便在删除服务之前优雅地退出轮换服务
掌舵钩子方法可能是一个不错的选择吗?我认为有了它们,我可以自动化或至少让helm chart
应用程序接管秘密创建和一些pre/post-deployment
.
我可以考虑kong
,cert-manager
和Ingress
资源操作(命令和 YAML 文件执行)之类的操作或操作由 helm 挂钩管理吗?
- Terraform 方法:从中提供部署(一些步骤或全部)。
terraform 提供了 Helm 和 Kubernetes 提供程序。我可以探索从 terraform 脚本安装这些软件包的可能性。
my helm chart application
这种 terraform 方法对于安装和cert-manager
掌舵可能很有用
Kong 也喜欢 terraform provider
目前有一些第三方存储库可以与来自 terraform 的 kong 一起使用。Terraform Provider Kong对我来说更合适,因为我使用的是 Azure Kubernetes 服务,并且可以实现的不同资源配置看起来非常好。我不确定当我使用和 cert-manager 通信时是否需要手动注入资源certificates
,但即使是这个 terraform kong 提供程序也允许我导入现有路由route
kong-ingress-controller
terraform import kong_route.<route_identifier> <route_id>
可以将其应用于certificates
其他资源吗?
- 使用 python 脚本
通过 python 进行自动化部署呢?这个替代方案的情况如何?是否可以从 python 到 kubernetes 进行交互并执行我上面描述的命令操作(kubectl
以及helm
从本地和远程存储库中可用的 YAML 文件和掌舵图创建资源)
在肯定的情况下......我该如何解决这个选项?
我找到了这个使用 ansible 的选项,但它涉及一些其他的东西,比如 Automate broker ansible 和 Kubernetes 服务目录,目前我还不知道。
- 使用 Jupyter 笔记本。
我可以Ingress
通过 jupyter 笔记本创建这些资源(以及 kong 和 cert-manager 安装和配置),直接写到 Kubernetes 集群吗?这可能吗?我该怎么做?
所以,我认为 terraform 方法(从基础设施作为代码的角度来看,使用helm
andkong
提供程序将是非常有用的工具,但我不确定我是否会选择它,也许有不那么复杂的替代方案?
有人在 Kubernetes 集群中执行了资源和事物的自动化。我想这是一个正常或预期的过程,尽管这是我的第一次。
如果有人能指出我解决我的特定情况的正确方法,我将不胜感激。:)