GKE ve Gemini CLI ile Platform Mühendisliği Yapay Zekası

1. Giriş

Bu laboratuvarda, altyapı yönetimi için Gemini CLI ve GKE Model Context Protocol (MCP) sunucusunun kullanımına ilişkin teknik bir giriş yapılmaktadır. Geleneksel GKE yönetiminde operatörler, altyapı gereksinimlerini manuel olarak gcloud komutlarına, uygulama tanımlarını ise yazılı YAML manifestlerine çevirir. Bu laboratuvarda farklı bir yaklaşım gösterilmektedir: Google Kubernetes Engine'de (GKE) doğal dil amacını teknik yürütmeyle birleştiren etkileşimli bir arayüz kullanma. Bu değişim, platform mühendisliğinde daha geniş bir trendin parçasıdır. Bu trendde odak noktası, katı otomasyon komut dosyaları oluşturmaktan altyapı işlemlerinin ayrıntılı yönlerini ele alabilen akıllı aracıları yönetmeye kaymaktadır.

Temel Kavramlar

  • Platform Mühendisliği: Bu, yazılım geliştiricilerin her temel bulut hizmetinde uzman olmalarına gerek kalmadan kendi altyapılarını yönetmelerini sağlayan dahili araçlar ve iş akışları oluşturma ve bunları sürdürme uygulamasıdır. Amaç, tutarlılığı ve güvenliği korurken teknik zorlukları azaltmaktır. Platform ekipleri, standartlaştırılmış bir altın yol oluşturarak uygulama geliştiricilerin güvenli ve hızlı bir şekilde dağıtım yapmasını sağlarken platform ekibi de yönetim ve maliyet üzerinde kontrolü korur.
  • Gemini CLI: Bu, Gemini modelleriyle doğrudan terminalinizden etkileşim kurmanıza olanak tanıyan bir komut satırı arayüzüdür. CLI, standart web tabanlı chatbot'lardan farklı olarak geliştirme ortamınızda bulunacak şekilde tasarlanmıştır. Bu sayede yapay zekayı mevcut kabuk tabanlı iş akışlarına entegre etmek kolaylaşır. Bu sayede, diğer komutlardan gelen çıkışı doğrudan modele aktarabilir ve terminal ortamınızdan çıkmadan talimatları yürütebilirsiniz.
  • Model Context Protocol (MCP): MCP, bir yapay zeka modelinin belirli araçlara veya veri kaynaklarına bağlanmasını sağlayan açık bir standarttır. MCP olmadan, yapay zeka modeli yalnızca üzerinde eğitildiği bilgileri bilir ve belirli kaynaklarınızı göremez. GKE MCP sunucusu ile Gemini CLI, Google Cloud projenizin API'sini etkin bir şekilde sorgulayabilir, kümelerinizin durumunu inceleyebilir ve komutları sizin adınıza yürütebilir. Modelin akıl yürütme motoru ile gerçek GKE API'si arasında köprü görevi görür.

Laboratuvar Hedefleri

Bu oturumun sonunda şunları yapabileceksiniz:

  1. Ortamı yapılandırın: Cloud Shell'e erişin ve Gemini CLI'nin Google Cloud kaynaklarınızla etkileşim kurmasına izin vermek için GKE MCP uzantısının kimliğini doğrulayın.
  2. Altyapı Tasarımı: Maliyet, yönetim yükü ve iş yükü gereksinimlerine göre optimum küme yapılandırmalarını belirlemek için etkileşimli istemleri kullanın.
  3. Kaynak Yönetimi: Doğal dili kullanarak Kubernetes manifestleri (Dağıtımlar, Hizmetler vb.) oluşturun, denetleyin ve dağıtın.
  4. Operasyonel Analiz: Yapay zekanın günlükleri ve etkinlikleri toplama özelliğini kullanarak dağıtım hatalarının temel nedenini belirleyin ve belirli teknik düzeltmeler önerin.

2. Proje kurulumu

