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

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: #### 介绍 Terraform 是一款 Infrastructure as Code 的工具,可以将云端资源代码化。关于 Terraform 的基本介绍本文不再赘述,有兴趣的同学可以参考 [《云生态下的基础架构资源管理利器Terraform》](https://yq.aliyun.com/articles/215592) 等云栖社区的优秀文章。

介绍

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

前置检查

  • Terraform v0.12.8+
  • terraform-provider-alicloud 1.58.0+ (早期版本不支持Serverless)

Serverless集群

首先我们打开《阿里云 Terraform Provider 文档 - Serverless 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.58.0"
}

# 必要的资源标识
# alicloud_cs_serverless_kubernetes 表明是Serverless版 Kubernetes 集群
# serverless 代表该资源实例的名称
resource "alicloud_cs_serverless_kubernetes" "serverless" {
  # 集群名称,可以带中划线,一个账户内的集群名称不能相同
  name = "tf-serverless-kubernetes-20191017"
  # 集群所在的VPC
  vpc_id = "vpc-xxxx"
  # 集群所在的可用区 
  vswitch_id = "vswitch-xxx"
  # 是否配置公网访问能力。如果您当前的交换机已配置SNAT规则,或者通过其他代理的方式可以访问公网,则此处可以设置为false,反之,则设置为true,让系统来完成访问公网的配置
  new_nat_gateway = true
  # API Server是否具备公网访问能力。如果您想通过公网访问到集群的Api Server,此处设置为true,反之设置为false
  enndpoint_public_access_enabled = true
  # 是否开启基于DNS的服务发现机制。通过域名直接访问服务,需要提前开通PrivateZone服务。关于 PrivateZone服务介绍请参阅更多参考里的内容。
  private_zone = false
  # 是否开启集群删除保护。若开启集群删除保护,设置为true,此时通过控制台和API均不能释放集群,释放前需要关闭集群保护。反之为false  
  deletion_protection = false
  # 设置集群标签,标签键不可以重复,最长为64位;标签值可以为空,最长为63位。标签键和标签值都不能以“aliyun”、“acs:”、“https://”或“http://”开头。
  tags = {
    "k-aa":"v-aa"
    "k-bb":"v-aa",
  }
}
  • 资源检查
    我们可以将以上的配置保存为一个 main.tf 描述文件,在该文件的当前目录下执行 terraform plan 进行资源检查

image.png

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

image.png

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

image.png

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

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

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

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

image.png

总结

通过以上操作我们可以完成Serverless集群的创建和销毁工作。但是在实际使用过程中,模板比这个更加的复杂,例如一些输入参数是通过变量的方式传入的,这样一个模板可以适配更多的场景,关于如何使用变量以及如何自动创建依赖的资源,可以参考我们的示例代码

更多参考

Terraform官网
Terraform Alibaba Provider
Terraform Alibaba Provider Serverless
Serverless介绍
Terraform系列课程
PrivateZone服务
Labels and Selectors参考
Serverless 示例代码参考

相关实践学习
巧用云服务器ECS制作节日贺卡
本场景带您体验如何在一台CentOS 7操作系统的ECS实例上,通过搭建web服务器,上传源码到web容器,制作节日贺卡网页。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
10天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
42 2
|
20天前
|
Kubernetes 监控 开发者
掌握容器化:Docker与Kubernetes的最佳实践
【10月更文挑战第26天】本文深入探讨了Docker和Kubernetes的最佳实践,涵盖Dockerfile优化、数据卷管理、网络配置、Pod设计、服务发现与负载均衡、声明式更新等内容。同时介绍了容器化现有应用、自动化部署、监控与日志等开发技巧,以及Docker Compose和Helm等实用工具。旨在帮助开发者提高开发效率和系统稳定性,构建现代、高效、可扩展的应用。
|
12天前
|
存储 Kubernetes Docker
【赵渝强老师】Kubernetes中Pod的基础容器
Pod 是 Kubernetes 中的基本单位,代表集群上运行的一个进程。它由一个或多个容器组成,包括业务容器、基础容器、初始化容器和临时容器。基础容器负责维护 Pod 的网络空间,对用户透明。文中附有图片和视频讲解,详细介绍了 Pod 的组成结构及其在网络配置中的作用。
【赵渝强老师】Kubernetes中Pod的基础容器
|
6天前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
26 1
|
20天前
|
Kubernetes 负载均衡 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第27天】Kubernetes(简称K8s)是云原生应用的核心容器编排平台,提供自动化、扩展和管理容器化应用的能力。本文介绍Kubernetes的基本概念、安装配置、核心组件(如Pod和Deployment)、服务发现与负载均衡、网络配置及安全性挑战,帮助读者理解和实践Kubernetes在容器编排中的应用。
58 4
|
21天前
|
Kubernetes 监控 Cloud Native
云原生应用:Kubernetes在容器编排中的实践与挑战
【10月更文挑战第26天】随着云计算技术的发展,容器化成为现代应用部署的核心趋势。Kubernetes(K8s)作为容器编排领域的佼佼者,以其强大的可扩展性和自动化能力,为开发者提供了高效管理和部署容器化应用的平台。本文将详细介绍Kubernetes的基本概念、核心组件、实践过程及面临的挑战,帮助读者更好地理解和应用这一技术。
56 3
|
27天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
24天前
|
运维 Kubernetes Cloud Native
云原生入门:Kubernetes和容器化的未来
【10月更文挑战第23天】本文将带你走进云原生的世界,探索Kubernetes如何成为现代软件部署的心脏。我们将一起揭开容器化技术的神秘面纱,了解它如何改变软件开发和运维的方式。通过实际的代码示例,你将看到理论与实践的结合,感受到云原生技术带来的革命性影响。无论你是初学者还是有经验的开发者,这篇文章都将为你开启一段新的旅程。让我们一起踏上这段探索之旅,解锁云原生技术的力量吧!
|
12天前
|
Kubernetes 监控 Java
如何在Kubernetes中配置镜像和容器的定期垃圾回收
如何在Kubernetes中配置镜像和容器的定期垃圾回收
|
2月前
|
弹性计算 持续交付 API
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
文章介绍了如何利用ROS和Terraform模板轻松自动化部署基于GLM架构、优化中文对话的ChatGLM-6B模型至阿里云,提高了部署效率与便捷性,适用于多种应用场景,且模型部署过程详细,彰显了基础设施即代码(IaC)的优势。
50 3
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B

热门文章

最新文章

相关产品

  • 函数计算
  • 下一篇
    无影云桌面