Как да

AWS ECS автоматично актуализира ECS услугите с помощта на CodePipeline

AWS ECS автоматично актуализира ECS услугите с помощта на CodePipeline

Тази статия е част 4 от 4-частично ръководство за стартиране на Docker контейнери на AWS ECS. ECS означава Elastic Container Service. Това е управлявана контейнерна услуга, която изпълнява докер контейнери. Въпреки че AWS предлага и управление на контейнери с Kubernetes, (EKS) има и свое собствено решение (ECS).

Другите части на ръководството, които вече са обхванати в отделни статии, са:

Част 4 от това ръководство ще обхване „Създаване на тръбопровод за актуализиране на задачите / контейнерите, изпълнявани в ECS клъстера“. Актуализацията на контейнера се случва всеки път, когато натиснем промяна в хранилището CodeCommit.

За тази демонстрация ще създадем конвейер за актуализиране на услугата и задачата, изпълнявани в ECS клъстера, използвайки CodePipeline. Предполагаме, че изходният код на проекта е в хранилище на CodeCommit. CodePipeline обаче може да избира код от различни инструменти за контрол на версиите, включително:

Изисквания / предпоставки

Създайте проект за изграждане

Използвайки CodeBuild, ние ще създадем проект за изграждане, който ще изгради образ на докер от файл на докер, изпратен в нашето хранилище за фиксиране на код. След това ще избута изображението на докера в регистъра ECR.

В конзолата CodeBuild щракнете върху създаване на проект за изграждане.

Създаване, изграждане на проект

Конфигурации на проекта на ECS CodeBuild:

След това в конфигурациите на проекта въведете името и описанието на проекта си. Също така можете да добавяте тагове за вашия проект за изграждане.

Конфигурации на проекта

За източник изберете CodeCommit. Ако приемем, че вашият код на проекта е изпратен в хранилище на Codecommit.

Източник на проекта CodeBuild

След това под Конфигурации на околната среда изберете средата, в която искате да бъде изпълнен вашият проект за изграждане. Тъй като нашият образ е Linux образ, ние избрахме Linux среда.

Конфигурации на среда на CodeBuild

За ролята изберете нова сервизна роля. N / B: Уверете се, че към ролята е прикрепена правилата AmazonEC2ContainerRegistryFullAccess. В противен случай CodeBuild няма да работи.

Конфигурирайте CodeBuild Service Role

ECS CodeBuild BuildSpec.yml:

Под BuildSpec щракнете върху Превключване към редактор и поставете следния код на вашия buildspec.yml. Уверете се, че за етикета на докер и командите за натискане на докер, вие замествате това с вашите команди за натискане на регистъра на ECR. Също така, името на изображението за изграждане на докер трябва да бъде заменено със съответното име на изображение на докер.

версия: 0.2 фази: инсталиране: версии за изпълнение: docker: 19 команди: - curl "https: // awscli.amazonaws.com / awscli-exe-linux-x86_64.zip "-o" awscliv2.zip "- разархивирайте awscliv2.цип - ./ aws / install pre_build: команди: - echo logging to ecr - $ (aws ecr get-login --no-include-email --region eu-central-1) build: команди: - echo start build на 'date' - cd ./ - docker build -t hello-world . - docker тагове hello-world: най-новите 429758582529.dkr.екр.eu-central-1.amazonaws.com / hello-world: най-новите post_build: команди: - echo build завършен на 'date' - echo pushing to repo - docker push 429758582529.dkr.екр.eu-central-1.amazonaws.com / hello-world: най-новите - echo Писане на дефиниции ... - printf '["name": "Hello_World", "imageUri": "% s"]' 429758582529.dkr.екр.eu-central-1.amazonaws.com / hello-world: най-новите> HelloWorldtaskdefinition.json артефакти: файлове: HelloWorldtaskdefinition.json

Тъй като изпращаме изображение на докер в регистър на ECR, не е необходимо да имаме артефакти. Следователно под артефакти не изберете нищо. За регистрационни файлове ще ги накараме да бъдат прехвърлени към регистрационна група на CloudWatch, която сте създали по-рано.