Gemini CLI'nin kaynaklarınızla etkileşim kurabilmesi için Google Cloud ortamının düzgün şekilde yapılandırılması gerekir. Bu kurulum, projenizin doğru izinlere sahip olmasını ve gerekli tüm arka uç hizmetlerinin yapay zeka aracınızdan gelen istekleri almaya hazır olmasını sağlar.

Cloud Shell'i açın

Bu laboratuvarda, Google Cloud tarafından sağlanan tarayıcı tabanlı bir terminal ortamı olan Cloud Shell'i kullanacağız. Cloud Shell'i kullanmamızın nedeni, Google Cloud KSA (gcloud), kubectl ve Gemini CLI dahil olmak üzere ihtiyacımız olan tüm araçlarla önceden yapılandırılmış olarak gelmesidir. Bu sayede, bunları yerel makinenize yüklemek için zaman harcamanıza gerek kalmaz.

  1. Google Cloud Console'a gidin.
  2. Konsolun sağ üstteki başlığına bakın ve Cloud Shell'i Etkinleştir düğmesini (terminal istemine >_ benzer) tıklayın.
  3. Tarayıcı pencerenizin alt kısmında bir terminal oturumu açılır. İstenirse, Devam'ı tıklayın.

Proje seçin

Cloud Shell terminalinde doğru proje üzerinde çalıştığınızdan emin olun.

  1. Konsol'da mevcut bir projeyi seçin veya bu laboratuvar için özel olarak yeni bir proje oluşturun.
  2. Proje kimliğinizi not edin. Şu komutu çalıştırarak projeyi mevcut kabuğunuzda ayarlayabilirsiniz: gcloud config set project [YOUR_PROJECT_ID]

API'leri etkinleştir

Kubernetes ve yapay zeka özellikleri, yeni projelerde varsayılan olarak etkinleştirilmez. Bu API'lerin etkinleştirilmesi, kapsayıcı yönetimini, üretken modelleri ve merkezi günlük kaydını işleyen temel Google Cloud hizmetlerini başlatır.

👉💻 Bu API'leri etkinleştirmek için Cloud Shell'de aşağıdaki komutu çalıştırın. Bu işlem bir dakika sürebilir.

gcloud services enable \
    container.googleapis.com \
    generativelanguage.googleapis.com \
    cloudresourcemanager.googleapis.com \
    logging.googleapis.com
  • container.googleapis.com: Google Kubernetes Engine API'si. Küme oluşturma, güncelleme ve silme gibi tüm küme düzeyindeki işlemler için gereklidir.
  • generativelanguage.googleapis.com: Gemini CLI'nin metin oluşturma ve akıl yürütme için Gemini büyük dil modelleriyle iletişim kurmasına olanak tanıyan API.
  • cloudresourcemanager.googleapis.com: Aracının proje düzeyindeki meta verileri incelemesi, proje kimliklerini doğrulaması ve IAM izinlerini yönetmesi için gereklidir.
  • logging.googleapis.com: Bir sorun olduğunda MCP sunucusunun kapsayıcılarınızdaki günlükleri getirmesine ve analiz etmesine olanak tanıdığı için sorun giderme açısından önemlidir.

3. Gemini CLI'yı yapılandırma

Cloud Shell'de varsayılan olarak Gemini CLI bulunur. Bu nedenle, bu iş akışı için ideal ortamdır. İlk adımınız, GKE ortamınızı yönetmek için hem yetkiye hem de gerekli araçlara sahip bir "aracı" olarak çalışacak şekilde yapılandırmaktır. Bu yapılandırma adımı, yapay zekanın mantığı ile gerçek bulut altyapınız arasında güvenli bağlantı oluşturduğu için çok önemlidir.

Gemini CLI'yı başlatma

Cloud Shell terminalinizde yeni bir çalışma dizini oluşturun ve Gemini CLI'yı çalıştırın. Bu işlem, modelle sürekli sohbet edebileceğiniz bir oturum başlatır. Tek seferlik komutların aksine, etkileşimli modda önceki talimatlarınızı ve projenizin durumunu hatırlayan bir bağlam penceresi korunur.

👉💻 Aşağıdaki komutları çalıştırın:

mkdir -p ~/gke-lab
cd ~/gke-lab
gemini

