在 AWS ECS 服务上部署示例应用程序作为概念验证
按照以下步骤在 AWS ECS 服务上试用示例应用程序作为概念验证
- 登录 AWS 管理控制台并转至 AWS 服务目录 - >计算 - > Ec2
- 使用 amazon linux 64 位操作系统创建 VM(EC2 实例),我们将使用它来配置 docker,git,AWS ECS 代理工具和其他工具。我们还将使用相同的 VM 作为 ECS 群集中的节点来部署基于容器的应用程序。按照以下步骤创建 VM。
a)按照常规步骤创建 EC2 实例,在 EC2 实例创建期间的后续步骤中给出特别的含义。
b)选择具有最少权限的 IAM 角色 -
AmazonEC2ContainerServiceforEC2Role
c)确保在 VM 上安装了 Java
- 安装 docker [执行以下命令]
首先更新 yum 软件包存储库
sudo yum update –y
现在要安装 docker 执行 yum install
sudo yum install -y docker
- 启动 docker 服务
sudo service docker start
- 将 ec2-user 添加到 docker 组,这样就可以在不使用 sudo 的情况下执行 Docker 命令。
sudo usermod -a -G docker ec2-user
- 从 EC2 注销并再次重新登录以获取新的 docker 组权限。
- 验证 ec2 用户可以在没有 sudo 的情况下运行 Docker 命令。
docker info
- 安装 Git
sudo yum install -y git
- 从 git 克隆 Ec2 实例上的示例 PHP 应用程序。我们将此应用程序用于我们的 POC。
git clone https://github.com/awslabs/ecs-demo-php-simple-app
cd ecs-demo-php-simple-app
通过列出目录内容来验证 Dockerfile 是否存在
ls
- 转到 AWS 服务目录 - >计算 - > Ec2 容器服务
- 单击开始
- 点击取消
- 单击左侧存储库菜单中的存储库
- 单击开始
- 输入存储库名称并单击下一步
- 配置 Ec2 工具
aws configure
根据你的帐户提供 AWS Access 密钥 ID,秘密访问密钥,默认区域名称
- 构建,标记和推送 Docker 镜像
a)检索 docker login 命令,该命令可用于向注册表验证 Docker 客户端:
aws ecr get-login --region us-east-1
b)运行命令 return 作为上一步的输出
- 从 Dockerfile 构建 Docker 镜像。 (回想一下你下载了一个示例泊坞窗应用程序的步骤 9)
a)
docker build -t amazon-ecs-sample .
(注意“。”代表当前目录)
b)运行 docker 镜像以验证图像是否已正确创建,并且图像名称包含可将更改推送到 docker 镜像的存储库
docker images
c)运行新构建的图像。 -p 80:80 选项将容器上的公开端口 80 映射到主机系统上的端口 80(在本例中为 Ec2 实例)。
docker run -p 80:80 amazon-ecs-sample
忽略警告“apache2:无法可靠地确定服务器的完全限定域名,使用 172.17.0.2 for ServerName”
- 尝试在浏览器上访问示例应用程序网页,确保在与该实例关联的安全组中打开端口 80
http://<ec2-instance-dns-address>
- 按 ctrl + c 键,这将停止泊坞窗图像。应该无法访问示例应用程序。
- 现在,在成功验证我们的示例 docker 应用程序之后,我们将尝试配置一个集群以自动运行示例应用程序。此外,出于演示目的,我们将尝试将现有的 ec2 实例用作群集中的节点。这可以通过在 ec2 实例上安装代理程序来实现。
- 在 ec2 实例上安装 Amazon ECS 容器代理
a)
sudo yum install -y ecs-init
b)重启 docker 守护进程
sudo service docker restart
c)启动 ecs-init upstart 工作
sudo start ecs
d)(可选)你可以使用代理内省 API 验证代理是否正在运行并查看有关新容器实例的一些信息。确保端口 51678 在安全组中已打开。
curl http://localhost:51678/v1/metadata
- 转到 AWS 服务目录 - >计算 - > Ec2 容器服务 - >群集并验证是否已创建默认群集
- 现在我们继续创建一个任务组并添加我们的 docker 镜像作为在集群上运行的任务
a)检查 ecs-demo-php-simple-app 文件夹中的 simple-app-task-def.json 文件。
b)编辑 simple-app-task-def.json 并重新编写 momeory,以便它可以在符合条件的免费层实例上运行(假设有人使用符合条件的免费套餐 ec2 实例进行此 POC,否则无需减少内存限制)
c) 在 simple-app-task-def.json 文件中的所有事件中更新内存= 250
d) 使用 simple-app-task-def.json 文件注册任务定义。
aws ecs register-task-definition --cli-input-json file://simple-app-task-def.json
e)转到 ec2 容器服务页面中的任务定义,你将找到已注册的任务定义
f)使用以下 AWS CLI 命令运行具有 console-sample-app 任务定义的任务。
aws ecs run-task --task-definition console-sample-app
g)在浏览器中打开示例 Web 应用程序,它应该是可访问的(参见步骤 19)
感谢你的阅读,请分享你的意见和查询,以便进行后续讨论。