Конфигуриране на Артефакти и регистрационни файлове на проекта за изграждане

Накрая щракнете върху създаване на проект за изграждане.

Създайте тръбопровод за внедряване в ECS клъстер

След създаване на проект на CodeBuild, След това ще създадем конвейер за разполагане на образа на докер за актуализиране на услугата и задачи на клъстера на ECS.

В конзолата CodePipeline щракнете върху създаване на конвейер.

CodePipeline Създаване на тръбопровод

След това под настройките на тръбопровода въведете името на вашия тръбопровод. За ролята на услугата изберете Нова услуга роля. Под Разширени настройки изберете Местоположение по подразбиране за съхранение на артефакти и управляван ключ по подразбиране AWS за ключа за криптиране. След това щракнете върху следващия.

Настройки на тръбопровода

ECS CodePipeline Добавяне на изходен етап:

На етапа на добавяне на източник изберете CodeCommit като свой източник. След това изберете хранилището и клона на хранилището за вашия код. Под Промяна на опциите за откриване изберете CloudWatch събития. По този начин CloudWatch ще наблюдава активно промените в хранилището и всеки път, когато открие промяна, автоматично стартира конвейера. Щракнете върху следващия.

CodePipeline Добавяне на изходен етап

ECS CodePipeline Добавяне на етап на изграждане:

За Добавяне на етап на изграждане изберете доставчика си на компилация като CodeBuild. След това изберете регион, в който сте създали проекта за изграждане и изберете името на проекта за изграждане. Използвайте проекта за изграждане, който създадохме в раздела „Създаване на проект за изграждане“ на тази статия. За тип на компилация изберете единична компилация, след което щракнете върху следващата.

CodePipeline Добавяне на етап на изграждане

ECS CodePipeline Добавяне на етап на внедряване:

След това трябва да добавим етап на разполагане към нашия конвейер. На етапа на добавяне на внедряване изберете доставчика ни за внедряване да бъде Amazon ECS. За региона изберете региона, в който сте създали вашия ECS клъстер. След това под името на клъстера изберете името на вашия клъстер на ECS. Изберете името на услугата на ECS услугата, която искате да актуализирате в клъстера ECS.

Когато създадохме нашия проект за изграждане на нашия buildspec.yml създадохме файл с дефиниции на изображения. За този случай беше така HelloWorldtaskdefinition.json. Поставете името на този файл в раздела за файл с дефиниции на изображения на етапа на внедряване. И накрая, за времето за изчакване на разполагането, въведете времето в минути, което трябва да изчакаме за разполагането, преди да изтече времето за изчакване.

CodePipeline Добавяне на етап на разполагане

В раздела за преглед прегледайте настройките на тръбопровода и ако сте добре с всички конфигурации, щракнете върху създаване на тръбопровод.

Изпълнение на тръбопровода

Вече имате конвейер, който актуализира ECS услуга и задачи по всяко време, когато промяната бъде изтласкана в хранилището CodeCommit. По подразбиране актуализацията е подвижна актуализация. i.д. ECS ще внедри нова задача, работеща заедно с по-старата задача. Когато новата задача достигне стабилно състояние, тогава се превключва към новата задача и старата задача се прекратява.

Важни връзки

Други ръководства за AWS:

Щастлива сграда!!!

Може ли стилусът напълно да елиминира нуждата от мишка?
Всеки над определена възраст може да си спомни какъв е бил животът преди мишката. Когато седнахте на компютъра си, цялата ви работа беше извършена с н...
A.Аз. Смятан за решаване на проблема с фалшивите новини
В последно време бяхме обсадени от фалшиви новини. Това е навсякъде около нас. Това причинява проблеми, тъй като се маскира добре като истинска новина...
Сърдечните заболявания могат да бъдат определени от алгоритъма на Google
Разбира се, Google получава лош опит за начина, по който проследява хората, но този път те използват данните си по добър, здравословен начин. Те са ра...