İçeri girdikten sonra, aracın ortamınızı görebildiğinden emin olmak için temel farkındalığını test edin:

  • 👉💬 İstem: Which Google Cloud project is currently active in this shell?

gcloud komutunun sizin için yürütülmesini onaylamanız istenebilir. Bu durumda onaylayabilirsiniz.

/quit yazarak arayüzden istediğiniz zaman çıkabilirsiniz.

Not: Gemini 2.5 Pro ile kapasite sorunları yaşarsanız Gemini'ı

gemini -m gemini-2.5-flash

veya

/model

komutunu kullanın.

GKE MCP uzantısını bağlama

Varsayılan olarak Gemini CLI, genel amaçlı bir araçtır ve kümelerinizle nasıl etkileşim kurulacağı hakkında özel bir bilgiye sahip değildir. GKE MCP uzantısını yüklemeniz gerekir. Bu uzantı, modelin bir görevi yerine getirmesi gerektiğinde çağırabileceği belirli bir araç ve işlev grubunu (ör. "list clusters" veya "get pod logs") tanımlayan bir eklenti görevi görür.

👉💻 GKE uzantısını yüklemek ve Gemini CLI'yı yeniden açmak için aşağıdaki komutları çalıştırın:

gemini extensions install https://github.com/GoogleCloudPlatform/gke-mcp.git
gemini

Gemini CLI'a tekrar girip aşağıdaki komutu yazarak doğru şekilde etkinleştirildiğini doğrulayabilirsiniz:

/extensions

4. Altyapı sağlama

Geleneksel altyapı sağlama genellikle karmaşık dokümanlarda gezinmeyi veya yüzlerce satır yapılandırma kodu yazmayı içerir. Bir aracı kullanarak gereksinimlerinizi açıklamaya odaklanabilir ve yapay zekanın teknik çeviriyi doğru API çağrılarına dönüştürmesine izin verebilirsiniz. Bu bölümde, GKE ortamınızın planlama aşamasında ve gerçek oluşturma sürecinde aracının nasıl kullanılacağı gösterilmektedir.

Teknik Planlama ve Karşılaştırma

Küme oluşturmadan önce ihtiyaçlarınıza uygun bir mimari seçmeniz gerekir. GKE iki ana mod sunar: Standart (temel düğümler üzerinde tam kontrol sahibi olursunuz) ve Autopilot (Google düğümleri yönetir ve siz de podlarınızın istediği kaynaklara göre ödeme yaparsınız). İkisi arasındaki farkları anlamak ve belirli bir kullanım alanı için hangisinin kullanılacağını belirlemek üzere basit bir sorgu deneyelim.

  • 👉💬 İstem: I need to run a standard 3-tier web application. Compare GKE Standard and GKE Autopilot. Focus on the operational effort for a small team and the cost structure for small workloads.

Diğer altyapı fikirleri hakkında soru sormayı deneyin. Yapay zeka çıkarımı iş yükleri dağıtıyorsanız, çok büyük ölçekte bir şeye ihtiyacınız varsa veya karmaşık ağ kısıtlamalarınız varsa ne olur? Diğer istemlerle denemeler yapın.

Küme Oluşturma İşlemini Yürütme

Karşılaştırmayı inceleyip bir seçim yaptıktan sonra, aracıya küme oluşturma talimatı verebilirsiniz. Aracı, isteğinizi analiz eder ve bu koşullara göre üretime hazır bir ortam dağıtmak için GKE MCP sunucusundaki create_cluster aracını çağırır.

  • 👉💬 İstem: Create a GKE Standard zonal cluster named 'gke-lab' in us-central1-a with 1 node with 4 CPUs. The cluster should have Workload Identity enabled.

Not: GKE kümesi sağlama işlemi, kontrol düzleminin, sanal özel ağların ve ilk düğüm yapılandırmalarının ayarlanmasını içerir. Bu işlem genellikle 8-10 dakika sürer. Gemini CLI oturumunuzu kapatmayın.

