AWS ECS - konteynerlarni tarqatish usullari

Foydalanish xodisasiga o'xshaydi - ishlab chiquvchi ba'zi kodlarni o'zgartiradi va quyidagi narsalarni avtomatik ravishda amalga oshiradi - qurilgan ishlarni, yaratilgan dastur asarini, artefakt bilan hosil qilingan docker tasvirini, Docker ro'yxatga olish kitobiga surilgan tasvirni, AWS ECS vazifalarini va ECS xizmatlarini yangilab turish.

I want to know what are the ways to achieve the above automation of update of AWS ECS services. Till now I have implemented AWS ECS update from Jenkins build using -
1>run post build AWS CLi scripts from Jenkins to update ECS
2>post build action or pipeline step to invoke AWS Lambda function. I have created one Lambda function in Java to implement that.

Iltimos, men yuqorida aytib o'tishimiz mumkin bo'lgan boshqa yo'llarni bering. Rahmat.

1
Xizmatni yangilashni xohlaysizmi? Agar shunday bo'lsa: docs.aws.amazon.com/cli/so'nggi/mos yozuvlar/ecs/& hellip;
qo'shib qo'ydi muallif Snarf, manba
Xizmatni yangilashni xohlaysizmi? Agar shunday bo'lsa: docs.aws.amazon.com/cli/so'nggi/mos yozuvlar/ecs/& hellip;
qo'shib qo'ydi muallif Snarf, manba

8 javoblar

Men doimiy ravishda Docker konteynerlarini CircleCI dan AWS ECSga tarqatyapman.

Olib tashlash oqimining kontseptsiyasi quyidagicha:

  1. Build and tag a new Docker image
  2. Login to AWS ECR and push the image
  3. Update task definitions and services of ECS with ecs-deploy

ecs-deploy is a useful script that updates Docker images in ECS.

https://github.com/silinternational/ecs-deploy

2
qo'shib qo'ydi

Men doimiy ravishda Docker konteynerlarini CircleCI dan AWS ECSga tarqatyapman.

Olib tashlash oqimining kontseptsiyasi quyidagicha:

  1. Build and tag a new Docker image
  2. Login to AWS ECR and push the image
  3. Update task definitions and services of ECS with ecs-deploy

ecs-deploy is a useful script that updates Docker images in ECS.

https://github.com/silinternational/ecs-deploy

2
qo'shib qo'ydi

Take a look at Codefresh - https://docs.codefresh.io/docs/amazon-ecs

Siz quvurni qurishingiz mumkin

  1. qadamni yaratish
  2. Ro'yxatdan o'tish kitobiga suring
  3. ECS ga murojaat qiling.

Bu oson

0
qo'shib qo'ydi

Take a look at Codefresh - https://docs.codefresh.io/docs/amazon-ecs

Siz quvurni qurishingiz mumkin

  1. qadamni yaratish
  2. Ro'yxatdan o'tish kitobiga suring
  3. ECS ga murojaat qiling.

Bu oson

0
qo'shib qo'ydi

Take a look at Codefresh - https://docs.codefresh.io/docs/amazon-ecs

Siz quvurni qurishingiz mumkin

  1. qadamni yaratish
  2. Ro'yxatdan o'tish kitobiga suring
  3. ECS ga murojaat qiling.

Bu oson

0
qo'shib qo'ydi

U erda CI/CD-uskunalarning bir tonasi mavjud bo'lsa-da, men chiqishni erta boshlaganimdan keyin, CI/CD-kanallari o'rniga kichik buyruq yozishni qaror qildim.

ecs-deploy script foydalanib, yozgan bir marta bosish skriptni ECS ga docker image ning harakatlanuvchi joylashuviga erishish uchun qo'shadi.

Buni o'zingizning dev yoki qurish/tarqatish qutisidan mahalliy sifatida yoki Jenkins yoki mahalliy tuzish vositasidan foydalanishingiz mumkin.

#!/bin/bash

# automatically login to AWS
eval $(aws ecr get-login)

# build local docker image and push repo to AWS
docker build -t  .
docker tag :latest :latest
docker -D -l debug push :latest

# deploy to ECS 
ecs-deploy/ecs-deploy -m 50 -k  -s  -r  -c  -n  -i :latest

Parametrlar:

  • cluster-name: Your cluster name in ECS
  • service-name: Your service name that you had created in ECS
  • yourECSRepoURL: ECS Repository URL
  • yourlocaldockerimagetag: Any local image tag name
  • access-key: your AWS access key for deployments
  • secret-key: your AWS secret key

Ushbu skriptdan oldin ecs-deploy ni o'rnatganingizga ishonch hosil qiling.

-M 50, tugunlarning soni 50% ga tushib qolsa ham, uni joylashtirishi mumkinligini bildiradi. Ideal holda siz tarqatishlarni amalga oshirish uchun qo'shimcha tugunga ega bo'lar edingiz, ammo agar bu sozlamani hisobga olmasangiz, dasturlarning amalga oshirilishini ta'minlaydi.

