Toolkit AI Cloud Engineering: Platform Engineering di GKE menggunakan Gemini

1. Pengantar

Memecahkan masalah deployment Kubernetes yang rusak adalah bagian umum, dan sering kali membuat frustrasi, dalam kehidupan sehari-hari seorang engineer platform. Biasanya, hal ini melibatkan banyak penyelidikan manual: menelusuri log, menjalankan perintah kubectl describe, dan merujuk silang file YAML untuk menemukan satu ketidakcocokan atau kesalahan konfigurasi.

Meskipun chatbot AI serbaguna dapat membantu menjelaskan konsep atau menulis kode dasar, chatbot tersebut beroperasi tanpa konteks. Mereka tidak mengetahui apa pun tentang codebase spesifik Anda atau status aktif cluster Anda, sehingga menyebabkan banyak penyalinan dan penempelan manual serta peralihan konteks.

Di lab ini, Anda akan mempelajari cara menjembatani kesenjangan ini dengan menggunakan alat AI dengan tingkat konteks yang semakin tinggi. Anda akan menggunakan Gemini CLI dan Model Context Protocol (MCP) untuk memecahkan masalah aplikasi yang rusak di GKE. Di akhir lab ini, Anda akan memahami cara menggunakan AI yang mengetahui file dan infrastruktur Anda untuk menyelesaikan masalah kompleks dengan lebih cepat, dan cara mengodifikasi alur kerja ini menjadi'Keterampilan' yang dapat digunakan kembali oleh tim Anda.

Konsep inti

  • Engineering platform: Engineering platform adalah praktik membangun dan memelihara alat dan alur kerja internal yang memungkinkan developer software mengelola infrastruktur mereka sendiri tanpa perlu menjadi pakar di setiap layanan cloud yang mendasarinya. Tujuannya adalah mengurangi hambatan teknis sekaligus mempertahankan konsistensi dan keamanan. Dengan membuat jalur utama yang standar, tim platform memastikan bahwa developer aplikasi dapat men-deploy dengan aman dan cepat, sementara tim platform mempertahankan kontrol atas tata kelola dan biaya.
  • Gemini CLI: Gemini CLI adalah antarmuka command line yang memungkinkan Anda berinteraksi dengan model Gemini langsung dari terminal. Tidak seperti chatbot berbasis web standar, CLI dirancang untuk berada dalam lingkungan pengembangan Anda, sehingga memudahkan integrasi AI ke dalam alur kerja berbasis shell yang ada. CLI memungkinkan Anda menyalurkan output dari perintah lain langsung ke model dan menjalankan petunjuk tanpa keluar dari terminal.
  • Model Context Protocol (MCP): MCP adalah standar terbuka yang memungkinkan model AI terhubung dengan alat atau sumber data tertentu. Tanpa MCP, model AI hanya mengetahui apa yang digunakan untuk melatihnya dan tidak dapat melihat resource spesifik Anda. Dengan server MCP GKE, Gemini CLI dapat secara aktif membuat kueri API project Google Cloud Anda, memeriksa status cluster Anda, dan menjalankan perintah atas nama Anda. Gateway ini berfungsi sebagai jembatan antara mesin penalaran model dan GKE API yang sebenarnya.
  • Keahlian Agen: Keahlian adalah paket petunjuk, skrip, dan resource yang memperluas kemampuan agen AI untuk tugas khusus. Dengan fitur ini, Anda dapat mengodifikasi standar organisasi dan mengotomatiskan alur kerja yang kompleks.

Tujuan lab

Di lab ini, Anda akan:

  1. Mengalami progres konteks: Lihat bagaimana peningkatan konteks meningkatkan pemecahan masalah AI.
  2. Pemecahan masalah manual vs. AI: Bandingkan kesulitan proses debug manual dengan alur kerja yang didukung AI.
  3. Pen-debug-an konteks lengkap: Gunakan Gemini CLI dengan server MCP GKE untuk men-debug aplikasi dengan awareness infrastruktur penuh.
  4. Perluas kemampuan: Pelajari cara menulis Keterampilan kustom untuk mengotomatiskan alur kerja.

Catatan tentang output LLM

