У меня есть кластер ECS (создание Terraform). который работает нормально и может доставить согласно запросу. и приложение доступно с помощью балансировщика нагрузки URL / DNS
У меня есть работа Дженкинса, чтобы выполнять следующие действия.
- Оформить заказ из Git
- Сборка приложения
- Создание и отправка изображения
- Определение задачи обновления
- Служба обновления
При выполнении задания 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 балансировщика нагрузки, как раньше.
что я нашел
Зарегистрировать цель в целевой группе балансировщика нагрузки не безопасно. Статус истощается.
Показывается как показано ниже
Идентификатор экземпляра Имя Порт Доступность Состояние зоны
i-0ed3cc736df922722 Экземпляр кластера 8484 us-east-1a Draining
и оно не меняется
Теперь, если я вручную отредактирую Targets и приложу экземпляр в группе, все работает нормально.
Но я хочу, чтобы это было автоматизировано, и экземпляр должен автоматически обновляться в целевой группе