Küme durumu hakkında soru sorabilirsiniz. Bu durumda, güncel bilgileri döndürmek için GKE MCP sunucusu kullanılır.

  • 👉💬 İstem: Is the new GKE cluster created and ready to use, yet?

5. Dağıtım ve Doğrulama

Platform mühendisliği için yapay zeka ajanı kullanmanın en büyük avantajlarından biri, yapılandırmalarınızda "uçuş öncesi" kontrolleri ve denetimleri yapabilmesidir. Bir manifest dağıtıp başarısız olmasını beklemek yerine, YAML'nizin teknik olarak sağlam olduğunu ve kuruluşunuzun güvenlik politikalarına uyduğunu kümelere ulaşmadan önce doğrulamak için aracı kullanabilirsiniz.

Manifest Dosyaları Oluşturma

Temsilciden dağıtım manifesti oluşturmasını isteyin. Aracı, Kubernetes API sürüm oluşturma ve şemasını anladığı için doğru şekilde biçimlendirilmiş ve başarılı bir dağıtım için gerekli tüm alanları içeren YAML oluşturur.

  • 👉💬 İstem: Generate a Kubernetes YAML manifest for an Nginx web server. I need 3 replicas. Set a memory limit of 256Mi and a CPU limit of 500m. Also, include a Service of type LoadBalancer to make it accessible via the internet. Save the manifest as web-server.yaml

Teknik Doğrulama ve Güvenlik Denetimi

Manuel YAML oluşturma işlemi genellikle gerekenden daha fazla ayrıcalıkla çalışan veya temel güvenilirlik özelliklerinden yoksun yapılandırmalarla sonuçlanır. Güvenlik ve dayanıklılıkla ilgili modern standartları karşıladığından emin olmak için yeni oluşturduğu manifesti denetlemek üzere aracı kullanabilirsiniz.

  • 👉💬 İstem: Review the Nginx manifest you just created. Does it include resource requests (not just limits)? Does it specify a non-root user for the container? Add a Pod Disruption Budget to ensure high availability during cluster maintenance. Make any necessary modifications to the file, and tell me what changes were made.

Dağıtım Yürütme

Önceki bölümdeki küme hazırlama işlemi tamamlandıktan sonra Gemini CLI'ya yapılandırmayı yeni kümenize uygulamasını söyleyin. Aracı, Kubernetes API sunucusuyla iletişim kurmak ve istenen kaynakları oluşturmak için araçlarını kullanır.

  • 👉💬 İstem: Deploy the audited Nginx manifest to the 'gke-lab' cluster. Use the kubectl command to do this.

Anlık durum kontrolü

Birden fazla kubectl get pods veya kubectl describe komutu çalıştırmak yerine, temsilciden dağıtımın ilerleme durumuyla ilgili doğal dilde bir özet isteyebilirsiniz.

  • 👉💬 İstem: Are the Nginx pods running? Provide the external IP address assigned to the LoadBalancer once it is available.

Takıldınız mı?

Nginx hizmetleri başarılı bir şekilde dağıtılmıyorsa sorunu Gemini CLI ile gidermeyi deneyin. Size yardımcı olmak için tasarlanmıştır.

  • 👉💬 İstem: The Nginx deployment doesn't start up as expected. Can you help troubleshoot?

6. Bakım ve Sorun Giderme

Yapay zeka destekli bir platformun en değerli özelliklerinden biri, "2. Gün" işlemlerini yapabilmesidir. Bir sistem arızalandığında, önemli olan hatayı bulmak için genellikle binlerce günlük satırını aramak gerekir. Gemini CLI'yı MCP ile kullanarak aracının günlükleri, etkinlikleri ve durum mesajlarını toplamasına izin verebilirsiniz. Böylece, üst düzey bir teşhis ve çözüme yönelik belirli bir yol elde edebilirsiniz.

Manuel Hata Ekleme

Aracının teşhis özelliğini test etmek için kasıtlı olarak bir hata durumu oluşturacağız. Ayrı bir terminal sekmesinde, dağıtımınızı mevcut olmayan bir kapsayıcı görüntüsüyle güncellemek için bu komutu çalıştırın. Bu, yaygın bir insan hatasını (kapsayıcı etiketinde yazım hatası) simüle eder.