Karena sifat lab ini dan cara kerja LLM, output yang Anda dapatkan kemungkinan akan berbeda dengan contoh output yang ditampilkan. Hal ini adalah perilaku yang diharapkan untuk AI generatif. Fokuslah untuk memahami langkah-langkah dan penalaran yang diberikan oleh model, bukan mencoba mereplikasi teks atau format yang sama persis dalam contoh.

2. Penyiapan project

Sebelum memulai lab, siapkan lingkungan Anda. Buka Cloud Shell, pilih project Anda, dan jalankan skrip penyiapan. Mari kita mulai!

Buka Cloud Shell

Untuk lab ini, gunakan Cloud Shell, lingkungan terminal berbasis browser yang disediakan oleh Google Cloud. Cloud Shell dilengkapi dengan semua alat yang Anda butuhkan, termasuk Google Cloud CLI (gcloud), kubectl, dan Gemini CLI, sehingga Anda tidak perlu menginstalnya di mesin lokal.

  1. Buka Google Cloud Console.
  2. Lihat header kanan atas konsol, lalu klik tombol Activate Cloud Shell (tombol ini terlihat seperti perintah terminal >_).
  3. Sesi terminal akan terbuka di bagian bawah jendela browser Anda. Jika diminta, klik Continue.

Pilih project

Di terminal Cloud Shell, pastikan Anda bekerja dalam project yang benar.

  1. Pilih project yang sudah ada atau buat project baru khusus untuk lab ini di Konsol.
  2. Catat Project ID Anda. Tetapkan project di shell saat ini dengan menjalankan: gcloud config set project [YOUR_PROJECT_ID]

Penyiapan lab

Sekarang, jalankan skrip penyiapan untuk menyiapkan lingkungan dan memperkenalkan bug untuk lab.

  1. Buat clone repositori:
    👉💻 Jalankan perintah berikut untuk meng-clone hanya direktori lab:
    git clone --depth 1 --filter=blob:none --sparse https://github.com/GoogleCloudPlatform/devrel-demos ~/devrel-demos
    cd ~/devrel-demos
    git sparse-checkout set codelabs/ai-toolkit-lab-1
    
  2. Buka direktori lab:
    👉💻 Jalankan:
    cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/
    
  3. Tetapkan variabel lingkungan:
    👉💻 Jalankan perintah berikut untuk menetapkan project dan region Anda:
    export PROJECT_ID=$(gcloud config get-value project)
    export REGION=us-central1
    
  4. Jalankan skrip penyiapan:
    Skrip ini mengaktifkan API yang tercantum di bawah, membuat cluster Autopilot GKE, dan memastikan alat yang diperlukan telah diinstal.
    👉💻 Jalankan skrip dari direktori root:
    ./setup.sh
    
    Catatan: Pembuatan cluster dapat memerlukan waktu 5-10 menit.
  5. Menginisialisasi status rusak:
    Untuk menyimulasikan skenario saat rekan kerja meninggalkan Anda dengan lingkungan yang rusak, jalankan skrip break.sh. Skrip ini menyalin manifes yang rusak ke direktori codebase aktif.
    👉💻 Jalankan skrip:
    ./break.sh
    
  6. Bersiap untuk latihan lab:
    Untuk mencegah AI berbuat curang (melihat solusi), pindah ke direktori cymbal-bank untuk latihan lab selanjutnya.
    👉💻 Jalankan:
    cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/cymbal-bank
    

API yang diaktifkan

Skrip penyiapan mengaktifkan beberapa Google Cloud API. Berikut yang mereka lakukan:

  • container.googleapis.com: Google Kubernetes Engine API. Diperlukan untuk operasi tingkat cluster apa pun.
  • generativelanguage.googleapis.com: API yang memungkinkan Gemini CLI berkomunikasi dengan model Gemini.
  • cloudresourcemanager.googleapis.com: Diperlukan untuk memeriksa metadata level project dan mengelola izin.
  • logging.googleapis.com: Penting untuk memecahkan masalah, karena memungkinkan pengambilan dan analisis log dari container Anda.

3. Fase 0: Pemecahan masalah manual (tanpa AI)

