如何使用Terraform管理容器服务Kubernetes集群之--托管版集群

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: #### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。

介绍

Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 《云生态下的基础架构资源管理利器Terraform》 等云栖社区的优秀文章。阿里云容器服务团队也快速在Terraform上支持了Kubernetes集群的创建。关于标准版和Serverless版集群如何使用Terraform 请参考以下文章

前置检查

  • Terraform v0.12.8+
  • terraform-provider-alicloud 1.57.2+ (早期版本不支持配置日志服务)

托管版集群

首先我们打开《阿里云 Terraform Provider 文档 -Managed Kubernetes》的帮助文档,可以看到该资源 Resource 提供的参数列表。参数分为入参 Argument 和出参 Attributes。入参列表内包含了必填参数以及可选参数,例如 name 和 name_prefix 就是一对必填参数,但它们互斥,即不能同时填写。我们对照文档中的参数列表 Argument Reference,先草拟出一个集群的描述,为了方便起见,我把填写每个参数的理由都注释在代码中。

  • 资源描述
# 引入阿里云 Terraform Provider
provider "alicloud" {
  # 填入您的账号的 Access Key
  access_key = "FOO"
  # 填入您的账号 Secret Key
  secret_key = "BAR"
  # 填入想创建的 Region
  region     = "cn-hangzhou"
  # 可选参数,默认不填就使用最新版本。不建议该处指定版本,除非很明确知道每个版本的能力
  version    = "v1.57.2"
}

# 必要的资源标识
# alicloud_cs_managed_kubernetes 表明是托管版 Kubernetes 集群
# k8s 代表该资源实例的名称
resource "alicloud_cs_managed_kubernetes" "k8s" {
  # 集群名称,可以带中划线,一个账户内的集群名称不能相同
  name = "tf-managed-kubernetes-20191017"
  # 交换机ID ,此处可以输入同一VPC下的多个交换机,最多可以输入三个交换机
  vswitch_ids  = ["vsw-2zelx9t6i28pqe3cca3rv"]
  # 是否配置公网访问能力。如果您当前的交换机已配置SNAT规则,或者通过其他代理的方式可以访问公网,则此处可以设置为false,反之,则设置为true,让系统来完成访问公网的配置
  new_nat_gateway = true
  # 工作节点的实例规则配置,可以选择多个实例规格
  worker_instance_types = ["ecs.c5.xlarge"]
  # 工作节点个数,对于Managed Kubernetes集群至少需要2个工作节点
  worker_number = 2
  # 节点的登陆密码
  password = "Yourpassword1234"
  # 集群的Pod 网段地址,该地址不可以和VPC网段冲突,同时也不能和相同VPC其他集群网段冲突
  pod_cidr = "10.20.0.0/16"
  # 集群的服务网段地址,该网段不能和pod网段冲突
  service_cidr = "172.21.0.0/20"
  # 是否安装云监控插件
  install_cloud_monitor = true
  # 是否暴露Api Server公网访问
  slb_internet_enabled = true
  # 工作节点系统盘类型
  worker_disk_category  = "cloud_ssd"
  # 工作节点数据盘类型
  worker_data_disk_category = "cloud_ssd"
  # 工作节点数据盘大小
  worker_data_disk_size =  200
  # 是否开启日志服务
  log_config {
    # 日志类型需要是SLS
    type = "SLS"
    # SLS project名称,如果指定则需要保证该project存在。
    project = "tf-managed-sls"
  }
}
  • 资源检查
    我们可以将以上的配置保存为一个 main.tf 描述文件,在该文件的当前目录下执行 terraform plan 进行资源检查
    image.png

  • 初始化provier
    再检查正常之后,我们执行 terraform init 先来初始化provider
    image.png

  • 资源创建
    接下来使用terraform apply 执行创建
    image.png

此时terraform apply 会根据我们的 main.tf 描述文件计算出需要执行的操作,上述显示将会创建一个 alicloud_cs_managed_kubernetes.k8s的资源,需要我们输入 yes 来确认创建。确认创建后,创建大约会耗时十分钟,terraform 会输出类似下面的日志。
image.png

在命令行中出现如下信息的时候,表明集群已创建成功。
image.png

此时我们也可以登录控制台后在控集群列表中看到集群。
image.png

  • 修改资源
    在 Terraform Provider 中,我们提供了一部分参数的修改能力,一般情况下,所有非 Force New Resouce(强制新建资源)的参数都可以被修改。下面我们我们演示通过修改节点数来完成一次扩容动作。
resource "alicloud_cs_managed_kubernetes" "k8s" {
  # 不变的部分此处省略不写
  worker_number = 5
}

调整完模板后,我们再次执行terraform apply ,我们会看到提示变化的点
image.png

更新动作同样需要我们输入 yes 来确认更新,此时我们可以通过控制台看到集群已经处于更新中状态了。
image.png

大概需要五分钟左右,系统就会完成新购节点并且加入到集群中,完成后,我们通过控制台可以看到节点数发生了变化。
image.png

  • 资源释放
    当我们不再需要该集群的时候,我们可以执行 terraform destroy 来销毁资源
    image.png

总结

通过以上操作我们可以完成托管版集群的创建和销毁工作。但是在实际使用过程中,模板比这个更加的复杂,例如一些输入参数是通过变量的方式传入的,这样一个模板可以适配更多的场景。

由于我们的服务仍然在不断的演进中,同时Terraform也会不断的更新迭代,可以关注社区我们版本的迭代。

更多参考

Terraform官网
Terraform Alibaba Provider
Terraform Alibaba Provider ManagedKubernetes

Terraform系列课程

相关实践学习
使用ACS算力快速搭建生成式会话应用
阿里云容器计算服务 ACS(Container Compute Service)以Kubernetes为使用界面,采用Serverless形态提供弹性的算力资源,使您轻松高效运行容器应用。本文将指导您如何通过ACS控制台及ACS集群证书在ACS集群中快速部署并公开一个容器化生成式AI会话应用,并监控应用的运行情况。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
414 108
|
13天前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
116 2
|
14天前
|
Kubernetes Devops Docker
Kubernetes 和 Docker Swarm:现代 DevOps 的理想容器编排工具
本指南深入解析 Kubernetes 与 Docker Swarm 两大主流容器编排工具,涵盖安装、架构、网络、监控等核心维度,助您根据团队能力与业务需求精准选型,把握云原生时代的技术主动权。
119 1
|
6月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
7月前
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
7月前
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
8月前
|
运维 安全 IDE
加速阿里云部署:Terraform在甄云科技的深度应用
甄云科技是一家领先的数字化采购平台服务商,通过Terraform实现全球云基础设施的高效管理与快速部署。公司成立于2017年,已服务全球30多个行业的中大型企业,客户遍布20多个国家和地区。利用IaC(基础架构即代码)理念和Terraform工具,甄云科技显著提升了开发与运维效率,减少了人为错误,加快了迭代速度,并支持业务快速扩展,为全球化战略提供了稳固的云基础架构支持。未来,公司将持续优化技术框架,回馈社区,助力更多企业的数字化转型。
|
弹性计算 API 持续交付
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
基于 IaC 的理念,通过定义一个模板,使用 ROS 提供的 Terraform 托管服务进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 ChatTTS 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。
368 58
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
|
弹性计算 持续交付 API
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
文章介绍了如何利用ROS和Terraform模板轻松自动化部署基于GLM架构、优化中文对话的ChatGLM-6B模型至阿里云,提高了部署效率与便捷性,适用于多种应用场景,且模型部署过程详细,彰显了基础设施即代码(IaC)的优势。
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版
  • 推荐镜像

    更多