При развертывании Jenkins в aws ECS не удалось зарегистрировать экземпляр с целевой группой балансировщика нагрузки - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть кластер ECS (создание Terraform). который работает нормально и может доставить согласно запросу. и приложение доступно с помощью балансировщика нагрузки URL / DNS

У меня есть работа Дженкинса, чтобы выполнять следующие действия.

  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 балансировщика нагрузки, как раньше.

что я нашел

Зарегистрировать цель в целевой группе балансировщика нагрузки не безопасно. Статус истощается.

Показывается как показано ниже

Идентификатор экземпляра Имя Порт Доступность Состояние зоны i-0ed3cc736df922722 Экземпляр кластера 8484 us-east-1a Draining

enter image description here

и оно не меняется

Теперь, если я вручную отредактирую Targets и приложу экземпляр в группе, все работает нормально.

Но я хочу, чтобы это было автоматизировано, и экземпляр должен автоматически обновляться в целевой группе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...