GKE'de Agent Sandbox ile Otomatik Kod Değerlendirmesi

1. Giriş

Bu codelab'de, Hackathon Judge uygulamasını Google Kubernetes Engine'e (GKE) dağıtacak ve agentic iş yüklerini güvenli bir şekilde çalıştırmak için Kubernetes-sigs Agent Sandbox'ı kullanacaksınız.

Platform, LLM aracılarını kullanarak hackathon projelerini inceleme, test etme ve puanlandırma sürecini otomatikleştirmek için tasarlanmıştır. Değerlendirme, güvenilmeyen katılımcı kodu gönderimlerinin değerlendirilmesini gerektirdiğinden kod yerleştirme, ayrıcalık artırma veya kaynakların kötüye kullanımını önlemek için güvenli bir yürütme korumalı alanı kritik öneme sahiptir.

Yapacaklarınız

  • Hedef Google Cloud hizmetlerini sağlama ve hedef API'leri oluşturma
  • GKE Autopilot'u başlatın ve Agent Sandbox CRD'lerini, küme yapılandırmalarını ve Sandbox Router'ı yükleyin.
  • Korumalı alan ağ geçidini, korumalı alan talebi şablonunu ve korumalı alan WarmPool'u dağıtın.
  • REST Backend API'yi, ADK Judging worker Agent'ı ve React Frontend UI'yi dağıtın.
  • Harici yük dengelemeli yönlendirmeyi bağlayın ve güvenli, korumalı alanlı değerlendirme iş akışlarını çalıştırmak için platforma erişin.

İhtiyacınız olanlar

  • Chrome gibi bir web tarayıcısı
  • Faturalandırmanın etkin olduğu bir Google Cloud projesi.

Bu codelab'de oluşturulan kaynakların toplam çalışma süresi ücreti 5 ABD dolarından az olmalıdır.

2. Sorun: Güvenilmeyen kodu güvenli bir şekilde değerlendirme

Hackathon'lar, katılımcıların değerlendirilmek üzere projeler (genellikle kaynak kodu da dahil) oluşturup gönderdiği, hızlı tempolu yenilik etkinlikleridir. Bu gönderileri manuel olarak değerlendirmek zaman ve kaynak gerektirir. Notlandırma sürecini otomatikleştirmek için yapay zeka ajanlarını kullanmak umut verici bir çözüm olsa da önemli bir güvenlik sorunu beraberinde getirir: Katılımcıların sağladığı ve hatalı, kötü amaçlı veya kaynak yoğun olabilecek kodları nasıl güvenli bir şekilde çalıştırabilirsiniz?

Güvenilmeyen kodu doğrudan altyapınızda çalıştırmak sizi şu gibi risklere maruz bırakır:

  • Kod yerleştirme: Kötü amaçlı komut dosyaları, hassas verilere erişmeye veya bunları değiştirmeye çalışabilir.
  • Ayrıcalık Yükseltme: Kod, diğer sistemlere veya ağ kaynaklarına yetkisiz erişim elde etmeye çalışabilir.
  • Kaynakların Kötüye Kullanımı: Kötü yazılmış kod veya hizmet reddi saldırıları, aşırı CPU, bellek ya da ağ bant genişliği tüketerek diğer işlemleri etkileyebilir.

Hackathon değerlendirmesini yapay zeka ile otomatikleştirmek için gönderilen kodu, sistemimizin geri kalanından ve diğer gönderimlerden tamamen izole edilmiş bir ortamda çalıştırmamız gerekir.

3. Çözüm: GKE Agent Sandbox

GKE Agent Sandbox, tam olarak bu zorluk için tasarlanmış bir özelliktir. GKE'de yalıtılmış, durum bilgili ve tek replikalı iş yüklerinin yönetilmesine yardımcı olur. Ayrıca, güvenilmeyen kodun güvenli ve verimli bir şekilde yürütülmesi gereken yapay zeka aracısı çalışma zamanları gibi kullanım alanları için optimize edilmiştir.

Agent Sandbox'ın temel avantajları şunlardır:

  • Çekirdek düzeyinde izolasyon: gVisor gibi teknolojileri kullanarak güvenilmeyen kod için güçlü, çekirdek düzeyinde izolasyon sağlar. Böylece kodun ana sisteme veya diğer container'lara erişmesi engellenir.
  • Bir saniyeden kısa sürede sağlama: Sandbox ortamlarının hızlı şekilde sağlanmasını (genellikle 1 saniyeden kısa sürede) sağlar. Bu, isteğe bağlı kod değerlendirmesi için kritik öneme sahiptir.
  • Bulutta yerel genişletilebilirlik: Kubernetes'in gücünden ve GKE'nin yönetilen altyapısından yararlanır.

Agent Sandbox'ı kullanarak her bir hackathon gönderimi için isteğe bağlı, izole ortamlar oluşturabiliriz. Yapay zeka değerlendirme aracısı, daha sonra Agent Sandbox'a genel platformun bütünlüğünü riske atmadan bu güvenli korumalı alanda testler çalıştırması, kod derlemesi veya diğer değerlendirme adımlarını gerçekleştirmesi talimatını verebilir. Bu, hackathon değerlendirmesini otomatikleştirmek için ölçeklenebilir, güvenli ve verimli bir yol sağlar.

4. Başlamadan Önce

Cloud Shell'i Başlatma

Gerekli geliştirici ve bulut komut satırı yardımcı programlarıyla önceden yapılandırılmış olan Google Cloud Shell'i başlatmak için aşağıdaki düğmeyi tıklayın.

API'leri etkinleştir

Platformu çalıştırmak için gereken tüm hedef Google Cloud API'lerini etkinleştirmek üzere Cloud Shell'de aşağıdaki komutu çalıştırın:

gcloud services enable \
  container.googleapis.com \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  pubsub.googleapis.com \
  aiplatform.googleapis.com \
  cloudresourcemanager.googleapis.com \
  iam.googleapis.com \
  bigquery.googleapis.com \
  bigqueryconnection.googleapis.com

Bu API'leri neden etkinleştiriyoruz? Google Cloud hizmetleri, yetkisiz erişimi ve ödemeleri önlemek için varsayılan olarak devre dışıdır. Kapsayıcı düzenlemeyi (GKE), güvenli kapsayıcı depolamayı (Artifact Registry), sunucusuz derleme paketlemeyi (Cloud Build), güvenilir mesajlaşma kuyruklarını (Pub/Sub), yapay zeka modeli hizmetlerini (Vertex AI), proje yapılandırmasını (Cloud Resource Manager ve IAM), sunucusuz veri analizini (BigQuery) ve veritabanı düzeyinde yapay zeka bağlamalarını (BigQuery Connection) etkinleştirmek için bu API'leri kullanırız.

5. Altyapıyı kurma

Bu adımda, kod deposunu klonlayacak ve hedef bulut mimarisini ve temel küme bileşenlerini dağıtmak için otomatik kurulum komut dosyasını yürüteceksiniz.

Depoyu Klonlama

Tüm uygulama hizmetlerini, kurulum komut dosyalarını ve Kubernetes manifest bildirimlerini içeren depoyu klonlayın:

git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos
git sparse-checkout set codelabs/ai-toolkit-lab-2/hackathon-judge
cd codelabs/ai-toolkit-lab-2/hackathon-judge

Dağıtım komut dosyasını çalıştırma

Bulut kaynaklarınızın, veritabanı modellerinizin ve temel Kubernetes küme politikalarınızın temel kurulumu deploy.sh komut dosyası tarafından otomatikleştirilir.

Komut dosyasını çalıştırın:

./deploy.sh

Etkin proje kimliğiniz ve hedef bölgeniz gibi yapılandırmaları sağlamak için etkileşimli kabuk istemlerini uygulayın. Komut dosyası otomatik olarak yerel bir .env yapılandırması oluşturur, kaynakları bağlar, container görüntülerini derler ve GKE temel altyapısını kaydeder.

Komut dosyası tarafından gerçekleştirilen hedef işlemler şunlardır:

1. Ortam Yapılandırma Ayarları

Komut dosyası, GKE, Pub/Sub, BigQuery ve proje değişkeni parametrelerini depolamak için .env yapılandırma dosyası oluşturur. Bu dosyanın dinamik olarak kaynaklandırılması, sonraki tüm Kubernetes manifest tanımlarını otomatik olarak doldurur.

Bu ortam dosyasını neden yapılandırıyoruz? .env dosyası, yapılandırma parametrelerini merkezileştirerek sonraki adımlarda manuel olarak uyguladığımız GKE manifestlerinin aynı bölgesel ayarları, proje adlarını ve kaynakları kullanmasını sağlar. Böylece, ortam yapılandırması kaynak kodundan tamamen ayrılır.

2. Google Cloud KSA ve hedef proje yapılandırması

Komut dosyası, gcloud, bq, kubectl ve envsubst yardımcı programlarının yüklendiğini doğrular, kimlik doğrulama durumunu kontrol eder ve etkin yapılandırma hedeflerini etkin Google Cloud projenize kilitler.

Neden etkin projeyi hedefliyoruz? Etkin hedef projeyi ayarlamak, CLI komutlarının hesabınızdaki diğer projeleri etkilemesini önler ve ön uç kimlik doğrulama kontrolleri gerçekleştirerek kurulum komutlarının geçersiz kimlik bilgileri nedeniyle dağıtım sırasında başarısız olmamasını sağlar.

3. Hedef Google Cloud API'lerini etkinleştirme

Komut dosyası, hedef Google Cloud hizmeti API'lerini (GKE, Artifact Registry, Cloud Build, Pub/Sub, Vertex AI, BigQuery ve IAM) doğrulamak ve etkinleştirmek için idempotent bir kontrol gerçekleştirir.

Google Cloud API'lerini neden etkinleştiriyoruz? Yönetilen bulut hizmetlerinin uç noktalarına ulaşılabilmesi veya kaynak oluşturulabilmesi için önce etkinleştirilmesi gerekir. Bu API'lerin başlangıçta etkinleştirilmesi, bölgesel GCP API ağ geçidini sonraki kaynak sağlama komutlarını işleyecek şekilde hazırlar.

4. Artifact Registry Docker deposunu sağlama

Komut dosyası, seçilen hedef konumda hackathon-judge-repo adlı bir Docker kapsayıcı deposu sağlar.

Neden Artifact Registry deposu oluşturuyoruz? GKE kümelerinin, uygulama görüntülerini hızlı bir şekilde çekmek için aynı bölgesel ağdaki özel kapsayıcı kayıtlarına güvenli erişmesi gerekir. Artifact Registry, Docker container görüntülerini kataloglamak, taramak ve depolamak için güvenli ve özel bir ana makine sağlar.

5. GKE Autopilot kümesini sağlama

Komut dosyası, hackathon-judge-cluster adlı bir Google Kubernetes Engine (GKE) Autopilot kümesi sağlar.

Neden GKE Autopilot kümesi dağıtıyoruz? GKE Autopilot, düğüm sağlama, ölçeklendirme, durum izleme ve ana makine işletim sistemi güvenlik yükseltmelerini otomatik olarak yönetir. Kalıcı hizmetlerimizi düzenlemek için üretime hazır bir kapsayıcı platform sağlar ve güvenli çalışan sanal alanlarını isteğe bağlı olarak dinamik bir şekilde planlar.

6. Pub/Sub konularını ve aboneliklerini yapılandırma

Komut dosyası, mesaj konularını (judging-tasks ve judging-results) ilgili çalışan ve API abonelikleriyle birlikte sağlar.

Neden Pub/Sub konularını ve aboneliklerini dağıtıyoruz: Kod gönderimlerini değerlendirmek yavaş ve kaynak yoğun bir süreçtir. Mesaj kuyruğu mimarisi kullanmak, kullanıcıya yönelik senkron API'yi çalışan düğümlerinden ayırır. API arka ucu, işleri judging-tasks konusuna gönderir ve çalışan aracıları, görevleri kullanılabilir olduklarında çeker. Bu sayede API'nin engellenmesi önlenir ve otomatik yeniden deneme özellikleri sağlanır.

7. BigQuery veri kümelerini, tablolarını ve yapay zeka bağlantılarını yapılandırma

Komut dosyası hackathon_judge veri kümesini oluşturur, yapısal SQL veritabanı şemalarını uygular, başlangıç kayıtlarını yükler ve BigQuery ML bağlantı hizmeti hesabına gerekli yapay zeka ve depolama rollerini verir.

8. Cloud Build kullanarak container derlemelerini tetikleme

Komut dosyası, cloudbuild.yaml tanımını tetikleyerek React kullanıcı arayüzümüzü, Go REST sunucumuzu, Python ADK çalışanımızı ve FastAPI sanal alanımızı derler. Bunları, etkin depo Git commit SHA'sı ile etiketlenmiş izole edilmiş kapsayıcı görüntülerine paketler ve Artifact Registry'ye kaydeder.

9. Aracı Korumalı Alanı Özel Kaynak Tanımlarını (CRD'ler) Kaydetme

Bu komut dosyası, GKE'nin temel özelliklerini genişletmek için en yeni Kubernetes-sigs Agent Sandbox Özel Kaynak Tanımlarını (manifest.yaml ve extensions.yaml) indirip kaydeder.

Aracı Korumalı Alan altyapısını neden yüklüyoruz? Standart Kubernetes kümelerinde, korumalı isteğe bağlı korumalı alanların ayrılması desteklenmez. Agent Sandbox CRD'lerini kaydetmek, GKE'nin kontrol düzlemini genişleterek Kubernetes'in Özel Kaynaklar (SandboxTemplates ve SandboxClaims gibi) kullanarak güvenli sanal ortamlı mikro kapsayıcıları yerel olarak düzenlemesini sağlar.

10. Ad alanlarını, hizmet hesaplarını ve Workload Identity'yi yapılandırma

Bu komut dosyası, hackathon-judge ad alanını sağlar, Kubernetes hizmet hesaplarını (KSA'lar) kaydeder ve GKE pod'larına hedef Google Cloud izinleri vermek için Workload Identity eşlemeleri oluşturur.

11. Korumalı alan yönlendiricisini dağıtma

Komut dosyası, k8s/sandbox_router.yaml manifestini uygular, Sandbox Router dağıtımını ve hizmetini başlatır ve bunların sağlıklı bir duruma ulaşmasını bekler.

Korumalı alan yönlendiricisini neden dağıtıyoruz? Korumalı alan yönlendiricisi, merkezi dahili kontrol düzlemi ağ geçididir. ADK değerlendirme çalışanı aracısının güvenli sanal alanları talep etmek, bunlara erişmek veya bunları serbest bırakmak için çağırdığı basit bir API'yi kullanıma sunar. Bu API, yönlendirme eşlemelerini yönetir ve küme düzeyindeki pod ayırmayı uygulama mantığından ayırır.

6. Agent Sandbox Gateway, Claims ve WarmPool'u yapılandırma

Bu adımda, ultra düşük gecikmeli Sandbox'ı etkinleştirmek için özel Sandbox ağ geçidini manuel olarak yapılandıracak, Sandbox talep şablonunu kaydedecek ve Sandbox WarmPool'u dağıtacaksınız.

Kaynak Ortam Değişkenleri

Ortam değişkenleri gerektiren şablonları uygulamadan önce, gerekli tüm değişkenleri ayrıştırıp kabuğunuza aktarmak için setup-env.sh komut dosyasını kaynaklandırın:

source ./setup-env.sh

Korumalı alan ağ geçidini uygulama

Korumalı alan trafiğini yönlendirmek için özel olarak yapılandırılmış ağ geçidini dağıtın:

kubectl apply -f k8s/sandbox-gateway.yaml

Neden Korumalı Alan Ağ Geçidi'ni dağıtıyoruz? Korumalı Alan Ağ Geçidi, yalnızca korumalı alan yönlendirmesine ayrılmış güvenli ve yüksek performanslı bir giriş denetleyicisi olarak işlev görür. Korumalı alan ağını yalıtarak güvenli ve yerel bir hedef sağlar. Bu hedef, çalışan aracıların uç noktaları harici olarak kullanıma sunmadan talep edilen korumalı alanlarla iletişim kurmasına olanak tanır.

Korumalı alan hak talebi şablonunu uygulama

Etkin ortam değişkenlerinizle korumalı alan şablon tanımını doldurmak ve uygulamak için envsubst simgesini kullanın:

source ./setup-env.sh
envsubst < k8s/sandbox-claim-template.yaml | kubectl apply -f -

Neden Korumalı Alan Talep Şablonu'nu dağıtıyoruz? Korumalı Alan Talep Şablonu, ortamı tanımlayan yapılandırma planı görevi görür. Çalıştırılacak kapsayıcı görüntüsünü (geliştirici araçlarıyla önceden paketlenmiş), ortam parametrelerini (GCP proje kimliği), bağlantı noktalarını ve kaynak sınırlarını (CPU/bellek hedefleri) belirtir. GKE'yi bu container örneklerini gVisor (gvisor çalışma zamanı) kullanarak çalıştıracak şekilde yapılandırır. Böylece, güvenilmeyen katılımcı kodunun ek bir çekirdek sanallaştırma yalıtımı katmanı altında çalışması sağlanır.

Korumalı alan WarmPool'u uygulama

Çalışan korumalı alanları önceden başlatmak için Sandbox WarmPool'u uygulayın:

kubectl apply -f k8s/sandbox-warmpool.yaml

Hazır havuzdaki yedek örneklerin başarıyla başlatıldığını doğrulayın:

kubectl get pods -n hackathon-judge -l app=sandbox

Sandbox WarmPool'u neden dağıtıyoruz? İstek üzerine yeni container kapsüllerinin sağlanması, planlanması, görüntülerin çekilmesi ve başlatılması önemli bir başlangıç ek yükü (30 saniyeden uzun yeni başlatma süreleri) getirir. Korumalı alan WarmPool, etkin ve önceden ısıtılmış korumalı alan pod'larının bekleme havuzunu (varsayılan olarak 5 kopya) korur. Çalışan aracısı bir değerlendirme ortamı istediğinde Sandbox Router, önceden ısıtılmış çalışan bir pod'u hemen ayırarak başlatma gecikmelerini bir saniyenin altına indirir.

7. Uygulama Bileşenlerini Dağıtma

Güvenli sanal alan altyapısı tamamen etkin olduğundan artık merkezi arka uç API'sini, Worker aracısını, React web arayüzünü ve giriş ağ geçidi eşlemesini dağıtabilirsiniz.

Arka Ucu Dağıtma

Orkestratör REST API arka ucunu dağıtın:

source ./setup-env.sh
envsubst < k8s/backend.yaml | kubectl apply -f -

Aracı dağıtma

ADK değerlendirme çalışanı aracısını dağıtın:

source ./setup-env.sh
envsubst < k8s/agent.yaml | kubectl apply -f -

Ön ucu dağıtma

Etkileşimli web kullanıcı arayüzünü dağıtın:

source ./setup-env.sh
envsubst < k8s/frontend.yaml | kubectl apply -f -

Harici ağ geçidini ve yönlendirmeyi yapılandırma

Ana ağ geçidini ve harici istemci trafiğini eşleyen giriş HTTP rotalarını dağıtın:

kubectl apply -f k8s/gateway.yaml

Harici giriş ağ geçidini neden dağıtıyoruz? Harici ağ geçidi, Kubernetes Gateway API'yi kullanarak hizmetlerimizi kullanıma sunar. Yük dengeli bir genel IP adresi sağlar ve yolları yol kurallarına göre eşler. Bu sayede, /api/* altındaki API isteklerini Go arka ucuna yönlendirir ve diğer tüm istemci web trafiğini (/) React ön ucuyla eşleyerek genel küme erişimini güvenli hale getirir.

Kullanıma sunumları doğrulama

Kabuk yürütmeyi engelleyin ve üç temel hizmet dağıtımının da sağlıklı ve kullanıma hazır dağıtım durumuna ulaşmasını bekleyin:

kubectl rollout status deployment/backend -n hackathon-judge --timeout=300s
kubectl rollout status deployment/agent -n hackathon-judge --timeout=300s
kubectl rollout status deployment/frontend -n hackathon-judge --timeout=300s

8. Uygulamayı Doğrulama ve Kullanma

Kullanıcı arayüzüne erişme

Yeni sağlanan ana yük dengeleyici ağ geçidinin harici genel IP adresini getirin:

Hazırlama durumunu anlık olarak izlemek için komutu watch işaretiyle (-w) çalıştırın ve ADDRESS alanına herkese açık bir IP adresi girilene kadar bekleyin:

kubectl get gateway -n hackathon-judge hackathon-judge-gateway -w

Başarıyla sağlandığında aşağıdakine benzer bir çıkış görürsünüz:

NAME                      CLASS    ADDRESS          PROGRAMMED   AGE
hackathon-judge-gateway   gke-l7   34.120.120.120   True         3m

ADDRESS sütununda geçerli bir herkese açık IP adresi gördüğünüzde ve PROGRAMMED durumu True olduğunda, izlemeyi durdurmak için Ctrl+C tuşuna basın.

Neden ağ geçidi durumu alıyoruz? Ağ Geçidi API'si, herkese açık girişleri işler. Ağ geçidi durumu kontrol edildiğinde, Google Cloud'un harici genel yük dengeleyicisi tarafından kümemize ayrılan ve platformumuzun herkese açık adresini temsil eden herkese açık, yük dengeli harici IP adresi döndürülür.

Hackathon Judge kontrol panelini yüklemek için tarayıcınızda ayrılan genel IP adresini açın.

Görevleri gönderme

  • Kontrol paneline gitmek için ön uç kullanıcı arayüzünü kullanın ve hackathon'u seçin.

Kontrol Paneli

  • Herhangi bir projede Run Agent simgesini tıklayarak ajanın projenin tamamını puan anahtarına göre değerlendirmesini başlatabilirsiniz.

Projeler

Watch Sandbox Kickoff

Bir değerlendirme yürütme işlemi için dinamik olarak talep edilen ve sağlanan bir korumalı alan kapsülünü görmek üzere hackathon-judge ad alanındaki etkin kapsülleri izleyin:

kubectl get pods -n hackathon-judge -w

ADK değerlendirme mantığını adım adım görmek için çalışan aracısı kapsülünün günlüklerini kontrol edin:

kubectl logs -l app=agent -n hackathon-judge

Aracı günlüklerini incelememizin nedeni: Çalışan aracı günlüklerinin incelenmesi, değerlendirme ardışık düzeninin ayrıntılı dahili adımlarını gerçek zamanlı olarak gösterir. ADK aracısının görevi getirmesini, sanal alan kapsayıcısı istemesini, derleme hedeflerini yürütmesini, Gemini ile raporları analiz etmesini ve puan kartlarını yayınlamasını izleyebilirsiniz.

9. (İsteğe bağlı) İşleyiş şekli

Agent Sandbox Architecture

BigQuery Yapay Zeka işlevleri, metin tabanlı gönderimleri ve README iddialarını değerlendirmek için inanılmaz olsa da bir mühendislik projesini değerlendirmek için kod derlemek, üçüncü taraf kitaplıkları yüklemek ve gerçek test paketleri çalıştırmak gerekir.

Ham kullanıcı kodu çalıştırmak, ana bilgisayarın güvenliğinin ihlal edilmesi, kapsayıcıdan çıkış ve yetkisiz kaynak erişimi gibi büyük güvenlik riskleri oluşturur. GKE Agent Sandbox çerçevesi, gVisor (runsc) sanallaştırmasını kullanarak yalıtılmış korumalı alan iş yüklerini düzenleyerek bu riskleri azaltır.

Sistem Etkileşimi Akışı

Aşağıdaki şemada, güvenli bir sanal alan değerlendirme yürütme işlemi sırasında etkinliğe dayalı sistemimizin çeşitli öğelerinin nasıl iletişim kurduğu gösterilmektedir:

Etkileşimli Araçlar ve Bileşenlerin Birlikte Çalışma Şekli

  • React Frontend UI: Kullanıcıların ölçüt modellerini yapılandırdığı, ekipleri kaydettiği, proje URL'lerini gönderdiği ve tam dosya tutarsızlıkları ile mühendislik yorumları da dahil olmak üzere son notlandırma puan kartlarını incelediği etkileşimli bir arayüz sunar.
  • Go REST Backend API: Genel API uç noktalarını yönetir. Proje yapılandırmalarını BigQuery'de depolar ve yoğun hesaplama yürütme ardışık düzenlerinin ayrılması için değerlendirme işlerini Pub/Sub'a gönderir.
  • Google Pub/Sub: Görev mesajlarını güvenli bir şekilde sıraya alan, API ile etkin çalışan örnekleri arasındaki iletişimi eşzamansız olarak düzenleyen, mesaja yönelik aracı.
  • Python ADK Worker (Supervisor Agent): Pub/Sub'dan görevleri çeken bir arka plan çalışanıdır. Değerlendirmeyi düzenlemekle görevlendirilen üst düzey bir yönetici aracıyı başlatmak için Google Agent Development Kit (ADK)'den yararlanır. Yönetici, derin ham komut testini temsilciye atamak için birincil aracı olan evaluate_repository'yı çağırır.
  • Sandbox Yönlendirici ve Ağ Geçidi (GKE Kontrol Düzlemi): Standart Sandbox Özel Kaynak Tanımlarını (SandboxClaims, SandboxTemplates) kaydeden dahili bir kontrol ağ geçidi. Pod'ları ayırmak ve güvenliğini sağlamak için GKE ağlarını koordine eder, bağlantı akışlarını çalışan istemcilere geri döndürür.
  • Sandbox WarmPool: WarmPool, uzun GKE container başlatma sürelerini (30 saniyeden uzun "baştan başlatma") önlemek için etkin bekleme pod'larını korur. Bir sanal alan talep edildiğinde yönlendirici, bunu anında bir saniyeden kısa bir süre içinde eşler ve yayınlandıktan sonra geri dönüşümünü planlar.
  • gVisor (runsc) İzolasyonu: Güvenli bir korumalı alan sınırı olarak işlev gören kullanıcı alanı sanal çekirdeği. Container alanından GKE düğüm çekirdeklerine yapılan sistem çağrılarını yakalayarak tehlikeli ham komutların (ör. sistem komut dosyaları veya paket kurulumları) mutlak sanallaştırma yalıtımı altında çalışmasını sağlar.
  • FastAPI Sandbox Çalışma Zamanı: Sandbox kapsayıcısında çalışan basit bir Python API sunucusu. Harici çalışan araçlarının dosyaları değiştirmesine ve kabuk görevlerini tetiklemesine olanak tanıyan güvenli uç noktaları (/execute, /upload, /download) kullanıma sunar.
  • Gemini CLI (@google/gemini-cli): Sanal alan içine yüklenen bağımsız bir aracı komut dosyası. Geliştirme ortamı çalışma zamanı işareti (--yolo) ile tetiklendiğinde, aşağıdaki işlemleri yapmak için titiz bir notlandırma talimatı sayfası (prompt.md) ve ölçüt tanımı (criteria.md) kullanır:
    • Kod tabanı hiyerarşisini dinamik olarak analiz edin (tree veya ripgrep gibi araçları kullanarak).
    • Gereksinimleri otomatik olarak yükleme (npm install, pip install, go build gibi komutlarla).
    • İşlevselliği doğrulamak için gerçek geliştirme testleri (ör. npm test veya pytest) çalıştırın.
    • Dosya mantığını değerlendirmek, iddiaları README dosyasıyla çapraz olarak kontrol etmek, hayalet özellikleri tespit etmek, kalite sorunlarını günlüğe kaydetmek ve evaluation.json için yapılandırılmış bir puan kartı raporu yazmak üzere Vertex AI modellerini (container'ın Workload Identity bağlama kimlik bilgileri aracılığıyla) çağırın.
  • Standart Geliştirme Ortamları: Node, npm, yarn, pnpm, python, pip, uv, go, gh, git, tree, ripgrep ve playwright'i sandbox container görüntüsünde paketleyerek otonom alt aracıya eksiksiz bir test çalışma alanı sunar.

10. Temizleme

Google Cloud hesabınızın sürekli olarak ücretlendirilmesini önlemek için bu codelab sırasında oluşturulan kaynakları silin.

./destroy.sh

Kaynakları neden temizliyoruz? Google Cloud, kaynak kullanımı modeline göre faturalandırır. GKE Autopilot kümeleri, ağ yük dengeleyicileri ve kalıcı diskler gibi etkin kaynaklar, boşta olduklarında bile sürekli olarak ücretlendirilir. Bu adımın çalıştırılması, Kubernetes nesnelerini temizlemek için küme ad alanını siler ve temel faturalandırma ücretlerinin tümünü hemen sonlandırmak için GKE Autopilot küme ana makinesini siler.

11. Tebrikler

Tebrikler! GKE'de Agent Sandbox ile Hackathon Judge uygulamasını başarıyla dağıttınız.

Güvenilmeyen kod tabanı gönderimlerini yalıtılmış kapsayıcılı güvenlik kısıtlamaları altında test edip değerlendirebilen, güvenli ve modern bir olay odaklı yapay zeka platformu uyguladınız.

Öğrendikleriniz

  • GKE altyapısı: GKE Autopilot'ı ve Pub/Sub ile BigQuery gibi destekleyici Google Cloud hizmetlerini sağlama.
  • Aracı Korumalı Alan Yapılandırması: Özel Kaynak Tanımlarını, SandboxTemplates'i, SandboxClaims'i ve yüksek performanslı Sandbox WarmPools'u yapılandırma.
  • Mikro hizmet dağıtımı: Workload Identity bağlamalarını yapılandırma ve çok bileşenli bir mikro hizmet mimarisi (ön uç React, REST Go, Worker ADK Agent ve Isolated Sandbox) dağıtma.
  • Güvenli korumalı alan: Güvenilmeyen üçüncü taraf komutlarını GKE düğümlerinde güvenli bir şekilde çalıştırmak için gVisor sanallaştırılmış container'ları kullanma.

Sonraki adımlar

Referans belgeleri