石头记

Docker、Kubernetes、CI/CD 等技术分享

使用Terraform在阿里云创建Kubernetes集群资源

概述

HashiCorp Terraform 是一个IT基础架构自动化编排工具,可以用代码来高效地预配和管理云基础架构。Terraform的命令行接口(CLI)提供一种简单机制,用于将配置文件部署到阿里云或其他任意支持的云上,并对其进行版本控制。

Terraform是一个高度可扩展的工具,通过Provider来支持新的基础架构。您可以使用Terraform来创建、修改、删除ECS、VPC、RDS、SLB等多种资源。

优势

  • 将基础结构部署到多个云 - Terraform适用于多云方案,将相类似的基础结构部署到阿里云、其他云提供商或者本地数据中心。开发人员能够使用相同的工具和相似的配置文件同时管理不同云提供商的资源。

  • 自动化管理基础结构 - Terraform能够创建配置文件的模板,以可重复、可预测的方式定义、预配和配置ECS资源,减少因人为因素导致的部署和管理错误。能够多次部署同一模板,创建相同的开发、测试和生产环境。

  • 基础架构即代码(Infrastructure as Code) - 可以用代码来管理维护资源。允许保存基础设施状态,从而使您能够跟踪对系统(基础设施即代码)中不同组件所做的更改,并与其他人共享这些配置 。

安装和配置Terraform

1、前往Terraform官网下载适用于您的操作系统的程序包。

2、将程序包解压到/usr/local/bin。

3、运行terraform验证路径配置。

将显示可用的Terraform选项的列表,类似如下所示,表示安装完成。

1
2
$ terraform
Usage: terraform [-version] [-help] <command> [args]

4、为提高权限管理的灵活性和安全性,建议您创建RAM用户,并为其授权。

  • a. 登录 RAM控制台
  • b. 创建名为Terraform的RAM用户,并为该用户创建AccessKey(访问方式选择编程访问)。
  • c. 为RAM用户授权。点击 添加权限,需要为用户授予一下权限:

RAM用户授权

5、创建环境变量,用于存放身份认证信息。这些变量可以放到/etc/bashrc里,登录自动生效。

1
2
3
export ALICLOUD_ACCESS_KEY="LTAIUrZCw3********"
export ALICLOUD_SECRET_KEY="zfwwWAMWIAiooj14GQ2*************"
export ALICLOUD_REGION="cn-beijing"

克隆项目代码

1
$ git clone https://github.com/ist0ne/terraform.git

创建资源

此项目将创建以下资源:

  • 创建私有网络VPC及虚拟交换机
  • 创建NAT网关、EIP和SNAT条目
  • 创建1台堡垒机,可以通过堡垒机登录其它虚拟机
  • 默认创建3个Master节点和3个Worker节点
  • 创建负载均衡器SLB、监听及其使用的EIP

网络架构

网络架构如下:

网络架构

如何使用

  • 可以按自己的需求修改terraform.tfvars配置的变量,包括虚拟机启动的地域、登录虚拟需要的SSH Key、VPC的网段、ECS的数量、规格等等。
  • 需要先在阿里云上创建一个秘钥对,秘钥对的名字要和terraform.tfvars定义的SSH_KEY_NAME对应。
  • 运行terraform创建所需资源
  • 资源创建好以后通过堡垒机外网IP登录堡垒机,然后将上面创建秘钥对使用的私钥拷贝的堡垒机的 $HOME/.ssh/id_rsa,并配置权限 chmod 600 $HOME/.ssh/id_rsa

运行terraform

初始化

1
$ terraform init

查看要创建的资源

1
$ terraform plan

创建资源

1
$ terraform apply

销毁资源

1
$ terraform destroy

Proudly powered by Hexo and Theme by Hacker
© 2019 ist0ne