本地自动化基础设施部署的良好解决方案?
Posted
技术标签:
【中文标题】本地自动化基础设施部署的良好解决方案?【英文标题】:Good solutions to automate infrastructure deployment locally? 【发布时间】:2021-10-02 03:09:37 【问题描述】:我最近阅读了有关基础架构即服务 (IaaS) 和平台即服务 (PaaS) 的更多信息,并且有一些问题。我看到当我们选择 PaaS 解决方案时,创建基础架构通常非常容易,因为云提供商会为我们处理这些,我们甚至可以使用像 Terraform 这样的基础架构即代码解决方案来自动化部署。
但是,如果我们使用 IaaS 解决方案甚至本地集群,我们就会失去很多似乎 PaaS 允许的自动化。所以我很好奇,有没有什么好的工具可以在不在云端的本地集群上自动部署基础设施?
我能想到的最好的办法是运行一个本地 Kubernetes 集群,然后 Dockerize 每个基础架构组件,但这似乎很困难,因为集群中的每个节点都需要自己的特定配置文件。
从我的基本谷歌搜索来看,似乎没有很好的解决方案。
编辑:
我的初衷还不够清楚。我有两个要解决的问题。
-
如何在本地自动化基础架构部署?例如,假设我想创建一个 Hadoop HDFS 集群。我需要将一个节点配置为具有可访问 IP 的名称节点,而将其他节点配置为知道名称节点 IP 的数据节点。目前,我必须手动登录每个节点,检查它的 IP,然后配置每个节点。我将如何自动化呢?如果我要使用 Kubernetes 方法,我如何指定一个正在运行的 pod 需要是 namenode,而其他的是 datanode?如何找到 pod 的 IP 并让他们知道 namenode IP?
我遇到的下一个问题与第一个问题非常相似,但稍作修改。我将如何将特定的配置文件部署到每个节点。例如,在 Kafka 中,一个节点的配置文件需要 Zookeeper 节点的 IP,以及它应该监听的 IP。对于集群中的每个节点,这可能不同。有没有一种好方法可以使这些配置文件特定于 pod,这样我就不必进行 bash 文本处理来将正确的内容插入到每个 pod 的配置文件中?
【问题讨论】:
不太清楚你在寻找什么...... CrossPlane、OpenStack、Bare-metal k8s、Puppet/Ansible/Chef、VMWare 解决方案的存在都是为了解决大部分问题跨度> 【参考方案1】:您可以将Terraform
用于您的所有内部部署基础设施。自动化,Ansible
用于配置管理。
假设您有三台 HPE 服务器,使用 Ansible 在其上安装 K8s 或 VMware,那么您可以将它们视为一个区域中的三个 Avvaliabilty 区域,与 AWS 相同。从这里你可以开始部署 dockerize 应用程序,或者使用 Terraform 掌舵图表。
总结:
Ansbile
用于安装和配置 K8s。
Terraform
用于配置 K8s。
Helm
在 K8s 上安装应用程序。
在此之后,您将拥有一个基本的自动化内部部署基础设施。
【讨论】:
Terraform 将与 Helm 很好地集成,它允许您将 Helm 图表部署为 Terraform 模块,使其更容易集成到 CICD 管道中,此外,Terraform 将提供其他网络设备,如防火墙和负载平衡器以上是关于本地自动化基础设施部署的良好解决方案?的主要内容,如果未能解决你的问题,请参考以下文章