Agar siz ELB (yuk dengeleyicisi) dan foydalanayotgan bo'lsangiz, maqsadli guruhlar uchun standart o'chirib qo'yish kechiktirilishi 5 daqiqani tashkil qiladi, bu esa biroz ortiqcha. Ro'yxatga olishni kechiktirish - ECS ning SIGTERM yoki SIGINTni docker konteyneriga jo'natmasidan oldin mavjud so'rovlarni bajarish uchun kutish vaqti. Buni EC2 boshqaruv panelidagi maqsadli guruhlarga borib, uni tahrirlash va uni tahrirlash uchun Xususiyatlarni tahrirlash-ni bosing. Aks holda, tarqatishingiz abadiy qabul qilinishi mumkin.

0
qo'shib qo'ydi

U erda CI/CD-uskunalarning bir tonasi mavjud bo'lsa-da, men chiqishni erta boshlaganimdan keyin, CI/CD-kanallari o'rniga kichik buyruq yozishni qaror qildim.

ecs-deploy script foydalanib, yozgan bir marta bosish skriptni ECS ga docker image ning harakatlanuvchi joylashuviga erishish uchun qo'shadi.

Buni o'zingizning dev yoki qurish/tarqatish qutisidan mahalliy sifatida yoki Jenkins yoki mahalliy tuzish vositasidan foydalanishingiz mumkin.

#!/bin/bash

# automatically login to AWS
eval $(aws ecr get-login)

# build local docker image and push repo to AWS
docker build -t  .
docker tag :latest :latest
docker -D -l debug push :latest

# deploy to ECS 
ecs-deploy/ecs-deploy -m 50 -k  -s  -r  -c  -n  -i :latest

Parametrlar:

  • cluster-name: Your cluster name in ECS
  • service-name: Your service name that you had created in ECS
  • yourECSRepoURL: ECS Repository URL
  • yourlocaldockerimagetag: Any local image tag name
  • access-key: your AWS access key for deployments
  • secret-key: your AWS secret key

Ushbu skriptdan oldin ecs-deploy ni o'rnatganingizga ishonch hosil qiling.

-M 50, tugunlarning soni 50% ga tushib qolsa ham, uni joylashtirishi mumkinligini bildiradi. Ideal holda siz tarqatishlarni amalga oshirish uchun qo'shimcha tugunga ega bo'lar edingiz, ammo agar bu sozlamani hisobga olmasangiz, dasturlarning amalga oshirilishini ta'minlaydi.

Agar siz ELB (yuk dengeleyicisi) dan foydalanayotgan bo'lsangiz, maqsadli guruhlar uchun standart o'chirib qo'yish kechiktirilishi 5 daqiqani tashkil qiladi, bu esa biroz ortiqcha. Ro'yxatga olishni kechiktirish - ECS ning SIGTERM yoki SIGINTni docker konteyneriga jo'natmasidan oldin mavjud so'rovlarni bajarish uchun kutish vaqti. Buni EC2 boshqaruv panelidagi maqsadli guruhlarga borib, uni tahrirlash va uni tahrirlash uchun Xususiyatlarni tahrirlash-ni bosing. Aks holda, tarqatishingiz abadiy qabul qilinishi mumkin.

0
qo'shib qo'ydi

U erda CI/CD-uskunalarning bir tonasi mavjud bo'lsa-da, men chiqishni erta boshlaganimdan keyin, CI/CD-kanallari o'rniga kichik buyruq yozishni qaror qildim.

ecs-deploy script foydalanib, yozgan bir marta bosish skriptni ECS ga docker image ning harakatlanuvchi joylashuviga erishish uchun qo'shadi.

Buni o'zingizning dev yoki qurish/tarqatish qutisidan mahalliy sifatida yoki Jenkins yoki mahalliy tuzish vositasidan foydalanishingiz mumkin.

#!/bin/bash

# automatically login to AWS
eval $(aws ecr get-login)

# build local docker image and push repo to AWS
docker build -t  .
docker tag :latest :latest
docker -D -l debug push :latest

# deploy to ECS 
ecs-deploy/ecs-deploy -m 50 -k  -s  -r  -c  -n  -i :latest

Parametrlar:

  • cluster-name: Your cluster name in ECS
  • service-name: Your service name that you had created in ECS
  • yourECSRepoURL: ECS Repository URL
  • yourlocaldockerimagetag: Any local image tag name
  • access-key: your AWS access key for deployments
  • secret-key: your AWS secret key

Ushbu skriptdan oldin ecs-deploy ni o'rnatganingizga ishonch hosil qiling.

-M 50, tugunlarning soni 50% ga tushib qolsa ham, uni joylashtirishi mumkinligini bildiradi. Ideal holda siz tarqatishlarni amalga oshirish uchun qo'shimcha tugunga ega bo'lar edingiz, ammo agar bu sozlamani hisobga olmasangiz, dasturlarning amalga oshirilishini ta'minlaydi.

Agar siz ELB (yuk dengeleyicisi) dan foydalanayotgan bo'lsangiz, maqsadli guruhlar uchun standart o'chirib qo'yish kechiktirilishi 5 daqiqani tashkil qiladi, bu esa biroz ortiqcha. Ro'yxatga olishni kechiktirish - ECS ning SIGTERM yoki SIGINTni docker konteyneriga jo'natmasidan oldin mavjud so'rovlarni bajarish uchun kutish vaqti. Buni EC2 boshqaruv panelidagi maqsadli guruhlarga borib, uni tahrirlash va uni tahrirlash uchun Xususiyatlarni tahrirlash-ni bosing. Aks holda, tarqatishingiz abadiy qabul qilinishi mumkin.

0
qo'shib qo'ydi