Sekarang setelah Anda berada di direktori cymbal-bank, mari kita coba temukan error secara manual. Ini adalah "cara sulit". Rasakan performa dasar sebelum membiarkan AI melakukan tugas berat. Pemecahan masalah manual berarti menggunakan alat standar seperti kubectl untuk memeriksa status cluster, mengambil log, dan membaca file YAML untuk menemukan inkonsistensi. Proses ini sering kali lambat, membosankan, dan memerlukan keahlian untuk menghubungkan berbagai informasi. Hal ini berfungsi sebagai titik referensi yang sempurna untuk alat AI yang Anda gunakan nanti.

  1. Coba men-deploy: Mari kita lihat pendapat Kubernetes tentang manifes ini.
    👉💻 Jalankan perintah berikut untuk menerapkan manifes:
    kubectl apply -f kubernetes-manifests/
    
    Pod mungkin memerlukan waktu beberapa detik untuk dijalankan. Anda dapat memantau ketersediaannya menggunakan ‘watch kubectl get pods'. Setelah aktif, gunakan ctrl+c untuk keluar dari watch.Anda akan melihat dua pod yang gagal dalam daftar:
    • Pod frontend menampilkan "CreateContainerConfigError". Jenis error ini umumnya menunjukkan bahwa container mengalami masalah saat memuat konfigurasi yang diperlukan. Pikirkan resource eksternal yang mungkin diperlukan container untuk memulai—apakah ada variabel lingkungan, secret, atau ConfigMap yang mungkin salah dikonfigurasi atau tidak ada? Anda harus menyelidiki konfigurasi pod untuk menemukan penyebab spesifiknya.
    • Pod userservice berada dalam status "ImagePullBackOff". Jika Anda melihat hal ini, biasanya berarti cluster tidak dapat mengambil image container yang diperintahkan untuk digunakan. Pertimbangkan detail permintaan gambar: apakah nama dan tag gambar sudah benar? Apakah ada potensi masalah izin dengan registri? Lihat dari mana gambar diambil untuk melihat apakah Anda dapat menemukan alasan permintaan gagal.
  2. Periksa kerusakan: Gunakan perintah Kubernetes standar untuk melihat apa yang gagal.
    • 👉💻 Periksa status pod serta namanya:
      kubectl get pods
      
      • Pengamatan: Anda melihat pod di ImagePullBackOff, CrashLoopBackOff, Pending, atau CreateContainerConfigError.
      • Catatan: Pod dalam status Running tidak berarti berfungsi dengan benar. Misalnya, mungkin tidak ada pemeriksaan kondisi yang memadai (keaktifan/kesiapan), sehingga ditandai sebagai berjalan meskipun aplikasi di dalamnya gagal. Log dapat menunjukkan error, meskipun pod tampaknya berjalan. Total ada 11 error berbeda yang perlu diperbaiki.
    • 👉💻 Jelaskan pod yang gagal untuk melihat peristiwa (ganti [POD_NAME] dengan nama pod sebenarnya):
      kubectl describe pod [POD_NAME]
      
    • 👉💻 Periksa log pod yang gagal untuk melihat error aplikasi:
      kubectl logs [POD_NAME]
      

Screenshot yang menampilkan output kubectl get pods

  1. Penyelidikan: Buka manifes di kubernetes-manifests/ menggunakan Cloud Shell Editor atau cat di terminal. Coba korelasikan error yang Anda lihat di log dan peristiwa dengan konfigurasi di file YAML.Tantangan: Coba perbaiki HANYA SATU error secara manual. Perhatikan bagaimana Anda harus berpindah-pindah antar-file untuk mengetahui kegagalan lainnya dalam rangkaian tersebut.

4. Tahap 1: Bertanya di web (UI web Gemini)

Karena pemecahan masalah manual lambat, mari kita coba menggunakan asisten AI. Aplikasi web Gemini adalah antarmuka chat serbaguna yang canggih. Gemini unggul dalam menjelaskan konsep dan membuat cuplikan kode. Namun, alat ini beroperasi dengan konteks nol dari lingkungan spesifik Anda. Cloud Shell tidak dapat melihat file Anda, memeriksa cluster Anda, atau menjalankan perintah. Anda harus menyalin dan menempelkan pesan error dan konten file secara manual.

