Geliştirme Ortamı

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.

58a4cdd3ed7a123a.png

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

  1. 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.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 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.
  1. 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.

  1. 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
  1. setup_with_cw.sh dosyasını açın ve şu anda CHANGEME olarak ayarlanmış şifrelerin değerlerini düzenleyin
  2. 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 &
  1. Cloud Console'da Cloud Workstations'ı açın. Sonraki adımlara geçmeden önce kümenin READY durumunda olmasını bekleyin.
  2. 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
  1. 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.

305e1a3d63ac7ff6.png

Mevcut yapılandırmaların durumunu doğrulayın.

2e23c2e9983d1ccf.png

Yeni bir iş istasyonu oluşturun.

a53adeeac81a78c8.png

Adı my-workstation olarak değiştirin ve mevcut yapılandırmayı seçin: codeoss-python.

f052cd47701ec774.png

İş İstasyonunu Başlat

  1. İş istasyonunu başlatın ve başlatın. İş istasyonunun başlatılması birkaç dakika sürer.

682f8a307032cba3.png

  1. Adres çubuğundaki simgeyi tıklayarak 3. taraf çerezlerine izin verin. 1b8923e2943f9bc4.png

fcf9405b6957b7d7.png

  1. "Site çalışmıyor mu?" seçeneğini tıklayın.

36a84c0e2e3b85b.png

  1. "Çerezlere izin ver"i tıklayın.

2259694328628fba.png

  1. İş 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

94874fba9b74cc22.png

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.

e4e89eea9ff45dff.png

Google Cloud'da oturum açma

  1. Cloud Code simgesini tıklayın ve "Sign in to Google Cloud" (Google Cloud'da oturum aç) seçeneğini belirleyin:

1769afd39be372ff.png

  1. "Oturum açmak için devam et"i tıklayın.

923bb1c8f63160f9.png

  1. Terminal'de çıkışı kontrol edin ve bağlantıyı açın:

517fdd579c34aa21.png

  1. Qwiklabs öğrenci kimlik bilgilerinizle giriş yapın.

db99b345f7a8e72c.png

  1. "İzin Ver"i seçin:

a5376553c430ac84.png

  1. Doğrulama kodunu kopyalayın ve Workstation sekmesine dönün.

6719421277b92eac.png

  1. Doğrulama kodunu yapıştırın ve Enter tuşuna basın.

e9847cfe3fa8a2ce.png

"İzin ver"i tıklayın düğmesini tıklayın.

58149777e5cc350a.png

4. Yeni bir Python başlangıç uygulaması oluşturun

Bu bölümde yeni bir Python uygulaması oluşturacaksınız.

  1. Yeni bir Terminal açın.

c31d48f2e4938c38.png

  1. 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"
  1. requirements.txt adında bir dosya oluşturun ve aşağıdaki içeriği bu dosyaya kopyalayın

789e8389170bd900.png

Flask
gunicorn
ptvsd==4.3.2
  1. 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')

  1. 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

  1. 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 pasosuna docker.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

  1. 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

  1. Küme Ekle

62a3b97bdbb427e5.png

  1. Google Kubernetes Engine'i seçin:

9577de423568bbaa.png

  1. Proje seçin.

c5202fcbeebcd41c.png

  1. "python-cluster" seçeneğini belirleyin ilk kurulumda oluşturulan bir feed'dir.

719c2fc0a7f9e84f.png

  1. Bu küme, Cloud Code altındaki Kubernetes kümeleri listesinde gösterilir. Buradan kümeye göz atabilir ve kümeyi keşfedebilirsiniz.

7e5f50662d4eea3c.png

Kubernetes'e dağıtma

  1. Cloud Shell Düzenleyici'nin alt kısmındaki bölmeden Cloud Code'u seçin.

d99a88992e15fea9.png

  1. Ü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.

bfd65e9df6d4a6cb.png

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.

  1. 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.
  2. 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
  3. "Çı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.

9c87ccbf5d06f50a.png

  1. "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"

804abc8833ffd571.png

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.

  1. 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.
  2. Yeni bir tarayıcı sekmesinde şu mesaj gösterilir: Hello, World!

Sıcak Yeniden Yükle

  1. app.py dosyasını aç
  2. 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
...
  1. 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
  1. Güncel sonuçları görmek için, önceki sonuçları gördüğünüz tarayıcı sekmenizi yenileyin.

Hata ayıklama

  1. Hata Ayıklama görünümüne gidin ve mevcut iş parçacığını (647213126d7a4c7b.png) durdurun. İstenirse her çalıştırmadan sonra temizlemeyi seçebilirsiniz.
  2. 70d6bd947d04d1e6.png
  3. Uygulamayı debug modunda çalıştırmak için alt menüde Cloud Code simgesini tıklayın ve Debug on Kubernetes seçeneğini belirleyin.

b9465c6825caf685.png

  • Output penceresinin Kubernetes Run/Debug - Detailed görünümünde, skaffold'un bu uygulamayı hata ayıklama modunda dağıttığına dikkat edin.
  1. 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

fccc866f32b5ed86.png

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.

  1. İş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
  1. Alttaki durum çubuğunun rengi maviden turuncuya dönüşür ve bu da Hata Ayıklama modunda olduğunu gösterir.

b2abd61a129ed76.png

  1. 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

  1. app.py dosyasını aç
  2. return message yazan ifadeyi bulun
  3. 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.
  4. 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
  5. DEĞİŞKENLER bölümünü tıklayın.
  6. Yerel'i tıkladığınızda "message" değişkenini görürsünüz.
  7. "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.
  8. Hata ayıklama kontrol panelinde Devam düğmesini 607c33934f8d6b39.png tıklayın.
  9. Az önce girdiğiniz güncellenmiş değeri gösteren yanıtı tarayıcınızda inceleyin.
  10. "Hata ayıklama"yı durdurma kesme noktasını 647213126d7a4c7b.png 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:

  1. Laboratuvarda kullanılan dosyaları silme
cd ~ && rm -rf ~/music-service
  1. İlgili tüm altyapı ve kaynakları kaldırmak için projeyi silin

Son güncelleme: 22.03.2023