Jenkins部署到AWS ECS中失败,无法向负载均衡器目标组注册实例

时间:2019-04-30 18:11:19

标签: jenkins-pipeline amazon-ecs

我有一个ECS集群(通过Terraform创建)。运行正常并且能够根据请求进行交付。并且可以使用负载平衡器URL / DNS访问应用程序

我有一个詹金斯(Jenkins)工作来做追踪工作。

  1. 从Git结帐
  2. 构建应用程序
  3. 创建并推送图像
  4. 更新任务定义
  5. 更新服务

执行jenkins作业后,将成功构建新映像并将其部署到ECS群集中。

Jenkins构建代码

stage("Deploy") {

sh  "sed -e  's;%BUILD_TAG%;${BUILD_NUMBER};g' accountupdateecs-task-defination.json > accountupdateecs-task-defination-${BUILD_NUMBER}.json"

def currTaskDef = sh (returnStdout: true,script:  "aws ecs describe-task-definition  --task-definition ${taskFamily}| egrep 'revision'| tr ',' ' '| awk '{print \$2}'").trim()  

def currentTask = sh (returnStdout: true,script:  "aws ecs list-tasks  --cluster ${clusterName} --family ${taskFamily} --output text | egrep 'TASKARNS' | awk '{print \$2}' ").trim()

if(currTaskDef) {sh  "aws ecs update-service  --cluster ${clusterName} --service ${serviceName} --task-definition ${taskFamily}:${currTaskDef} --desired-count 0 "}

if (currentTask) {sh "aws ecs stop-task --cluster ${clusterName} --task ${currentTask}"}

sh  "aws ecs register-task-definition  --family ${taskFamily} --cli-input-json ${taskDefile}"

def taskRevision = sh (returnStdout: true, script:  "aws ecs describe-task-definition  --task-definition ${taskFamily} | egrep 'revision' | tr ',' ' ' | awk '{print \$2}'").trim()

sh  "aws ecs update-service  --force-new-deployment --cluster ${clusterName} --service ${serviceName} --task-definition ${taskFamily}:${taskRevision} --desired-count 1" 

}

我可以使用实例IP地址访问更新的内容。这样可以确保应用程序正确部署。

什么不起作用

但是无法像以前一样通过负载平衡器DNS / URL访问应用程序。

我发现了什么

Load Balancer目标组下的注册目标不健康。状态正在耗尽。

它显示如下

实例ID名称端口可用区状态 i-0ed3cc736df922722群集实例8484 us-east-1a耗尽

enter image description here

它并没有改变

现在,如果我手动编辑该组中的Targets和Attache实例,则一切正常。

但是我希望这是自动化的,并且实例应该在目标组中自动更新

0 个答案:

没有答案