Screenshot yang menampilkan UI web Gemini

  1. Buka Gemini: Buka gemini.google.com di tab baru. Anda harus login dengan Akun Google Anda sendiri.
  2. Minta bantuan terkait error tertentu: Misalnya, Anda melihat error ImagePullBackOff di pod userservice.
    👉💬 Masukkan perintah ini ke UI web Gemini:
    My Kubernetes deployment for 'userservice' is failing with ImagePullBackOff. Here is the image name: us-central1-docker.pkg.dev/bank-of-anthos-ci/bank-of-anthos/user-service:v0.6.9. What is wrong?
  3. Respons AI: Gemini memberi Anda daftar penyebab umum:
    • Gambar tidak ada.
    • Anda tidak memiliki izin untuk menariknya.
    • Ada kesalahan ketik.
    Error ini menyarankan untuk memeriksa izin IAM atau registri Anda. Namun, aplikasi tidak dapat mengetahui bahwa nama gambar sebenarnya adalah userservice (tanpa tanda hubung) kecuali jika aplikasi melihat project Anda.

Hambatan utamanya di sini adalah Gemini tidak memiliki visibilitas ke lingkungan lokal Anda. Untuk mendapatkan konteks yang diperlukan, Anda harus memberikannya secara manual (dengan meminta dan menyalin-menempelkan teks di sekitarnya), yang memakan waktu dan rentan terhadap error.

5. Fase 2: Kecanggihan terminal (Gemini CLI)

Sekarang, buka terminal menggunakan Gemini CLI. Gemini CLI menghadirkan kecanggihan model Gemini langsung ke terminal Anda. CLI ini ada di tempat Anda bekerja. CLI ini membaca file lokal, menerima input yang dialirkan, dan bahkan menjalankan perintah shell atas nama Anda (dengan persetujuan Anda). Hal ini menjadikannya sangat berguna untuk mengintegrasikan AI ke dalam alur kerja Anda tanpa perlu berganti konteks. Untuk informasi yang lebih mendetail dan penggunaan lanjutan, lihat dokumentasi resmi Gemini CLI.

Catatan: Mulai sekarang, Antigravity CLI dirilis secara resmi dan merupakan penerus Gemini CLI. Lab ini terus menggunakan Gemini CLI. Untuk mengetahui detail selengkapnya tentang Antigravity CLI, lihat dokumentasi resmi Antigravity CLI.

Konteks dan visibilitas

Sebelum membahas petunjuk, perhatikan bahwa visibilitas Gemini CLI ke project Anda bergantung pada tempat Anda meluncurkannya. Model dapat melihat file dan folder yang relatif terhadap direktori kerja Anda saat ini. Jika Anda menjalankannya dari root project, model akan memiliki akses ke semua file dalam project tersebut. Jika Anda menjalankannya dari subdirektori, tampilan model akan dibatasi ke subdirektori tersebut dan turunannya. Selalu pastikan Anda berada di direktori yang benar sebelum meminta model untuk menganalisis atau mengubah file.

Memulai Gemini CLI

Cloud Shell menyertakan Gemini CLI secara default. Cukup mulai untuk mulai menggunakannya dengan file lokal Anda.

  1. Buka direktori Cymbal Bank:
    👉💻 Jalankan perintah berikut untuk memastikan Anda berada di direktori yang benar:
    cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/cymbal-bank
    
  2. Mulai Gemini CLI:
    👉💻 Jalankan perintah berikut untuk memulai Gemini CLI:
    gemini
    

Screenshot yang menunjukkan tampilan Gemini CLI

Menggunakan Gemini CLI

Yang Anda ketahui tentang aplikasi ini hanyalah tempat menemukan kodenya, dan bahwa aplikasi tersebut gagal. Mari pelajari lebih lanjut dan lihat bagaimana Gemini dapat membantu Anda memperbaiki aplikasi. Pertama, coba uji kemampuannya untuk menjelajahi konteks dengan mengajukan pertanyaan tentang file aplikasi yang seharusnya dapat dilihatnya.

  1. Jelajahi codebase: Minta Gemini menjelaskan apa itu aplikasi ini dan apa yang dilakukannya.
    👉💬 Masukkan perintah ini ke Gemini CLI:
    What is this application and what does it do?
    Gemini CLI akan membaca file di direktori saat ini dan memberikan ringkasan tingkat tinggi project.
  2. Coba temukan masalah dalam codebase: Karena Gemini CLI melihat file Anda, minta alat ini untuk menemukan ketidakcocokan.
    👉💬 Masukkan perintah ini ke Gemini CLI:
    The contacts service pod is running, but I can't reach the service. Review kubernetes-manifests/contacts.yaml and check for common issues
    Gemini CLI membaca file dan menemukan ketidakcocokan antara app: contacts-backend dan app: contacts. Ini adalah pencapaian besar dibandingkan fase sebelumnya.
  3. Minta Gemini CLI untuk memperbaikinya:
    👉💬 Masukkan perintah ini ke Gemini CLI:
    Fix the label mismatch in contacts.yaml so the service matches the deployment.
    Gemini CLI akan menampilkan YAML yang telah diperbaiki atau bahkan menerapkan perubahan jika Anda menyetujui perintah tersebut.
  4. Batasan: Meskipun melihat file, alat ini tetap tidak tahu apa yang sebenarnya berjalan di cluster Anda. Jika pod gagal karena error runtime yang tidak terlihat jelas di YAML statis, pod tersebut tidak dapat membantu tanpa log atau status cluster.

Catatan: Gemini CLI akan meminta izin Anda saat menjalankan perintah atau melakukan modifikasi pada file. Hal ini memastikan Anda tetap memiliki kontrol atas lingkungan Anda. Saat melihat perintah seperti di bawah, Anda dapat menekan "enter" untuk merespons "1. Izinkan sekali" untuk setiap permintaan tindakan. Anda juga dapat mengetuk tombol panah bawah dan menekan enter untuk memilih "2. Izinkan untuk sesi ini", yang akan menyebabkan Gemini CLI selalu melakukan tindakan tersebut secara mandiri, tanpa meminta izin Anda, selama durasi percakapan ini. Namun, jika Anda menutup Gemini CLI dan membukanya kembali, Gemini CLI tidak akan lagi memiliki izin tersebut dan akan meminta izin Anda lagi sebelum melakukan tindakan apa pun.

Screenshot yang menampilkan tampilan izin Gemini CLI

Catatan: Jika Anda mengalami kesulitan, atau ingin mencoba lagi dari awal, reset manifes Kubernetes kembali ke kondisi awal yang rusak kapan saja dengan menjalankan ../break.sh dari direktori cymbal-bank.

Catatan: Jika Anda mencapai batas penggunaan, pilih "Berhenti", lalu jalankan /model untuk melihat model mana yang telah mencapai batasnya dan beralih ke model lain, seperti gemini-2.5-flash-lite. Kemudian, berikan perintah "continue" pada model untuk melanjutkan lab menggunakan model baru.

6. Fase 3: Pen-debug-an konteks lengkap (Gemini CLI + GKE MCP)

Meskipun Fase 2 menunjukkan betapa hebatnya AI saat dapat melihat file Anda, AI juga menimbulkan gangguan. Anda harus menyetujui setiap pembacaan file dan tindakan alat secara manual, yang menimbulkan gesekan yang signifikan selama sesi debug yang kompleks. Fase 3 memperkenalkan server MCP GKE untuk membantu memperbaiki hal ini, dengan memberikan "pemahaman infrastruktur" langsung kepada AI. Hal ini memungkinkan Gemini memecahkan masalah log, peristiwa, dan metadata dengan lebih sedikit gangguan manual, sehingga menciptakan alur pemecahan masalah yang lebih otomatis dan kohesif.

Apa itu MCP?

Untuk memahami MCP, sebaiknya pahami terlebih dahulu konsep alat di dunia AI. Pada dasarnya, alat adalah fungsi atau aplikasi eksternal yang dapat digunakan LLM untuk melakukan tindakan atau mengambil data yang tidak dapat diaksesnya—seperti memeriksa cuaca, menjalankan skrip tertentu, atau membuat kueri database. Meskipun alat individual sangat canggih, berbagi alat tersebut secara aman dan konsisten di antara berbagai agen dan lingkungan AI selalu menjadi tantangan. MCP memecahkan masalah ini dengan bertindak sebagai platform standar yang dapat menghosting alat ini dan mengeksposnya ke klien AI yang kompatibel.

Model Context Protocol (MCP) adalah protokol open source yang memungkinkan model AI mengakses alat dan sumber data eksternal secara aman. Alih-alih mengodekan integrasi secara permanen untuk setiap alat atau database tertentu, MCP menyediakan cara standar bagi model untuk berinteraksi dengan lingkungannya.

