Google ‘Cloud Run ☁️’
Bugün sizlere AloTech’te çokça kullandığımız heyecan verici bir konudan bahsetmek istiyorum: Google Cloud Run. Peki, Cloud Run tam olarak nedir?
Google Cloud Run, Google Cloud Platform’un bir servisidir. Bu servis, Docker konteynerlerimizi tamamen yönetilen bir ortamda, talep üzerine otomatik olarak ölçeklendirerek çalıştırmamızı sağlar. Aslında, uygulamamızı bir konteyner içinde paketleyip Cloud Run’da çalıştırmaya karar verdiğimizde, altta yatan tüm sunucu ve altyapı yönetimiyle uğraşmamıza gerek kalmaz 🫠.
Cloud Run’da çalıştırabileceğimiz kodlar için herhangi bir kısıtlama yoktur. Temel olarak herhangi bir programlama dilinde yazılmış kodu Cloud Run’da çalıştırabiliriz, yeter ki bu koddan bir docker konteyner imajı oluşturabiliyor olalım.
Ancak konteyner imajı oluşturmak zorunlu değildir. Eğer kodunuzu Go, Node.js, Python, Java, .NET Core veya Ruby gibi popüler dillerden birinde yazdıysanız, bu diller için hazırlanmış en iyi uygulamaları kullanarak konteyner imajı oluşturma işlemini atlayabilirsiniz.
Bu diller için Google Cloud, kaynak kodunuzu alıp otomatik olarak konteyner imajı oluşturup Cloud Run’da çalıştıran kaynak tabanlı dağıtım seçeneğini sunmaktadır.
Cloud Run’da kodunuzu çalıştırmanın iki yolu vardır: Hizmetler ve İşler.
- Cloud Run Hizmetleri: Web isteklerine veya olaylara yanıt veren kodları sürekli çalışır şekilde çalıştırmak için kullanılır.
- Cloud Run İşleri: Belirli bir işi yapıp iş bitince sonlandırılan kodları çalıştırmak için kullanılır.
Her ikisi de aynı ortamda çalışır ve Google Cloud üzerindeki diğer servislerle aynı entegrasyonlara sahiptir.
Bir servisin ya da işin Cloud Run’a dağıtılabilmesi için bir konteyner imajı içinde paketlenmesi gerekmektedir. Bir konteyner imajı, servisinizin çalışması için gereken her şeyi içeren bir pakettir. Bu, inşa edilen ürünleri, varlıkları, sistem paketlerini bir çalışma zamanını kapsar. Bu, konteynerleştirilmiş bir uygulamanın doğuştan taşınabilir olduğu anlamına gelir bir konteynerin çalışabileceği her yerde çalışır. İnşa edilen ürünlerin örnekleri arasında derlenmiş ikililer veya komut dosyaları bulunurken, çalışma zamanı örnekleri Node.js JavaScript çalışma zamanı veya bir Java sanal makinesi (JVM) olabilir.
Biz AloTech’te, Cloud Run’ın kodlarını çalıştırmada ek yük getirmediği için çok değerli bulup kullanıyoruz: Cloud Run’da herhangi bir ikiliyi çalıştırabilirsiniz. Daha fazla kolaylık arayan veya uygulamalarını konteynerleştirmeyi Google’a devretmek isteyen kullanıcılar için Cloud Run, kaynak tabanlı bir dağıtım sunmak üzere açık kaynaklı Google Cloud Buildpacks ile entegre olmaktadır.
Google Cloud Run’a Python Servisi Nasıl Yüklenir?
- Google Cloud hesabınız olmalı ve projenizde Cloud Run API’si etkinleştirilmiş olmalıdır.
- Google Cloud SDK’sı bilgisayarınıza kurulu olmalıdır.
- Docker bilgisayarınızda kurulu ve çalışır durumda olmalıdır.
Uygulamayı Deploy Etme
Öncelikle Dockerfile
adında bir dosya oluşturun:
# Python resmi imajını kullanıyoruz
FROM python:3.8-slim
# Çalışma dizinini ayarlayın
WORKDIR /app
# Bağımlılıkları kopyalayıp yükleyin
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Uygulamanızı kopyalayın
COPY . .
# Uygulamanın çalışacağı port
EXPOSE 8080
# Uygulamanızı çalıştırın
CMD ["python", "app.py"]
İçinde main.py
adında bir dosya oluşturun ve şunları yapıştırın:
import os
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
"""Örnek Merhaba Dünya rota."""
name = os.environ.get("NAME", "Dünya")
return f"Merhaba {name}!"
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Bu kod, “Merhaba Dünya” selamıyla yanıt veren temel bir Flask web sunucusunu kurar.
Sonraki adımda, bağımlılıklarımızı belirtelim. requirements.txt
adlı bir dosya oluşturun ve içine şunları yapıştırın:
Flask==2.1.0
gunicorn==20.1.0
Werkzeug==2.3.7
Bu dosyalarla birlikte, uygulamamız deploy edeceğiz.
Docker İmajını Oluşturma ve Yükleme
Öncelikle lokalde bir Docker imajı oluşturalım:
docker build -t my-python-app .
Bu imajı Google Container Registry'ye (GCR) yükleyelim:
# İmajı GCR'ye yükleyin
docker tag my-python-app gcr.io/YOUR_PROJECT_ID/my-python-app
docker push gcr.io/YOUR_PROJECT_ID/my-python-app
Cloud Run'da Servisi Başlatma
Artık imaj GCR'de olduğuna göre, onu Cloud Run'da başlatabiliriz:
gcloud run deploy my-python-service --image gcr.io/YOUR_PROJECT_ID/my-python-app --platform managed
Kaynakça: