1. Genel Bakış
Bu laboratuvarda, container mimarisine alınmış bir ortamda Python uygulamaları geliştirmekle görevli yazılım mühendisleri için geliştirme iş akışını kolaylaştırmak amacıyla tasarlanmış özellikler ve beceriler gösterilmektedir. Tipik container geliştirme yöntemleri, kullanıcının container ayrıntılarını ve container derleme sürecini anlamasını gerektirir. Buna ek olarak, geliştiricilerin uzak ortamlarda uygulamalarını test etmek ve hata ayıklamak için genellikle akışlarını kesmeleri, IDE'lerinden çıkmaları gerekir. Geliştiriciler, bu eğitimde bahsedilen araçlar ve teknolojiler sayesinde, IDE'lerinden ayrılmadan container mimarisine alınmış uygulamalarla verimli bir şekilde çalışabilirler.
Cloud Workstations nedir?
Cloud Workstations, Google Cloud'da yerleşik güvenlik ve önceden yapılandırılmış ancak özelleştirilebilir geliştirme ortamlarına sahip yönetilen geliştirme ortamları sağlar. Cloud Workstations'a tarayıcı tabanlı bir IDE üzerinden, birden fazla yerel kod düzenleyicisinden (ör. VSCode ya da IntelliJ IDEA Ultimate ve PyCharm Professional gibi JetBrains IDE'lerinden) veya SSH üzerinden erişin.
Cloud Workstations aşağıdaki kaynakları kullanır:
- Yöneticiler iş istasyonu kümeleri oluşturur
- Her bir iş istasyonu kümesinde, yöneticiler iş istasyonları için şablon görevi gören bir veya daha fazla iş istasyonu yapılandırması oluşturur.
- Geliştiriciler; Cloud IDE, dil araçları, kitaplıklar ve daha fazlasını sağlayan geliştirme ortamlarını tanımlayan iş istasyonları oluşturabilir.
Cloud Workstations, BT ve güvenlik yöneticilerinin geliştirme ortamlarını kolayca sağlamasını, ölçeklendirmesini, yönetmesini ve güvenli hale getirmesini sağlar. Ayrıca, geliştiricilerin tutarlı yapılandırmalar ve özelleştirilebilir araçlarla geliştirme ortamlarına erişmesine olanak tanır.
Cloud Workstations, uygulama geliştirme ortamlarınızın güvenlik duruşunu geliştirerek güvenliğin geriye kaydırılmasına yardımcı olur. VPC Hizmet Kontrolleri, özel giriş veya çıkış, zorunlu görüntü güncelleme ve Kimlik ve Erişim Yönetimi erişim politikaları gibi güvenlik özelliklerine sahiptir.
Cloud Code nedir?
Cloud Code, Kubernetes ve Cloud Run uygulamalarının tam geliştirme döngüsü için, örnek şablonlardan yeni bir uygulama oluşturup özelleştirmekten tamamlanmış uygulamanızı çalıştırmaya kadar IDE desteği sağlar. Cloud Code, çalışmaya hazır örnekler, kullanıma hazır yapılandırma snippet'leri ve özelleştirilmiş bir hata ayıklama deneyimiyle sizi bu yolda destekler. Bu sayede Kubernetes ve Cloud Run ile geliştirme çok daha kolay hale gelir.
Cloud Code özelliklerinden bazıları şunlardır:
- Uygulamaları sürekli olarak derleyin ve çalıştırın
- Geliştirme aşamasındaki Kubernetes uygulamanız için hata ayıklama desteği
- Günlük akışı ve görüntüleme
Diğer Cloud Code özellikleri hakkında daha fazla bilgi edinin.
Öğrenecekleriniz
Bu laboratuvarda, GCP'de container'larla geliştirme yapmaya yönelik aşağıdaki gibi yöntemleri öğreneceksiniz:
- Cloud Workstations'ı inceleyin
- İş İstasyonunu Başlat
- Cloud Code'u inceleyin
- Kubernetes'te hata ayıkla
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. İstediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersizdir ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de proje kimliğini (genellikle
PROJECT_ID
olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır. - Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Sonraki adımda, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Ortam Kurulumu
Cloud Shell'de projenizin kimliğini ve proje numarasını ayarlayın. Bunları PROJECT_ID
ve PROJECT_ID
değişkenleri olarak kaydedin.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
--format='value(projectNumber)')
Bu laboratuvarda GKE'ye kod dağıtacaksınız. IDE olarak Cloud iş istasyonlarını da kullanacaksınız.
Aşağıdaki kurulum komut dosyası, bu altyapıyı sizin için hazırlar.
- Kurulum komut dosyasını indirin ve yürütülebilir hale getirin.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/setup_with_cw.sh
chmod +x setup_with_cw.sh
setup_with_cw.sh
dosyasını açın ve şu anda CHANGEME olarak ayarlanmış şifrelerin değerlerini düzenleyin- Bu laboratuvarda kullanacağınız GKE kümesini desteklemek için kurulum komut dosyasını çalıştırın. Bu kurulum yaklaşık 20 dakika sürer.
./setup_with_cw.sh &
- Cloud Console'da Cloud Workstations'ı açın. Sonraki adımlara geçmeden önce kümenin
READY
durumunda olmasını bekleyin. - Cloud Shell oturumunuzun bağlantısı kesildiyse "Yeniden bağlan"ı tıklayın Ardından proje kimliğini ayarlamak için gcloud cli komutunu çalıştırın. Komutu çalıştırmadan önce aşağıdaki örnek proje kimliğini qwiklabs proje kimliğinizle değiştirin.
gcloud config set project qwiklabs-gcp-project-id
- Cloud Workstations yapılandırması oluşturmak için aşağıdaki komut dosyasını indirip terminalde çalıştırın.
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/python/workstation_config_setup.sh
chmod +x workstation_config_setup.sh
./workstation_config_setup.sh
Cloud Workstations Kümesi ve Yapılandırması
Cloud Console'da Cloud Workstations'ı açın. Kümenin READY
durumunda olduğunu doğrulayın.
Mevcut yapılandırmaların durumunu doğrulayın.
Yeni bir iş istasyonu oluşturun.
Adı my-workstation
olarak değiştirin ve mevcut yapılandırmayı seçin: codeoss-python
.
İş İstasyonunu Başlat
- İş istasyonunu başlatın ve başlatın. İş istasyonunun başlatılması birkaç dakika sürer.
- Adres çubuğundaki simgeyi tıklayarak 3. taraf çerezlerine izin verin.
- "Site çalışmıyor mu?" seçeneğini tıklayın.
- "Çerezlere izin ver"i tıklayın.
- İş istasyonu açıldığında Code OSS IDE görünür.
"Tamamlandı Olarak İşaretle"yi tıklayın Başlarken sayfasında iş istasyonu IDE'sini
3. Cloud Code'a Genel Bakış
Cloud Code'da bulunan farklı bölümleri inceleyin.
- Kubernetes geliştirmesi. IDE'nizde tamamen entegre bir Kubernetes geliştirme ve hata ayıklama ortamı edinin. Kümeleri doğrudan IDE içinden oluşturup yönetin.
- Çalışan uygulamalarda hata ayıklayın. Yerleşik IDE hata ayıklama özelliklerinden yararlanarak Cloud Code for VS Code ve Cloud Code for IntelliJ kullanıp IDE'lerinizdeki kodlarda hata ayıklayın.
- Dağıtımları keşfedin. Kubernetes kümeleriniz ve Cloud Run hizmetleriniz için temel kaynakları ve meta verileri görüntüleyin. Açıklama getirebilir, günlükleri görüntüleyebilir, gizli anahtarları yönetebilir veya doğrudan kapsüle terminal ekleyebilirsiniz.
- Yerel Kubernetes dağıtımını basitleştirin. IDE'ler için Cloud Code, Skaffold, Jib ve kubectl gibi popüler araçları kullanarak kodunuz hakkında gerçek zamanlı olarak sürekli geri bildirim sağlar.
Google Cloud'da oturum açma
- Cloud Code simgesini tıklayın ve "Sign in to Google Cloud" (Google Cloud'da oturum aç) seçeneğini belirleyin:
- "Oturum açmak için devam et"i tıklayın.
- Terminal'de çıkışı kontrol edin ve bağlantıyı açın:
- Qwiklabs öğrenci kimlik bilgilerinizle giriş yapın.
- "İzin Ver"i seçin:
- Doğrulama kodunu kopyalayın ve Workstation sekmesine dönün.
- Doğrulama kodunu yapıştırın ve Enter tuşuna basın.
"İzin ver"i tıklayın düğmesini tıklayın.
4. Yeni bir Python başlangıç uygulaması oluşturun
Bu bölümde yeni bir Python uygulaması oluşturacaksınız.
- Yeni bir Terminal açın.
- Yeni bir dizin oluşturup çalışma alanı olarak açın
mkdir music-service && cd music-service
code-oss-cloud-workstations -r --folder-uri="$PWD"
requirements.txt
adında bir dosya oluşturun ve aşağıdaki içeriği bu dosyaya kopyalayın
Flask
gunicorn
ptvsd==4.3.2
app.py
adında bir dosya oluşturun ve aşağıdaki kodu dosyaya yapıştırın
import os
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/")
def hello_world():
message="Hello, World!"
return message
if __name__ == '__main__':
server_port = os.environ.get('PORT', '8080')
app.run(debug=False, port=server_port, host='0.0.0.0')
Dockerfile
adında bir dosya oluşturun ve aşağıdakini bu dosyaya yapıştırın
FROM python:3.8
ARG FLASK_DEBUG=0
ENV FLASK_DEBUG=$FLASK_DEBUG
ENV FLASK_APP=app.py
WORKDIR /app
COPY requirements.txt .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
COPY . .
ENTRYPOINT ["python3", "-m", "flask", "run", "--port=8080", "--host=0.0.0.0"]
Not: FLASK_DEBUG=1, kod değişikliklerini bir Python flask uygulamasına otomatik olarak yeniden yüklemenize olanak tanır. Bu Dockerfile, bu değeri derleme bağımsız değişkeni olarak iletmenize olanak tanır.
Manifest Oluşturma
Terminalinizde varsayılan skaffold.yaml
ve deployment.yaml
oluşturmak için aşağıdaki komutu yürütün
- Aşağıdaki komutla Skaffold'ı başlatın
skaffold init --generate-manifests
İstendiğinde imlecinizi hareket ettirmek için okları, seçenekleri belirlemek için boşluk çubuğunu kullanın.
Seçin:
- Taşıma işlemi için
8080
- Yapılandırmayı kaydetmek için
y
Skaffold Yapılandırmalarını Güncelle
- Varsayılan uygulama adını değiştirme
skaffold.yaml
uygulamasını aç- Şu anda
dockerfile-image
olarak ayarlanmış olan resim adını seçin - Sağ tıklayın ve Tüm Tekrarları Değiştir'i seçin
- Yeni adı
python-app
olarak yazın - Derleme bölümünü daha sonra düzenleyerek
FLASK_DEBUG=1
pasosunadocker.buildArgs
eklendi*.py
dosyalarında yapılan değişiklikleri IDE'den çalışan kapsayıcıya yüklemek için ayarları senkronize et
Düzenlemelerden sonra skaffold.yaml
dosyasındaki derleme bölümü aşağıdaki gibi olacaktır:
build:
artifacts:
- image: python-app
docker:
buildArgs:
FLASK_DEBUG: "1"
dockerfile: Dockerfile
sync:
infer:
- '**/*.py'
Kubernetes Yapılandırma Dosyasını Değiştirme
- Varsayılan adı değiştirme
deployment.yaml
dosyasını aç- Şu anda
dockerfile-image
olarak ayarlanmış olan resim adını seçin - Sağ tıklayın ve Tüm Tekrarları Değiştir'i seçin
- Yeni adı
python-app
olarak yazın
5. Geliştirme sürecinde rehberlik etme
Eklenen iş mantığı ile uygulamanızı dağıtıp test edebilirsiniz. Aşağıdaki bölümde Cloud Code eklentisinin kullanımı gösterilmiştir. Diğer işlevlerinin yanı sıra, bu eklenti skaffold ile entegre olarak geliştirme sürecinizi kolaylaştırır. Aşağıdaki adımlarda GKE'ye dağıtım yaptığınızda Cloud Code ve Skaffold, container görüntünüzü otomatik olarak derler, Container Registry'ye aktarır ve ardından your
uygulamasını GKE'ye dağıtır. Bu, perde arkasında olup ayrıntıları geliştirici akışından uzaklaştırarak gerçekleşir.
Kubernetes Kümesi Ekle
- Küme Ekle
- Google Kubernetes Engine'i seçin:
- Proje seçin.
- "python-cluster" seçeneğini belirleyin ilk kurulumda oluşturulan bir feed'dir.
- Bu küme, Cloud Code altındaki Kubernetes kümeleri listesinde gösterilir. Buradan kümeye göz atabilir ve kümeyi keşfedebilirsiniz.
Kubernetes'e dağıtma
- Cloud Shell Düzenleyici'nin alt kısmındaki bölmeden Cloud Code'u seçin.
- Üst kısımda görünen panelde Kubernetes'te çalıştır'ı seçin.
İstenirse geçerli Kubernetes bağlamını kullanmak için Evet'i seçin.
Bu komut, kaynak kodun bir derlemesini başlatır ve ardından testleri çalıştırır. Derleme ve testlerin çalıştırılması birkaç dakika sürer. Bu testler, birim testlerini ve dağıtım ortamı için ayarlanmış kuralları kontrol eden bir doğrulama adımını içerir. Bu doğrulama adımı zaten yapılandırılmıştır ve geliştirme ortamınızda çalışmaya devam ederken bile dağıtım sorunlarıyla ilgili uyarı almanızı sağlar.
- Komutu ilk kez çalıştırdığınızda ekranın üst kısmında geçerli Kubernetes bağlamını kullanmak isteyip istemediğinizi soran bir istem görünür, "Evet"i seçin geçerli bağlamı kabul edip kullanmak.
- Ardından, hangi container kayıt defterinin kullanılacağını soran bir istem gösterilir. Sağlanan varsayılan değeri kabul etmek için Enter tuşuna basın
- "Çıkış"ı seçin sekmesine giderek ilerlemeyi ve bildirimleri görüntüleyebilirsiniz. Açılır listeden "Kubernetes: Run/Debug" (Kubernetes: Çalıştır/Hata Ayıklama) seçeneğini belirleyin.
- "Kubernetes: Çalıştır/Hata Ayıklama - Ayrıntılı" seçeneğini belirleyin "sağdaki kanal açılır menüsünü tıklayıp ek ayrıntıları ve kapsayıcılardan canlı yayınlanan günlükleri görüntüleyin"
Derleme ve testler tamamlandığında Çıkış sekmesi günlüklerinde "Kubernetes: Run/Debug" (Kubernetes: Çalıştır/Hata Ayıklama) bölümünde http://localhost:8080 URL'si listelenir. görünüm.
- Cloud Code terminalinde çıkıştaki ilk URL'nin (http://localhost:8080) üzerine gelin. Ardından, görünen araç ucunda Web Önizlemesini Aç'ı seçin.
- Yeni bir tarayıcı sekmesinde şu mesaj gösterilir:
Hello, World!
Sıcak Yeniden Yükle
app.py
dosyasını aç- Karşılama mesajını
Hello from Python
olarak değiştir
İzleyicinin, Output
penceresinde, Kubernetes: Run/Debug
görünümünde, güncellenen dosyaları Kubernetes'teki kapsayıcıyla senkronize ettiğine hemen dikkat edin.
Update initiated Build started for artifact python-app Build completed for artifact python-app Deploy started Deploy completed Status check started Resource pod/python-app-6f646ffcbb-tn7qd status updated to In Progress Resource deployment/python-app status updated to In Progress Resource deployment/python-app status completed successfully Status check succeeded ...
Kubernetes: Run/Debug - Detailed
görünümüne geçerseniz dosyalardaki değişiklikleri algılayıp uygulamayı derleyip yeniden dağıttığını görürsünüz
files modified: [app.py]
Syncing 1 files for gcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Copying files:map[app.py:[/app/app.py]]togcr.io/veer-pylab-01/python-app:3c04f58-dirty@sha256:a42ca7250851c2f2570ff05209f108c5491d13d2b453bb9608c7b4af511109bd
Watching for changes...
[python-app] * Detected change in '/app/app.py', reloading
[python-app] * Restarting with stat
[python-app] * Debugger is active!
[python-app] * Debugger PIN: 744-729-662
- Güncel sonuçları görmek için, önceki sonuçları gördüğünüz tarayıcı sekmenizi yenileyin.
Hata ayıklama
- Hata Ayıklama görünümüne gidin ve mevcut iş parçacığını (
) durdurun. İstenirse her çalıştırmadan sonra temizlemeyi seçebilirsiniz.
- Uygulamayı
debug
modunda çalıştırmak için alt menüdeCloud Code
simgesini tıklayın veDebug on Kubernetes
seçeneğini belirleyin.
Output
penceresininKubernetes Run/Debug - Detailed
görünümünde, skaffold'un bu uygulamayı hata ayıklama modunda dağıttığına dikkat edin.
- Bu ilk kez çalıştırıldığında bir istem, kaynağın kapsayıcının içinde nerede olduğunu sorar. Bu değer, Dockerfile'daki dizinlerle ilgilidir.
Varsayılanı kabul etmek için Enter tuşuna basın
Uygulamanın derlenmesi ve dağıtılması birkaç dakika sürer. Hata ayıklama oturumunun bağlantısı kesildiyse "Kubernetes'te hata ayıkla" adımlarını yeniden çalıştırın "Geliştirme Oturumları"ndan bölümüne ekleyin.
- İşlem tamamlandığında. Bir hata ayıklayıcı ekli olduğunu ve Çıkış sekmesinde şu ifadeleri görürsünüz:
Attached debugger to container "python-app-8476f4bbc-h6dsl" successfully.
ve http://localhost:8080 URL'si listelenir.
Port forwarding pod/python-app-8bd64cf8b-cskfl in namespace default, remote port 5678 -> http://127.0.0.1:5678
- Alttaki durum çubuğunun rengi maviden turuncuya dönüşür ve bu da Hata Ayıklama modunda olduğunu gösterir.
Kubernetes Run/Debug
görünümünde, Hata Ayıklanabilir bir container'ın başlatıldığına dikkat edin
**************URLs***************** Forwarded URL from service python-app: http://localhost:8080 Debuggable container started pod/python-app-8bd64cf8b-cskfl:python-app (default) Update succeeded ***********************************
Kesme noktalarından yararlanma
app.py
dosyasını açreturn message
yazan ifadeyi bulun- Satır numarasının solundaki boş alanı tıklayarak bu satıra bir ayrılma noktası ekleyin. Kesme noktasının ayarlandığını belirten kırmızı bir gösterge görünür.
- Tarayıcınızı yeniden yükleyin. Hata ayıklayıcının işlemi kesme noktasında durdurduğunu ve GKE'de uzaktan çalışan uygulamanın değişkenlerini ve durumunu incelemenize olanak tanıdığını unutmayın
- DEĞİŞKENLER bölümünü tıklayın.
- Yerel'i tıkladığınızda
"message"
değişkenini görürsünüz. - "Mesaj" değişken adını çift tıklayın pop-up'ta değeri
"Greetings from Python"
gibi farklı bir değerle değiştirin. - Hata ayıklama kontrol panelinde Devam düğmesini
tıklayın.
- Az önce girdiğiniz güncellenmiş değeri gösteren yanıtı tarayıcınızda inceleyin.
- "Hata ayıklama"yı durdurma kesme noktasını
tıklayın.
6. Temizleme
Tebrikler! Bu laboratuvarda, sıfırdan yeni bir Python uygulaması oluşturdunuz ve bu uygulamayı container'larla etkili bir şekilde çalışacak şekilde yapılandırdınız. Ardından geleneksel uygulama yığınlarında bulunan geliştirici akışını izleyerek uygulamanızı uzak bir GKE kümesine dağıttınız ve hatalarını ayıkladınız.
Laboratuvarı tamamladıktan sonra yer açmak için:
- Laboratuvarda kullanılan dosyaları silme
cd ~ && rm -rf ~/music-service
- İlgili tüm altyapı ve kaynakları kaldırmak için projeyi silin
—
Son güncelleme: 22.03.2023