在充斥着大量组件和配置的环境中,配置和管理基础架构可能会让人十分头疼。尤其是当您还需要手动完成这些操作时,或者您需要部署许多类似的环境,而每个环境只需进行些许更改。
幸运的是,基础架构即代码 (IaC) 可以帮助您解决这个难题。
对于 Kubernetes (K8S) 来说尤其如此,因为其本身就是一个完整的生态系统。
由于本文不仅面向初学者,也面向有经验的 DevOps 从业者,因此我们将从简短的背景介绍开始。如果您已了解 IaC、K8S 和 Terraform 的背景,那么请直接跳到技术部分阅读。
什么是基础架构即代码(IaC)?
与通过使用交互式配置工具的手动过程不同,基础架构即代码(IaC)是一种通过代码来管理和配置基础架构的过程。
IaC 通过定义你可以版本化、重用和共享的资源配置,让您实现基础架构的构建、更改、管理和监视,安全、一致、可重复。使用 IaC 之后,配置文件会包含基础架构的各项具体规范,这让编辑配置更容易,也能保证相同的环境每次都能得到配置。
什么是 Kubernetes?
Kubernetes(K8S) 是一个开源平台,用于在一个或多个主机上部署和管理容器化应用程序。使用 K8S, 容器管理的操作任务可自动化,且更易管理。比如部署新应用程序、推出新版本、自动扩展应用程序副本或监视应用程序活动等。
什么是 Terraform?
Terraform 是 HashiCorp 公司开发的 一种 IaC 工具。Terraform 定义用户可读的声明性配置文件中的资源和基础架构,并管理基础架构的生命周期。
配置文件使用一种类似于 JSON 的语言——HCL(HashiCorp 配置语言)语言编写。
HCL 语法简单,通过 HCL 开发运维(DevOps)团队能够轻松地跨多个云提供商和本地数据中心对基础架构进行配置和再配置。
您可在此处了解关于 Terraform 的更多信息。
在三大云提供商平台上使用 terraform 进行 K8S 集群配置
虽然市场上有许多云提供商,但在本文中,我们将重点关注三大云供应商:AWS(亚马逊网络服务)、Google Cloud(谷歌云)和 Microsoft Azure(微软智能云)。我们将在每个使用的 Terraform 上配置一个托管单节点 k8s。
我们将探索在每个云提供商上使用 Terraform 配置 Kubernetes 的复杂性,并且对其进行比较之后作一个简短的总结,以帮助您作出决策。
为更加简结明了,我们将使用一些预先准备好的代码,把重点放在研究密钥差异性上。
克隆这个包含基本 k8s 集群配置文件的 Git 存储库,其可以用于在 AWS、Azure 和 GCP 上进行配置。
clone https://github.com/omermishania/deploy-clusters-using-terraform-on-the-3-big-clouds.git
在 AWS 上使用 Terraform 对 K8S 进行配置
走查介绍
在 AWS 上使用 Terraform 来配置 K8S,您将需要五个文件:
- vpc.tf —— 使用 AWS VPC 模块定义选定区域内 EKS 集群的虚拟私有云 (VPC)、子网和可用性区域。
- eks-cluster.tf —— 使用 AWS EKS 模块定义设置 EKS