EKS multi-part Build with Terraform


标题: “使用 Terraform 构建 EKS 多部分” 权重: 515 草稿: 假


在本次研讨会的这一部分,我们将使用 Terraform 模块构建一个 EKS 集群,并将 Cloud9 IDE 用作堡垒主机。

下图描绘了本次研讨会的 EKS 构建过程:

使用多部分责任模型构建 EKS 集群

安全是配置和维护 Kubernetes 集群和应用程序的关键组成部分。Amazon EKS 默认提供安全的托管 Kubernetes 集群。

通过在具有有限入口或出口连接的 VPC 中配置 EKS 集群,可以进一步增强安全性。

在本节中,我们将研究如何分阶段构建 EKS 集群,以反映大型组织中时常见到的不同责任和最小特权模型。

我们的私有 EKS 集群的构建分为以下几个阶段,每个阶段可能由不同的团队执行:

我们将依次执行这些阶段,完成整个研讨会。


Terraform 的初始设置

在此阶段,我们创建一些预先需要的 S3 存储桶和 DynamoDB 表,用于集中保存 Terraform “状态"并控制该状态的锁定:

S3 存储桶

构建部分 S3 存储桶密钥 DynamoDB 表
设置 terraform/tf-setup.tfstate terraform_lock_tf-setup
网络 terraform/net.tfstate terraform_lock_net
Cloud9 IDE 网络 terraform/c9net.tfstate terraform_lock_c9net
EKS 集群构建 terraform/cluster.tfstate terraform_lock_cluster
EKS 附加组件 terraform/addons.tfstate terraform_lock_addons
EKS 可观察性附加组件 terraform/observ.tfstate terraform_lock_observ

SSM 参数

由于需要在构建的不同阶段传递值(例如 EKS 集群名称),因此使用了各种 SSM 参数来实现这一目的。它们都以前缀 /workshop/tf-eks/ 开头。


VPC 和网络构建

在此阶段,我们构建了 EKS 集群所需的基础网络组件。


将 Cloud9 IDE 连接到 EKS 网络

此阶段将 Cloud9 IDE & CICD VPC 与私有 EKS VPC 互连。


创建 EKS 集群和节点组

此阶段部署了:

  • 托管的 EKS 控制平面
  • 托管节点组
  • Karpenter 控制器
  • 用于加密集群机密和 etcd 的 KMS 密钥
  • AWS EBS CSI 驱动程序
  • Amazon Cloudwatch 可观察性插件


启用 EKS 附加组件

在此部分,我们使用 AWS Blueprints 启用和配置一组 EKS 附加组件:

  • AWS 负载均衡器控制器
  • AWS Cloudwatch 指标
  • Metrics Server
  • 证书管理器
  • 外部 DNS 管理器


部署 AWS EKS 可观察性加速器

安装 AWS EKS 可观察性加速器,包括:

  • 托管 Prometheus 安装
  • AWS 分布式 OpenTelemetry
  • EKS API 服务器监控
  • 外部机密控制器


部署 Keycloak 身份提供商

在 EKS 上安装 Keycloak 作为托管 Grafana 的 SAML 提供商 - 请参阅 keycloak.org 了解更多信息。

我们使用这个,因为该研讨会环境不允许我们使用/配置 AWS 单点登录


为 eks-workshop.com 准备集群

在本节中,我们只是准备我们的集群,以便它可以与我们在 eksworkshop.com 上找到的主流 EKS 研讨会内容一起使用。