“Docker & AWS ECS ile kim bilir neredeyim“ Ortaya Karışık Yazılım Serisi — 4

Kemalcan Bora
4 min readJan 7, 2021

--

Previously on Ortaya Karışık Yazılım Serisi (Ee anlatsana, sık sık Elasticsearch kullanır mısın ?) =>LINK

Geçtiğimiz yazı serisini okuyanlar hatırlayacaklardır Redis, Elasticsearch kısmını docker-compose üzerinden çalıştırmıştık yazdığımız bir kaç python kodu ile de bunu test etmiştik. Evet her şey iyi güzel de bunu nasıl en ucuz yollu deploy edebiliriz sorusunun cevabını hala vermedik. Aslında burada aws servislerinden ECS’yi konu edeceğiz peki nedir bu AWS ECS ?

https://www.computing.co.uk/api/v1/wps/2136edb/8efaf5e2-4687-46e9-a8df-3e1a7493e150/3/AWS-580x358.jpg

“Amazon Elastic Container Service (Amazon ECS), tam olarak yönetilen bir container düzenleme hizmetidir. Duolingo, Samsung, GE ve Cookpad gibi müşteriler güvenlik, güvenilirlik ve ölçeklenebilirlik nedeniyle en hassas ve görev açısından kritik uygulamalarını çalıştırmak için ECS’yi kullanıyor.

ECS, birçok nedenden dolayı container’ları çalıştırmak için mükemmel bir seçimdir. İlk olarak ECS kümelerinizi, container’lar için sunucusuz bir işlem olan AWS Fargate’i kullanarak çalıştırmayı seçebilirsiniz.”[1]

https://volumetree.com/wp-content/uploads/2019/11/Serverless-Web-Application.png.png

PatKüt girişme zamanı

İlk olarak awscli’yi yüklemek ile başlıyoruz nedir bu awscli?

“AWS Komut Satırı Arabirimi (CLI), AWS hizmetlerinizi yönetmek için kullanabileceğiniz birleşik bir araçtır. Tek bir aracı indirip yapılandırarak birden çok AWS hizmetini komut satırından kontrol edebilir ve betikler aracılığıyla otomatikleştirebilirsiniz.” [2]

sudo apt-get install awscli

awscli yüklediğimiz aws configure kısmını halletmemiz gerekiyor bu aslında en basit şekilde awsden edindiğimiz secret key, key_id ve region.

aws configure

dediğimiz anda bizden bir kaç bilgi isteyecek;

aws_secret_access_key = inanılmaz-secret-key
region = us-east-1
aws_access_key_id = inanılmaz-access-key-id

şimdi burada önemli bir diğer nokta ECS-cli yüklememiz gerekiyor. Bazen docker kısmında hata verebiliyor bu sebepten dolayı docker’ı en güncel versiyonda tutmanızda fayda var.

sudo apt-get update
sudo apt-get upgrade docker-ce
UBUNTU:
sudo curl -Lo /usr/local/bin/ecs-cli https://amazon-ecs-
cli.s3.amazonaws.com/ecs-cli-linux-amd64-latest
MAC:
sudo curl -Lo /usr/local/bin/ecs-cli https://amazon-ecs-cli.s3.amazonaws.com/ecs-cli-darwin-amd64-latest
sudo chmod +x /usr/local/bin/ecs-cliecs-cli --version

Eğer burada ecs-cli — version sonrasında bir hata çıkmazsa süper. Eğer hata alırsanız ilk önce docker güncelleyin ardından ECS entegrasyonunu elde etmek için bir ECS docker bağlamı kullanmanız gerekir. İlk olarak etc/docker/daemon.jsoniçindeki kısmı etkinleştirin.

{
"experimental": true
}

ve adım adım sona geliyoruz gerisi aslında ufak tefek docker bilgisine bağlı oluyor ilk yapmamız gereken bir context oluşturmak normalde;

sudo docker context create ecs beybiliboiveyasudo docker context create ecs --profile $AWS_PROFILE --region $AWS_REGION beybiliboi

dediğimiz anda ecs üzerine beybiliboi isimli bir context create edilmesi gerekiyor fakat “create arg. eksik var “ gibi bir hata alıyorsanız bunun anlamı aws ecs-cli kısmında yüklemeyi eksik yaptınız.

docker context create sonrasında bize neyi kullanarak create edeceğini soruyor benim hazır profil olduğu için direk oradan yürüdüm.

Successfully created ecs context “beybiliboi"

Eğer docker context list derseniz size create olmuş contextleri ve tiplerini gösterir

beybiliboi type olarak ecs gözüküyor süper! Şimdi ise bunu kullanarak ayağa kaldıracağız.

sudo docker context use beybiliboi
sudo docker compose up

İşlem biraz uzun sürüyor ama genel olarak size loglarda süreçten bahsediyor.

aws ecs docker compose süreci

Deploy olduktan sonra akıllara gelecek ilk soru; “olm ben bunu deploy ettim ama nereye ettim?” Aslında şöyle ki bunu öğrenmenin yolu yine docker’dan geçiyor eğer docker compose up yaptıysanız docker compose ps demeniz yeterli.

sudo docker compose ps

Ne kadar net gözüküyor bilmiyorum ama ports kısmında erişebileceğiniz URL’i görebilirsiniz

okys-LoadBa-1POQGFCJDEINB-77c3a7c3bcce8bb9.elb.us-east-1.amazonaws.com:6379

Yine bunu aws panelinden bakmak isterse aws ecs servisi üzerinden bakabilirsiniz;

Burada bir diğer önemli olan nokta region kısmı yani deploy ettiğiniz anda eğer ecs servisi üzerinden göremezseniz büyük olasılıkla farklı bir region’da atmışsınızdır.

sudo docker compose down

dediğiniz anda ise compose uçar gider. En önemli kısımlardan birisi docker-compose file oluştururken yazdığınız bazı parametrelere amazon izin vermiyor ayrıntılı bilgi için link.

Yine klasik kapanışımız ile kapatalım. Ortaya Karışık Yazılım Serisi’ne kendinizi yakın hissediyorsanız paylaşarak destek olabilirsiniz yaptığım hata ve öneriler için Twitter üzerinden ulaşabilirsiniz.

“Kah bugdan dökülür, kah para yazar en hazin sözler ‘server’ diye başlar. AWS ECS & Chalice ile serverless“ Ortaya Karışık Yazılım Serisi — 5

Referanslar

--

--

No responses yet