Kubernetes:是否可以为包括本地在内的所有环境提供完全相同的部署描述符?

问题描述 投票:2回答:2

我是Kubernetes和Minikube的新手。两者看起来都很神奇,但我想知道是否有任何方法可以在所有环境中部署我的服务/部署单个.yml文件,包括本地开发环境...

我看到的第一个限制与服务发现有关,因为我希望我的服务在云上的负载均衡器后面,但在开发环境中,我不能因为minikube不支持它,所以我不得不回到NodePort。

你能告诉我一些有关此事的信息吗?

kubernetes minikube
2个回答
1
投票

环境名称之间还存在其他常见差异;任何数据库或其他许可资源的凭证; RAM / CPU的分配;复制计数。与生产k8相比,minikube作为运行时具有一些限制。

因此,虽然可以在不同的环境中使用相同的单个yaml文件,但这通常不是人们想要的。

人们通常想要的是使解决方案的一般架构形状在不同环境中相同,将差异提取到极简配置中,然后使用模板将其呈现为在部署时使用的特定于环境的文件。

最常用于支持这种方法的工具是helm:

https://helm.sh/

Helm基本上是围绕kubectl的美化模板包装器(尽管它有一个集群内组件)。使用helm,您可以使用相同的基本资源文件集,将环境差异提取到配置文件中,然后使用helm根据需要部署到每个环境。


0
投票

如果我理解你的问题,你想使用一个命令和一个文件来启动你的基础设施。

有可能的;但是,这取决于您的服务。如果某些pod在启动之前需要另一个pod运行,这可能会变得棘手。但从技术上讲,您可以将所有清单文件放在一个包中。然后,您可以使用kubectl apply -f bundle.yml创建所有部署服务等

要创建此捆绑包,您需要将每个清单(部署,服务配置映射等)分成三个破折号(---

例:

apiVersion: v1
kind: Namespace
metadata:
  name: namespace-1
---

apiVersion: v1
kind: Namespace
metadata:
  name: namespace-2
© www.soinside.com 2019 - 2024. All rights reserved.