我有一个ECS集群(通过Terraform创建)。运行正常并且能够根据请求进行交付。并且可以使用负载平衡器URL / DNS访问应用程序
我有一个詹金斯(Jenkins)工作来做追踪工作。
执行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耗尽
它并没有改变
现在,如果我手动编辑该组中的Targets和Attache实例,则一切正常。
但是我希望这是自动化的,并且实例应该在目标组中自动更新