Anda dapat melihat alat yang tersedia di Gemini CLI dengan menjalankan /mcp di dalam Gemini CLI.

Di lab ini, server MCP GKE memungkinkan Gemini CLI berinteraksi langsung dengan cluster GKE Anda, sehingga dapat memeriksa resource, membaca log, dan membantu Anda men-debug masalah dengan pemahaman penuh tentang status aktif cluster. Hal ini mengubah AI dari penganalisis kode statis menjadi asisten pemecahan masalah aktif yang memahami status aktif infrastruktur Anda.

Mengonfigurasi ekstensi MCP GKE

Secara default, Gemini CLI adalah alat serbaguna. Konfigurasi server MCP GKE dengan membuat file konfigurasi.

  1. 👉💻 Pertama, keluar dari Gemini CLI jika Anda masih berada di dalamnya dengan mengetik /quit.
  2. 👉💻 Jalankan perintah berikut untuk membuat direktori ekstensi:
    mkdir -p ~/.gemini/extensions/gke
    
  3. 👉💻 Jalankan perintah berikut untuk membuat file konfigurasi. Perintah ini akan otomatis menyuntikkan PROJECT_ID Anda ke dalam file:
    cat << EOF > ~/.gemini/extensions/gke/gemini-extension.json
    {
      "name": "gke",
      "version": "1.0.0",
      "mcpServers": {
        "container": {
          "httpUrl": "https://container.googleapis.com/mcp",
          "authProviderType": "google_credentials",
          "oauth": {
            "scopes": ["https://www.googleapis.com/auth/container"]
          },
          "timeout": 30000,
          "headers": {
            "x-goog-user-project": "$PROJECT_ID"
          }
        }
      }
    }
    EOF
    
  4. 👉💻 Mulai Gemini CLI:
    gemini
    
  5. Pastikan server MCP diaktifkan dengan mengetik /mcp di dalam Gemini CLI.

Meminta Gemini men-debug menggunakan status cluster

  1. Men-debug deployment yang gagal: Sekarang, minta Gemini untuk memeriksa cluster dan memperbaiki manifes berdasarkan temuan.
    👉💬 Masukkan perintah ini ke Gemini CLI:
    The frontend deployment is failing. Can you use your tools to check the logs and events of the pods, and then fix it?
    Gemini menggunakan alat MCP untuk memanggil perintah kubectl di balik layar. Gemini melihat error ImagePullBackOff, menjelaskan penyebabnya, dan menyarankan perbaikan yang benar.
  2. Memperbaiki masalah kompleks: Minta Gemini Cloud Assist untuk memeriksa log terkait error tingkat aplikasi.
    👉💬 Masukkan perintah ini ke Gemini CLI:
    Check the logs for the 'contacts' pod. Why is it failing to connect to the database?
    Gemini CLI akan melihat error koneksi ditolak dan melacaknya kembali ke ketidakcocokan port atau ketidakcocokan nama layanan di config.yaml.
  3. Ulangi: Terus minta Gemini untuk memperbaiki masalah lain yang Anda temukan di Fase 0.
    👉💬 Masukkan perintah ini ke Gemini CLI:
    Check if the service 'contacts' is correctly routing traffic to its pods
    👉💬 Masukkan perintah ini ke Gemini CLI:
    Are there any pods failing due to resource limits?

Catatan: Jika Anda mengalami kesulitan, atau ingin mencoba lagi dari awal, reset manifes Kubernetes kembali ke kondisi awal yang rusak kapan saja dengan menjalankan ../break.sh dari direktori cymbal-bank.

7. Fase 4: Memberdayakan tim (Keahlian Agen)

Terakhir, perluas kemampuan AI untuk kebutuhan spesifik Anda dengan membuat Keterampilan Agen kustom.

Apa itu Keterampilan Agen?

Keterampilan Agen adalah paket petunjuk, skrip, dan resource yang memperluas kemampuan agen AI untuk tugas khusus. Dengan keterampilan ini, Anda dapat mengodifikasi standar organisasi dan mengotomatiskan alur kerja yang kompleks. Keterampilan berada di direktori tertentu dan berisi file SKILL.md yang menentukan perilakunya. Dengan membuat keterampilan, Anda memastikan AI mengikuti proses yang konsisten dan dapat diulang, bukan berimprovisasi.

