写点什么

使用 AWS CDK 轻松构建云原生应用之 EKS 平台(一)

  • 2019-12-20
  • 本文字数:2148 字

    阅读完需:约 7 分钟

使用 AWS CDK 轻松构建云原生应用之 EKS 平台(一)

AWS CDK V.S. AWS CloudFormation

熟悉 AWS 或者云计算的朋友一定都知道AWS CloudFormation。我们创建一个描述所有 AWS 资源的 JSON 格式或者 YAML 格式的模板,通过 AWS CloudFormation 可以快速地对这些资源进行建模和设置,并且可以方便地对资源进行管理。一切都可以自动化完成而无需手动操作。很多 AWS 客户已经采用 CloudFormation 实现了基础设施即代码(Infrastructure as Code)。


但是使用时会发现,从零开始写模板还是一件繁琐的工作,尤其是针对于同一种 AWS 服务,模板里的大部分内容是相同的,只是在一些属性和参数上有所差别。曾经在向一个客户演示完 CloudFormation 后,客户抛出一个问题:有没有一个自动生成模板的工具?这真是一个好问题!软件的本质就是不断抽象并简化工作。所以 AWS 推出了云开发工具包 AWS Cloud Development Kit,简称 AWS 。这是一种开源软件开发框架,提供一种更高层级的抽象,使用者可以使用熟悉的编程语言模拟和预置云应用程序资源(construct library)。而 CDK 的底层会自动生成 CloudFormation 模板,然后调用 CloudFormation 来完成所有的资源创建工作。AWS 的 CDK 开发团队基于 CloudFormation 构建了 AWS 资源的 L2 construct,完成从对象定义到 CFN 模板的转换。所以采用 CDK 比采用 CloudFormation 的代码会少很多很多,大大简化工作量。另外特别要强调的,CDK 是一个完全开源的项目!(https://github.com/aws/aws-cdk)也就是说只要你愿意,完全可以向里面贡献你的代码!在今年的AWS re:Invent 上有一个 session OPN205_R就是介绍如何向 AWS CDK 贡献代码,大家可以看这个视频了解.


关于 CDK 我们在这篇文章里不做更多介绍啦,具体可以参考 AWS 的官方网站,上面有很详细的介绍:https://aws.amazon.com/cn/cdk/

AWS CDK 的实践之路

在近期的一个项目里,我们帮助客户使用 CDK 轻松快速的构建了整套云原生应用架构,包括 Amazon Elastic Kubernetes Service(简称 EKS)平台,应用架构,监控日志,调用链跟踪以及 CICD 等。我们将会作为一个系列介绍。这篇文章是第一篇,介绍如何构建基础网络架构和 EKS 平台。搭建好的架构如下图:



以下是我们的具体步骤:

1.安装 CDK

可以按照 AWS 的官方文档介绍来安装 CDK:https://docs.aws.amazon.com/cdk/latest/guide/getting_started.html


安装好后跑一下命令,就可以看到 CDK cli 已经安装完成了:


2.初始化我们的应用程序

该命令在一个 AWS 账号下从零创建所有应用架构依赖的组件,我们给创建好的应用命名为 cdk-repo:



我们的应用程序都是使用 Python 编写的。除了 Python,CDK 目前还支持 Javascript, Typescript,Python,.NET,Java 并且全都 GA 了,所以你可以方便的选用自己熟悉的语言编写。

3.创建基础网络架构

在任何一个 AWS 账号下的一个全新区域中,都需要搭建基础的网络设施,包括 AWS Virtual Private Cloud(简称 VPC)、子网、堡垒机、NAT 等基本组件,为应用运行准备基础环境。

3.1 创建基础网络架构

我们通过以下一段代码,可以方便地创建出一个 AWS 上标准的基础网络架构,包括:一个指定了 CIDR 和名字的 VPC,一个 NAT Gateway,以及每个 Availability Zone(简称 AZ)中的三个子网,分别是:公有子网——允许所有出入公网;私有子网——没有直接的出入公网的路由,但是可以通过堡垒机访问私有子网内的资源,可以通过 NAT gateway 出到公网;保护子网——没有出入公网的路由,通常用于数据库。



注意:如果你是在 2AZ 的区域中运行该代码,会创建 32=6 个子网,如果在 3AZ 的区域中运行该代码,会创建 33=9 个子网。该代码可以自动适配到 AZ 的数量。

3.2 为 VPC 和子网打 tag

如果你在 AWS 上创建过 EKS,应该了解 EKS 对它所在的 VPC 和子网的 tag 有所要求。所以我们采用以下代码打 tag:


3.3 创建堡垒机

CDK 中已经有实现的 construct,可以快速的创建堡垒机。但是我为了使用自己预创建的 key,所以采用 ec2 instance 的方式来创建堡垒机,采用以下代码:



可以看到,堡垒机的安全组设置也是非常方便,用两行代码就可以允许任何 ip 的 ssh 访问。


注意:建议针对该堡垒机开启 VPC flow log,可以记录进出该堡垒机的网络流量,做到安全监控。由于 L2 construct 的 instance 不支持设置 Elastic Network Interface(ENI),从而无法开启 VPC flow log,所以需要基于 CfnInstance 完成。

3.4 传递参数

我们会对整个应用进行模块化编排,将不同的模块划分到不同的 Stack,方便我们更好的组织、管理以及复用代码。我们会在最后一篇文章介绍整体的 Stack 编排和设计。这里只介绍我们将 VPC 名称和堡垒机的安全组作为参数传递给其他 Stack,包括 EKS Stack。


3.5 设置 Stack 入口

我们在 app.py 中设置用于基础网络架构的 Stack 的入口,也就是 LandingzoneStack:


3.6 查看 Stack

在命令行中通过以下命令查看我们刚才创建的 stack:



通过命令 cdk synth 可以打印出生成的 CloudFormation 模板,下面截图中只展示了模板的一部分,可以看到短短的几句 CDK 应用可以生成好几十行的模板,所以 CDK 对比 CloudFormation 非常高效。通常我们打出 CloudFormation 模板只是为了调试。



本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/using-aws-cdk-easily-build-eks-platform-cloud-native-application/


2019-12-20 15:152712

评论

发布
暂无评论
发现更多内容

破解数据库内核人才困局:PingCAP 的思考与尝试丨Talent Plan 专访

PingCAP

云效一站式DevOps平台

阿里云云效

云计算 阿里云 DevOps 云原生 云效

自助洗车加盟需要投资多少?分析下

共享电单车厂家

自助洗车机 自助洗车加盟

脚本库详细说明 - 大屏云极简使用手册

shulinwu

自助扫码洗车机加盟怎么加

共享电单车厂家

自助洗车机价格 自助扫码洗车机 自助洗车怎么加盟 共享洗车加盟

Redis(一)原理与基本使用

神农写代码

数据产品经理实战-如何做方案

第519区

数据产品经理 解决方案

【OH干货】给OpenHarmony 开发板配置网络

拓维信息

开源 OpenHarmony

汇聚创新力量 企业智能化转型开源社区“星策”正式成立

第四范式开发者社区

程序员 金融 开源社区 企业转型 企业数据化转型

6元自助洗车设备一套多少钱一台

共享电单车厂家

自助洗车机多少钱 自助洗车机价格 自助洗车加盟 6元自助洗车设备 6元自助洗车机

T3 出行 Apache Kyuubi Flink SQL Engine 设计和相关实践

网易数帆

sql 大数据

Linux云计算之VSFTP服务器概述-安装vsftp服务器端、客户端

学神来啦

Linux 运维

互联网裁员风暴的一些思考

慕枫技术笔记

3月月更

英特尔陈伟:以智能边缘解锁数智时代新未来

科技新消息

怎样搭建企业内部wiki

小炮

企业 wiki

打通源码!高效定位代码问题|云效工程师指北

阿里云云效

阿里云 源码 云原生 代码 代码管理

数字资产管理系统解决方案

低代码小观

数字化 资产管理 企业管理系统 数字化经济 企业管理软件

6元共享24小时自助洗车加盟如何

共享电单车厂家

24小时共享自助洗车 6元自助洗车加盟

2022年中国智能支付终端市场专题分析

易观分析

数字人民币 智能支付终端

架构训练营-模块一

哈喽

「架构实战营」

源声|听听赛博堡垒的锻造之路,以及云安全那些事儿

OpenTEKr

网络安全 软件开发 开源技术

Kubernetes官方java客户端之二:序列化和反序列化问题

程序员欣宸

Kubernetes java client

最新太原市五家正规等保测评机构名单看这里!

行云管家

网络安全 等保 等保测评 太原 等保测评机构

Dcm4chee--MySql版Docker镜像制作

birdbro

Docker DCM4CHE

体验了一把最近很火的开源项目-MASA Blazor

MASA技术团队

C# .net 微软 组件库

OpenHarmony v3.1 Release版本发布

OpenHarmony开发者

OpenHarmony

全方位讲解 Nebula Graph 索引原理和使用

NebulaGraph

索引 知识图谱 #数据库

【多云管理】多云管理如何化繁为简提高效率?

行云管家

云计算 企业上云 多云管理 多云

Linux环境,C/C++语言手写代码实现线程池

Linux服务器开发

c++ 线程池 Linux后台开发 服务端开发 线程池源码

研发数字化管理,如何打破“上班摸鱼下班加班”的怪圈

方云AI研发绩效

团队管理 研发管理 研发效能 数字化转型 研发管理工具

6元自助洗车店加盟需要多少费用

共享电单车厂家

自助洗车加盟 6元自助洗车店加盟 6元自助洗车 自助洗车加盟费

使用 AWS CDK 轻松构建云原生应用之 EKS 平台(一)_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章