我想知道在Kubernetes中自动化YAML
部署的最佳方法是什么
我有一个cert-manager
helm安装和一个kong YAML
清单和一个在Kubernetes集群中创建、安装和工作的Ingress
资源
此部署为我提供了TLS
加密,以便将https
协议应用到我的应用程序服务,该服务也通过helm安装(我为它创建了一个helm图表)
我的目标是找到执行我创建的YAML
文件的方法,以及一些helm命令的自动方式,而不是手动执行步骤和过程。在
请记住,所有这些cert manager、kong和ingres部署都与我创建的helm chart service应用程序关联,因此我一直在部署以下内容:
我已经为我的服务应用程序创建了一个helm图表,并通过helm install ...
命令安装了它
我已经使用类似于Postgres
的外部服务从YAML清单安装了kong
和{
我已经通过helm安装了cert-manager
,添加了它的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文件和来自CLI的helm ....
命令完成的。在
这意味着,目前这个过程高度依赖于人类事件,我想自动化一些事情,比如kong
和{
当我认为这是可能的时候,我是对的吗?在
最好的方法是什么?
我在一些地方阅读和寻找,有些人也向我介绍了以下几种选择:
从我的舵图应用程序?
我读到赫尔姆有个名字叫^{
hooks
本身描述了以下内容:
A kind of mechanism to allow chart developers to intervene at certain points in a release's life cycle. For example, you can use hooks to:
Load a ConfigMap or Secret during install before any other charts are loaded.
Execute a Job to back up a database before installing a new chart, and then execute a second job after the upgrade in order to restore data.
Run a Job before deleting a release to gracefully take a service out of rotation before removing it
舵钩是一个好的选择吗?我认为有了它们,我可以自动化,或者至少可以让helm chart
应用程序接管秘密创建和一些{
我可以考虑一下kong
、cert-manager
和{
terraform提供了一个Helm和Kubernetes提供商。我可以探索从terraform脚本安装这些软件包的可能性。在
这种地形方法对于安装my helm chart application
和cert-manager
helm非常有用
孔也喜欢地形提供商
目前有一些第三方存储库可以与terraform中的kong一起工作。Terraform Provider Kong这对我来说更合适,因为我使用的是azurekubernetes服务,并且可以实现的不同资源配置看起来非常好。当我使用kong-ingress-controller
和证书管理器通信时,我不确定是否需要手动注入certificates
、route
资源,但即使是这个terraform kong提供程序也允许我导入现有的路由terraform import kong_route.<route_identifier> <route_id>
是否可以将其应用于certificates
和其他资源?在
如何通过python自动化部署呢?
这个替代方案进展如何?
是否可以从python到kubernetes交互并执行命令操作{36{cdl37}和远程资源库(^在cdl中描述)可以创建 在肯定的情况下。。。如何解决这个问题?在 我已经找到了this option which use ansible,但它还涉及到其他一些东西,比如自动代理ansible和Kubernetes服务目录,这些目前我还不知道。在 我可以通过jupyter笔记本创建这些资源( 因此,我认为terraform方法(使用 有人在Kubernetes集群中执行了资源和事物的自动化。我想这是一个正常的或预期的过程,虽然这是我第一次。在 如果有人能为我指出正确的方法来解决我的特殊情况,我将不胜感激。:)Ingress
和kong和cert manager安装和配置),直接写到Kubernetes集群吗?这可能吗?
我该怎么做?在helm
和kong
提供程序,从代码的角度来看,从基础设施的角度来看,是非常有用的工具,但我不确定是否会选择它,也许有没有更复杂的替代方法?在
不幸的是,您无法控制从属头盔图表的安装顺序。Helm将图表的模板及其所有依赖项的模板组合在一起,并将它们应用于同一图表中(有关排序的详细信息,请参见here)。在
您可以编写一个Python脚本,使用PyHelm(完全公开-我是包的维护者之一)逐个安装图表。在
此外,您可以使用Helm钩子来控制安装顺序,这样可以处理额外的yaml(例如使用安装后/升级后挂钩)。在
一个可能的解决方案是使用initContainer来等待其他服务启动。在
通常,对于给定的a和B应用程序,您将使用helm或event better helmfile同时部署它们。但是对于B的pod,您将添加一个initContainer,如果服务A启动,它将每隔10秒检查一次。通过这样做,您可以确保只有当服务A完全启动并准备就绪时,服务B才会启动。你可以看看https://kubernetes.io/docs/concepts/workloads/pods/init-containers/。这需要配置livenessProbe和readynessProbe。在
请注意,这并不是真正的顺序图安装,只需确保每个服务在启动之前都会等待依赖项。您可以使用helmfile(https://github.com/roboll/helmfile)同时安装多个图表。在
相关问题 更多 >
编程相关推荐