Direktori Skill standar terlihat seperti ini:

my-skill/
├── SKILL.md          # Main instruction file (Required)
├── scripts/           # Helper scripts (Optional)
└── resources/         # Templates or data files (Optional)

Membangun Skill pemecahan masalah Kubernetes

Daripada membuat file ini secara manual, Gemini CLI menyediakan cara yang efektif untuk membuat kerangka keterampilan menggunakan bahasa alami.

Bayangkan Anda ingin membuat Keterampilan bernama k8s-troubleshooter untuk mengotomatiskan langkah-langkah yang baru saja Anda lakukan.

  1. Membuat skill melalui perintah: Anda dapat meminta Gemini CLI untuk membuat skill untuk Anda, berdasarkan apa yang telah Anda pelajari hari ini.
    👉💬 Masukkan perintah ini ke Gemini CLI:
    Create a new skill called 'k8s-troubleshooter' that helps diagnose issues with Kubernetes manifests and cluster state. It should be able to analyze pod logs, events, and resource descriptions to identify common deployment problems and configuration errors.
    Sama seperti saat memanggil alat atau melakukan tindakan, Gemini CLI akan memberi tahu Anda bahwa perintah Anda telah mengaktifkan skill "pembuat skill". Ini adalah skill yang telah dikonfigurasi sebelumnya di Gemini CLI yang memungkinkan Gemini membuat Skill Agen.
    Gemini akan meminta izin Anda untuk membuat direktori skill. Setujui dengan memilih "1. Izinkan sekali".
    Gemini akan otomatis:
    • Membuat direktori di ~/.gemini/skills/k8s-troubleshooter/.
    • Membuat file SKILL.md dengan petunjuk berdasarkan perintah Anda.
    • Membuat direktori resource standar.
  2. Mulai ulang Gemini CLI:
    👉💻 Tutup Gemini CLI (/quit), lalu mulai ulang:
    gemini
    
  3. Verifikasi bahwa skill dimuat:
    👉💻 Verifikasi bahwa skill aktif dengan mengetik /skills di dalam Gemini CLI. Anda akan melihat k8s-troubleshooter dalam daftar.
  4. Cara kerjanya dalam praktik: Sekarang, panggil skill:
    👉💬 Masukkan perintah ini ke Gemini CLI:
    Use the k8s-troubleshooter skill to find out why the contacts service is failing.
    AI mengikuti rencana terstruktur di SKILL.md, bukan berimprovisasi, sehingga menghasilkan hasil yang lebih konsisten.

Latihan: Mengonsep Keterampilan Anda sendiri

Pikirkan alur kerja harian Anda. Tugas berulang apa yang dapat Anda otomatiskan dengan Keterampilan?

  • Ide: Kemampuan untuk mengaudit manifes terkait praktik terbaik keamanan sebelum deployment.
  • Ide: Kemampuan untuk membuat konfigurasi cluster GKE yang kompleks berdasarkan jenis workload.

8. Kesimpulan

Lab ini menunjukkan cara baru berinteraksi dengan infrastruktur cloud dengan melalui berbagai tingkat konteks AI. Dengan beralih dari tanpa konteks ke konteks infrastruktur penuh (Gemini CLI + GKE MCP), Anda akan melihat seberapa efektif asisten AI saat melihat file dan status cluster Anda.

Ringkasan lab

  • Konteks penting: Anda melihat bagaimana alat AI tanpa konteks tidak dapat membantu mengatasi masalah codebase tertentu.
  • Konteks terminal: Anda menggunakan Gemini CLI untuk menganalisis file lokal dan mengidentifikasi kesalahan konfigurasi langsung dari ruang kerja Anda.
  • Pen-debug-an konteks lengkap: Anda menggunakan Gemini CLI dengan MCP agar AI dapat mendiagnosis dan memperbaiki masalah kompleks dengan mengorelasikan file codebase dengan status cluster aktif.
  • Ekstensibilitas: Anda akan mempelajari Keterampilan dan cara menggunakannya untuk mengodifikasi pengetahuan organisasi.

Pembersihan

Untuk mencegah tagihan berkelanjutan, jalankan skrip penonaktifan. Perhatikan bahwa langkah ini tidak diperlukan jika Anda menjalankan lab di Qwiklabs.

