在 AWS ECS 服务上部署示例应用程序作为概念验证

按照以下步骤在 AWS ECS 服务上试用示例应用程序作为概念验证

  1. 登录 AWS 管理控制台并转至 AWS 服务目录 - >计算 - > Ec2
  2. 使用 amazon linux 64 位操作系统创建 VM(EC2 实例),我们将使用它来配置 docker,git,AWS ECS 代理工具和其他工具。我们还将使用相同的 VM 作为 ECS 群集中的节点来部署基于容器的应用程序。按照以下步骤创建 VM。
    a)按照常规步骤创建 EC2 实例,在 EC2 实例创建期间的后续步骤中给出特别的含义。
    b)选择具有最少权限的 IAM 角色 -
    AmazonEC2ContainerServiceforEC2Role
    c)确保在 VM 上安装了 Java
    StackOverflow 文档
  3. 安装 docker [执行以下命令]
    首先更新 yum 软件包存储库
sudo yum update –y

现在要安装 docker 执行 yum install

sudo yum install -y docker
  1. 启动 docker 服务
sudo service docker start
  1. 将 ec2-user 添加到 docker 组,这样就可以在不使用 sudo 的情况下执行 Docker 命令。
sudo usermod -a -G docker ec2-user
  1. 从 EC2 注销并再次重新登录以获取新的 docker 组权限。
  2. 验证 ec2 用户可以在没有 sudo 的情况下运行 Docker 命令。
docker info
  1. 安装 Git
sudo yum install -y git
  1. 从 git 克隆 Ec2 实例上的示例 PHP 应用程序。我们将此应用程序用于我们的 POC。
git clone https://github.com/awslabs/ecs-demo-php-simple-app  

cd ecs-demo-php-simple-app  

通过列出目录内容来验证 Dockerfile 是否存在

ls
  1. 转到 AWS 服务目录 - >计算 - > Ec2 容器服务
  2. 单击开始
    StackOverflow 文档
  3. 点击取消
    StackOverflow 文档
  4. 单击左侧存储库菜单中的存储库
    StackOverflow 文档
  5. 单击开始

StackOverflow 文档

  1. 输入存储库名称并单击下一步
    StackOverflow 文档
  2. 配置 Ec2 工具
aws configure

根据你的帐户提供 AWS Access 密钥 ID,秘密访问密钥,默认区域名称

  1. 构建,标记和推送 Docker 镜像
    a)检索 docker login 命令,该命令可用于向注册表验证 Docker 客户端:
aws ecr get-login --region us-east-1

b)运行命令 return 作为上一步的输出

  1. 从 Dockerfile 构建 Docker 镜像。 (回想一下你下载了一个示例泊坞窗应用程序的步骤 9)
    a)
docker build -t amazon-ecs-sample .

(注意“。”代表当前目录)
b)运行 docker 镜像以验证图像是否已正确创建,并且图像名称包含可将更改推送到 docker 镜像的存储库

docker images

StackOverflow 文档

c)运行新构建的图像。 -p 80:80 选项将容器上的公开端口 80 映射到主机系统上的端口 80(在本例中为 Ec2 实例)。

docker run -p 80:80 amazon-ecs-sample

忽略警告“apache2:无法可靠地确定服务器的完全限定域名,使用 172.17.0.2 for ServerName”

  1. 尝试在浏览器上访问示例应用程序网页,确保在与该实例关联的安全组中打开端口 80
http://<ec2-instance-dns-address>

StackOverflow 文档

  1. 按 ctrl + c 键,这将停止泊坞窗图像。应该无法访问示例应用程序。
  2. 现在,在成功验证我们的示例 docker 应用程序之后,我们将尝试配置一个集群以自动运行示例应用程序。此外,出于演示目的,我们将尝试将现有的 ec2 实例用作群集中的节点。这可以通过在 ec2 实例上安装代理程序来实现。
  3. 在 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
  1. 转到 AWS 服务目录 - >计算 - > Ec2 容器服务 - >群集并验证是否已创建默认群集
    StackOverflow 文档
  2. 现在我们继续创建一个任务组并添加我们的 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)

感谢你的阅读,请分享你的意见和查询,以便进行后续讨论。