目录
阅读时间: 5 分钟
讲座
什么是AWS Fargate?
在这篇博客中,我们将看到如何使用AWS CDK部署Fargate。根据AWS的官方文档,"AWS Fargate是一个无服务器、即用即付的计算引擎,让你专注于构建应用程序,而无需管理服务器。"
简单地说,Fargate允许你在AWS的ECS上运行容器,而不需要管理服务器。使用它使管理更加容易,因为人们不需要担心使用什么服务器类型或何时扩展集群。有了它,容器的运行不需要任何EC2实例。
Fargate的特点
使得Fargate成为一个独特的服务的各种功能如下:
1 - 负载平衡
当启动Fargate服务时,如果你指定IP地址,它就会在负载平衡器上注册。
2- 联网
fargate的任务都是在VPC下完成的,它支持aws vpc网络模式,使用这种模式,服务将与其他服务分开。此外,这有助于完全控制该服务。
3 - 配置可以随时管理
Fargate的配置足够大,有多种CPU和内存的组合来密切配合需求。其范围从2GB到8GB。这种配置的灵活性有助于在任何时候达到任何配置。
4- 拥有对容器注册表的支持
使用fargate的任务执行角色,可以很容易地进行认证,以帮助从ECR提取图像。此外,它还有助于与docker hub进行连接。
如何使用AWS CDK部署Fargate?
先决条件:
1- 一个aws账户
2 - 配置好的AWS客户端
3 - 用于安装cdk的npm包管理器
4- 安装了node->版本>14.0.0
现在让我们来看看步骤。
步骤1 - 安装aws cdk
要安装aws cdk,请运行以下命令
npm install -g aws-cdk
运行上述命令后,使用下面的命令检查版本:-
cdk --version
第2步 - 创建一个带有基本文件的文件夹进行部署
下面的命令将有助于创建这个文件夹。
mkdir aws-fargate
cd aws-fargate
现在,在上述文件夹中创建以下文件:
a - cdk.json文件
cdk.json文件的两个主要目的是:告诉CDK CLI如何执行我们的CDK代码。并跟踪功能标志,这使得CDK团队能够安全地推出新功能和导致破坏性变化的错误修复。
该文件中的代码是
{ "app": "node --experimental-specifier-resolution=node --loader ts-node/esm index.ts" }
b - package.json文件
这是你的npm模块清单。它包括像你的应用程序的名称,版本,依赖性和构建脚本,如 "watch "和 "build "等信息。
其代码是
{
"name": "fargate-application",
"version": "1.0.0",
"description": "Running an application load balanced service on Fargate",
"private": true,
"type": "module",
"scripts": {
"build": "tsc",
"watch": "tsc -w",
"cdk": "cdk"
},
"author": {
"name": "Amazon Web Services",
"url": "https://aws.amazon.com",
"organization": true
},
"license": "Apache-2.0",
"devDependencies": {
"@types/node": "^8.10.38",
"aws-cdk": "*",
"typescript": "~4.6.0"
},
"dependencies": {
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0",
"ts-node": "10.7.0"
}
}
package.json文件描述了应用程序的名称。它有各种规格:
- 第一个规格是关于名称、描述和脚本。这些脚本在提示中运行。
- 第二个规范是关于作者的。
- 第三和第四个规范是关于许可证和应用程序中涉及的依赖关系。
c - index.ts文件
这是一个类型的文件,基本上是实现的主要代码。在我们的文件中,写的代码是创建vpc和实例化的Fargate服务,只有集群和图像。
import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as ecs from "aws-cdk-lib/aws-ecs";
import * as ecs_patterns from "aws-cdk-lib/aws-ecs-patterns";
import * as cdk from "aws-cdk-lib";
class FirstFargate extends cdk.Stack {
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const vpc = new ec2.Vpc(this, 'MyVpc', { maxAzs: 2 });
const cluster = new ecs.Cluster(this, 'Cluster', { vpc });
new ecs_patterns.ApplicationLoadBalancedFargateService(this, "FargateService", {
cluster,
taskImageOptions: {
image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"),
},
});
}
}
const app = new cdk.App();
new FirstFargate(app, 'FirstService');
app.synth();
所以上面的代码将做以下工作:
- 导入所需的库。
- vpc和Fargate集群将被创建。
- 创建构造函数以调用各种道具。
- 图像将从注册表中提取。
d - tsconfig.json
tsconfig.json文件指定了根文件和编译项目所需的编译器选项。
下面的代码显示了上述文件的使用情况。
{
"compilerOptions": {
"target":"ES2018",
"module": "ESNext",
"moduleResolution": "node",
"lib": ["es2016", "es2017.object", "es2017.string"],
"strict": true,
"noImplicitAny": true,
"esModuleInterlop": true,
"strictNullChecks": true,
"noImplicitThis": true,
"alwaysStrict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": false,
"inlineSourceMap": true,
"inlineSources": true,
"experimentalDecorators": true,
"strictPropertyInitialization":false
},
"ts-node": {
"esm": true
},
"lib": ["esnext"]
}
上面的代码显示了编译器选项,它基本上显示了编译上述项目时的所有选项。
到现在为止,这些都是文件和演示的需要,为了部署Fargate,让我们继续前进
第3步 - 部署上述堆栈
为了部署上述堆栈,在文件所在的同一目录下运行以下命令。
npm install
上述命令将安装堆栈文件中提到的所有依赖项。
接下来运行下面的命令。
cdk bootstrap
上面的命令将准备环境。上面的命令将在AWS中制作云计算模板。它包含了所有部署时需要的资源。
上面的输出显示环境已经被启动了。在验证了这些变化之后,让我们来部署应用程序。
为了部署堆栈,运行下面的命令。
cdk deploy
该命令部署了fargate服务。
输出1


CDK部署
输出2

你可以看到堆栈已经被部署了。
下面是在AWS上创建的堆栈的输出。

**注意:**不要忘记运行 "**cdk destroy "**命令,因为正在使用的资源将产生高额费用。
我们通过上述部署实现了什么?
- 它将自动配置一个负载平衡器。
- 创建一个安全组,并使负载平衡器与之集成。
- 它为ECR添加权限。
- 它可以防止一个实例被自动删除。
- 通过上述演示,可以实现自动扩展。
结语
最后,我们看到了如何在不管理服务器的情况下运行容器。此外,使用Fargate使整个过程自动化。Fargate与Elastic Container Service和Elastic Kubernetes Service都兼容。
学习愉快!!!谢谢
谢谢你!!!!。