👉💻 Jalankan perintah berikut dari direktori workshop:

cd ~/devrel-demos/codelabs/ai-toolkit-lab-1/
./teardown.sh

Langkah berikutnya

Berikut beberapa rekomendasi untuk bacaan lebih lanjut:

9. Lampiran: Solusi untuk kerusakan manifes

Jika Anda mengalami masalah atau ingin memverifikasi error, berikut adalah daftar kerusakan yang terjadi di direktori manifests-broken/ dan cara memperbaikinya:

  1. URL yang tidak valid di config.yaml:
    • Error: TRANSACTIONS_API_ADDR: "ledgerwriter::8080" (titik dua ganda).
    • Alasan: Aplikasi gagal mengurai alamat, sehingga menyebabkan error koneksi.
    • Perbaikan: Ubah kembali ke "ledgerwriter:8080".
  2. Label tidak cocok di contacts.yaml:
    • Error: Pemilih layanan ditetapkan ke app: contacts-backend, bukan contacts.
    • Alasan: Layanan tidak dapat menemukan Pod (yang masih memiliki app: contacts), sehingga traffic tidak akan dirutekan.
    • Perbaikan: Ubah pemilih menjadi app: contacts.
  3. Ketidakcocokan port di userservice.yaml:
    • Error: Layanan targetPort ditetapkan ke 8081, bukan 8080.
    • Alasan: Traffic yang dikirim ke layanan akan diteruskan ke port container yang salah, sehingga menyebabkan koneksi ditolak.
    • Perbaikan: Ubah targetPort kembali menjadi 8080.
  4. Nama layanan tidak cocok di config.yaml:
    • Error: BALANCES_API_ADDR: "balance-reader:8080" (bukan balancereader).
    • Alasan: Nama host tidak akan di-resolve di DNS karena layanan diberi nama balancereader.
    • Perbaikan: Ubah kembali ke "balancereader:8080".
  5. Kebijakan penarikan image di contacts.yaml:
    • Error: imagePullPolicy: Never.
    • Alasan: K8s tidak akan menarik image dari registry, dengan asumsi image tersebut bersifat lokal. Proses ini akan gagal dengan ErrImagePull.
    • Perbaikan: Hapus baris atau tetapkan ke IfNotPresent.
  6. Kegagalan pemeriksaan kesiapan di userservice.yaml:
    • Error: Jalur diubah menjadi /healthz, bukan /ready.
    • Alasan: Container tidak menayangkan /healthz, sehingga pemeriksaan gagal dan pod tidak pernah ditandai siap.
    • Perbaikan: Ubah jalur kembali ke /ready.
  7. Batas resource di contacts.yaml:
    • Error: Batas memori ditetapkan ke 10Mi, bukan 128Mi.
    • Alasan: Aplikasi memerlukan lebih banyak memori untuk dimulai, sehingga aplikasi diakhiri karena kehabisan memori (OOMKilled).
    • Perbaikan: Pulihkan batas memori.
  8. Variabel lingkungan tidak ada di frontend.yaml:
    • Error: Menghapus variabel lingkungan REGISTERED_OAUTH_CLIENT_ID.
    • Mengapa: Aplikasi mungkin gagal atau menonaktifkan fitur jika variabel lingkungan yang diharapkan tidak ada.
    • Perbaikan: Pulihkan definisi variabel lingkungan.
  9. Ketidakcocokan kunci ConfigMap di frontend.yaml:
    • Error: key: DEMO_USER, bukan DEMO_LOGIN_USERNAME.
    • Alasan: K8s tidak dapat menemukan kunci di ConfigMap, sehingga menyebabkan container gagal dimulai.
    • Perbaikan: Ubah kembali tombol ke DEMO_LOGIN_USERNAME.
  10. Kesalahan ketik dalam nama gambar di userservice.yaml:
    • Error: user-service, bukan userservice.
    • Alasan: Image tidak ada di registry, sehingga menyebabkan ImagePullBackOff.
    • Perbaikan: Perbaiki nama gambar.
  11. Masalah akun layanan di contacts.yaml:
    • Error: bank-of-anthos-sa, bukan bank-of-anthos.
    • Alasan: ServiceAccount tidak ada atau tidak memiliki izin.
    • Perbaikan: Gunakan nama ServiceAccount yang benar.