👉💻 Gemini KSA'nın dışında aşağıdaki komutu çalıştırın:

kubectl set image deployment/nginx nginx=nginx:invalid-version-xyz123

Not: Dağıtımınızın adı tam olarak "nginx" olmayabilir. komutunu çalıştırarak bunu doğrulayabilirsiniz.

kubectl get deployments

Kubernetes bu görüntüyü çekmeye çalışır, etiketi bulamadığı için başarısız olur ve pod'ler ImagePullBackOff durumuna girer.

Gemini CLI ile analiz

Gemini CLI oturumunuza dönün. Cloud Logging konsolunda manuel olarak arama yapmak yerine, aracıdan hatayı bulup açıklamasını isteyin.

  • 👉💬 İstem: The Nginx deployment on my 'gke-lab' cluster has stopped working. Use your tools to inspect the cluster state, check the recent events, and explain exactly why the pods are failing to start.

Burada olanlar: Gemini CLI, dağıtımın sağlıksız olduğunu gözlemler. Ardından, başarısız olan pod'ları incelemek için mevcut araçları kullanır. Temsilci, çekme hatasını tanımlar, etiketin geçersiz olduğunu açıklar ve bilinen iyi bir resme geri dönmenizi önerir.

Bakım ve Risk Değerlendirmesi

Platform bakımı, yeni sürümlere ve desteği sonlandırılan özelliklere ayak uydurmayı içerir. Aracıdan SRE olarak hareket etmesini ve kümenizin durumunu ve ömrünü değerlendirmesini isteyebilirsiniz.

  • 👉💬 İstem: Is my cluster 'gke-lab' running the latest version of GKE? Check for available upgrades and let me know if any of my current resources use deprecated APIs that would break during an upgrade.

Bu durum, Gemini'ın küme durumu ve öneri araçları gibi GKE MCP sunucu araçlarını kullanmasına neden olabilir.

7. Sonuç

Bu laboratuvarda, bulut altyapısıyla etkileşim kurmanın yeni bir yolu gösterilmiştir. Gemini CLI ve MCP aracılığıyla yapay zeka temsilcisini doğrudan terminal iş akışınıza entegre ederek komutları manuel olarak yazmaktan amaçları yönetmeye geçiş yaparsınız. Bu yaklaşım, platform ekiplerinin uzmanlıklarını ölçeklendirmesine olanak tanır. Bu sayede, Kubernetes yönetiminin tekrarlayan ve hataya açık ayrıntılarını ele alan akıllı bir arayüz sunulurken mühendisler üst düzey mimariye ve sorun çözmeye odaklanabilir.

Laboratuvar Özeti

  • Bağlantı: Model Context Protocol'ü kullanarak Gemini KSA'yı GKE API'ye başarıyla bağladınız. Böylece yapay zeka modeli, proje durumunuzu doğrudan görebilir.
  • Altyapı: Doğal dili kullanarak GKE kümesi tasarlayıp sağladınız ve karmaşık CLI işaretlerini ezberlemeniz gerekmedi.
  • Geliştirme: Kubernetes kaynaklarını manuel YAML düzenlemesi yapmadan oluşturup güvenlik açısından denetlediniz ve dağıttınız. Böylece, en iyi uygulamaların en başından itibaren uygulandığından emin oldunuz.
  • İşlemler: Bozuk bir dağıtımda temel neden analizi yapmak için yapay zekayı kullandınız. Yapay zekanın günlükleri ve etkinlikleri özetlemesine izin vererek ortalama kurtarma süresini önemli ölçüde kısalttınız.

Temizleme

Bu laboratuvarda oluşturulan kaynaklar için Google Cloud ücretlerinin devam etmesini önlemek amacıyla aracıya kümeyi silmesini söyleyebilirsiniz.

Not: GKE kümesini başka bir laboratuvar için yeniden kullanmayı planlıyorsanız bu adımı atlayın.

  • 👉💬 İstem: Delete the 'gke-lab' cluster and any associated resources.

Sonraki Adımlar

Daha fazla okuma önerileri: