Satuan 5 / 11

Kubernetes: Manifest, Helm, dan Orkestrasi yang Didukung AI

Keuntungan:

  • Kemampuan untuk memahami objek dasar (Pod, Deployment, Service, ConfigMap, Secret, Namespace) dan filosofi deklaratif Kubernetes serta menghasilkan manifes yang solid untuk kecerdasan buatan
  • Kemampuan untuk membuat manifes siap diproduksi dan diamankan dengan batasan sumber daya, pemeriksaan kondisi (probe), tag gambar tetap, dan RBAC yang sempit
  • Kemampuan untuk memverifikasi konteks yang benar sebelum eksekusi dan menerapkan disiplin uji coba dengan uji coba/diff

Sangat mudah untuk menjalankan satu kontainer. Namun membangun sistem yang menyebarkan ratusan container ke puluhan server, secara otomatis memulai ulang ketika salah satu server mogok, mereplikasinya ketika beban bertambah, dan memperbaruinya tanpa downtime? Itulah orkestrasi, dan alat standar industrinya adalah Kubernetes (disingkat K8) — platform yang secara otomatis menerapkan, menskalakan, dan mengelola container di seluruh cluster. Kubernetes sangat kuat namun kompleks: semuanya ditentukan oleh file YAML yang panjang dan sensitif terhadap indentasi — yang disebut manifes. Di sinilah AI memberikan angin segar; Dengan konteks yang tepat, ia dengan cepat menghasilkan manifes ini dan memecahkan kode kesalahan misteriusnya.

Namun di Kubernetes, manifes yang salah berarti gagal mempertahankan seluruh layanan, melakukan penskalaan yang salah, atau meninggalkan kerentanan. Merupakan tanggung jawab Anda untuk memahami dan memverifikasi setiap manifes yang dihasilkan AI — terutama sebelum kubectl diterapkan.

Objek inti Kubernetes

Untuk mengaudit Kubernetes, Anda harus mengetahui konsep utama:

  • Pod : Satuan kerja terkecil; Ini berisi satu atau beberapa wadah. Umumnya Pod tidak digunakan secara langsung, melainkan objek induk yang mengelolanya yang digunakan.
  • Deployment: Menentukan berapa banyak salinan aplikasi yang akan dijalankan, gambar mana yang akan digunakan, dan cara memperbaruinya. Jika sebuah Pod mengalami kerusakan, Pod tersebut akan dibuat ulang secara otomatis.
  • Layanan: Memberikan alamat jaringan tetap dan penyeimbangan beban ke pod; Meskipun pod datang dan pergi, alamat aksesnya tidak berubah.
  • ConfigMap dan Secret: Menyimpan nilai konfigurasi dan informasi rahasia secara terpisah dari Pod. ConfigMap untuk pengaturan eksplisit, Rahasia untuk nilai sensitif.
  • Namespace: Area yang secara logis membagi dan mengisolasi sumber daya (misalnya dev, prod).
  • Ingress: Kumpulan aturan yang mengarahkan lalu lintas HTTP dari dunia luar ke layanan di cluster.

Helm adalah "manajer paket" Kubernetes: ini memungkinkan Anda membuat template manifes berulang (diagram) dan menginstalnya dengan nilai berbeda di lingkungan berbeda dengan satu perintah. AI menghasilkan manifes mentah dan bagan Helm.

Mengapa ada begitu banyak objek? Karena filosofi inti Kubernetes adalah deklaratif: Anda mendefinisikan "bagaimana Anda ingin sistem pada akhirnya terlihat" (misalnya "selalu menjalankan 3 salinan aplikasi ini"), sementara Kubernetes terus-menerus memindahkan keadaan saat ini mendekati keadaan yang diinginkan. Jika sebuah Pod mati, ia akan membuat Pod baru; jika sebuah node down, beban kerja akan dipindahkan ke node lain. Itu sebabnya manifes bukanlah perintah "lakukan", melainkan resep "biarkan seperti ini". Memahami perbedaan ini sangat penting ketika membaca manifes yang dihasilkan AI: setiap domain menggambarkan bagian dari keadaan sistem yang diinginkan. Domain yang salah berarti Kubernetes berupaya mencapai tujuan yang salah — dan tujuan tersebut diterapkan secara diam-diam dan terus-menerus.

Tip: Di Kubernetes, alat pengujian aman yang paling penting adalah kubectl apply --dry-run=server -f file.yaml: alat ini menunjukkan apakah server akan menerima dan apa yang harus dilakukan tanpa benar-benar menerapkan manifes. Pastikan untuk menjalankan dry-run dan kubectl diff sebelum menerapkan manifes ke prod.

Langkah demi langkah: Membuat manifes dengan AI

  1. Jelaskan aplikasi dan kebutuhannya. Nama gambar, port, berapa replika, batasan sumber daya (CPU/memori).
  2. Permintaan Penerapan + Layanan. Biasanya keduanya dibutuhkan bersamaan.
  3. Pisahkan konfigurasi dan rahasia. Pengaturan ke ConfigMap, nilai sensitif ke Rahasia.
  4. Tambahkan pemeriksaan kesehatan. livenessProbe (apakah sudah aktif) dan kesiapanProbe (apakah sudah siap untuk lalu lintas) sangat penting.
  5. Tetapkan batas sumber daya. Tanpa permintaan/batasan, sebuah Pod dapat menggunakan seluruh Node.
  6. Verifikasi dengan `--dry-run` dan `diff`, lalu terapkan. Pertama di namespace pengujian.

Keamanan: Risiko khusus Kubernetes

  1. Rahasia sebenarnya bukan rahasia — itu hanya base64. Objek Rahasia Kubernetes base64 mengkodekan nilai; Ini bukan enkripsi, ini mudah didekripsi. Untuk privasi sejati, enkripsi dll dan brankas eksternal (Vault, manajer rahasia cloud) diperlukan. Jangan pernah melakukan manifes rahasia langsung ke Git (ada solusi untuk ini seperti Rahasia Tersegel/Rahasia Eksternal).
  2. Tetapkan batas sumber daya. Sebuah Pod yang tidak memiliki batas dapat membuat seluruh node menjadi crash karena kebocoran memori.
  3. Otoritas minimum (RBAC). Dengan Kontrol Akses Berbasis Peran, setiap layanan/pengguna hanya memiliki izin yang diperlukan. AI terkadang memberikan admin cluster yang besar; persempit ini.
  4. Jangan gunakan tag gambar `terbaru`. Anda tidak tahu versi mana yang sedang berjalan dan Anda tidak dapat mengembalikannya.
Perhatian: kubectl delete atau penerapan yang salah dapat menghancurkan Deployment yang sedang berjalan. Pastikan untuk memverifikasi namespace tempat Anda berada (kubectl config konteks saat ini) sebelum menjalankan perintah; Pekerjaan yang tidak disengaja adalah bencana umum dalam konteks produksi.

Manifes mentah vs. tabel Helm

kriteria

Manifes YAML mentah

Bagan helm

Instalasi

kubectl terapkan -f

pemasangan helm

Multimedia (pengembangan/prod)

Copy-paste, rawan kesalahan

Bagan tunggal, nilai berbeda.yaml

Versi/kembalikan

dengan tangan

mudah dengan rollback helm

Kurva belajar

rendah

sedang

kapan

Lingkungan kecil dan tunggal

Layanan multi-media dan berulang

tiga kasus mini

Kasus 1 — rahasia layanan yang mogok. Sebuah Pod terus-menerus di-reboot (CrashLoopBackOff). Tim memberikan log dan manifes kepada AI; AI menunjukkan bahwa Pod tidak pernah dianggap “siap” karena ReadinessProbe melihat port yang salah. Mereka memperbaiki portnya, layanan menjadi stabil dalam 10 menit. Membangun hubungan ini secara manual bisa memakan waktu berjam-jam.

Kasus 2 - tidak menetapkan batasan memutuskan hubungan. Tidak ada batasan dalam suatu Deployment; Kebocoran memori membuat Pod membengkak dan membuat seluruh node menjadi crash, sehingga layanan di sekitarnya juga terhenti. Setelah kejadian tersebut, mereka membuat AI mengatakan "tambahkan permintaan CPU/memori yang masuk akal dan batasan untuk semua Deployment" dan menjadikannya standar. Satu baris yang hilang memerlukan waktu henti selama berjam-jam.

Kasus 3 — RBAC besar ditangkap. Selama penyelidikan, manifes ServiceAccount yang dihasilkan oleh AI ditemukan terkait dengan peran admin cluster — artinya layanan tersebut dapat mengelola seluruh cluster. Tim mempersempit izin untuk hanya membaca Pod di namespace mereka. Prinsip hak istimewa paling rendah menutup kerentanan keamanan.

Empat templat yang dapat disalin

1) Penerapan + Produksi layanan:

Tulis manifes Deployment dan Layanan untuk Kubernetes. Aplikasi: [AD], gambar: [gambar: versi tetap], port: [X], replika: [N]. Aturan:- Tambahkan permintaan dan batasan CPU/memori.- Tentukan livenessProbe dan kesiapanProbe.- Baca konfigurasi dari ConfigMap, rahasia dari objek Rahasia; Jangan menyematkan nilai dalam manifes, gunakan placeholder. - JANGAN gunakan tag gambar ": terbaru". Berikan dengan deskripsi.

2) Pemecahan kesalahan nyata:

Pod saat ini berada dalam status [CrashLoopBackOff / Pending / ImagePullBackOff]. Berdasarkan manifes berikut dan keluaran 'kubectl deskripsikan', buatlah daftar penyebab utama yang mungkin terjadi berdasarkan probabilitasnya dan jalankan perintah verifikasi untuk masing-masing penyebab. Manifes: [YAML] Jelaskan: [OUTPUT]

3) Pemeriksaan keamanan/integritas:

Periksa manifes Kubernetes ini: apakah batas sumber dayanya hilang, apakah ada masalah yang hilang, apakah ada tag :latest, apakah ada RBAC/izin yang terlalu luas, apakah rahasianya tertanam dalam manifes? Tuliskan temuan-temuan tersebut menurut kepentingannya dan disertai koreksi. Manifes: [YAML]

4) Konversi ke bagan Helm:

Ubah manifes mentah berikut menjadi diagram Helm yang dapat digunakan kembali: nilai manakah yang harus dimasukkan ke dalam value.yaml (gambar, replika, sumber, lingkungan)? Tampilkan struktur bagan dan nilai sampel.yaml.Manifes: [YAML]

Perintah lemah / Perintah kuat

Lemah: "Tulis Kubernetes YAML untuk aplikasi saya."

Hasil: Deployment tanpa penyelidikan, tanpa batas dengan tag :latest, menyematkan dataran rahasia; Tidak aman dan rapuh dalam produksi.

Kuat: "Tulis Penyebaran + Layanan Kubernetes. Gambar myapp:1.4.2, 3 replika, port 8080. CPU 100m-500m, memori 128Mi-512Mi tambahkan permintaan/batas. Pasang pemeriksaan keaktifan untuk /healthz, pemeriksaan kesiapan untuk /siap. Baca Rahasia dari objek Rahasia, jangan sematkan dalam manifes. Berikan dengan deskripsi."

Perbedaan: versi prompt kedua memberikan skala, batasan sumber daya, pemeriksaan kesehatan, dan aturan rahasia; Outputnya dekat dengan produksi dan aman.

Kesalahan umum

  • Tidak menetapkan batas sumber daya. Sebuah Pod dapat menggunakan seluruh Node.
  • Tidak menambahkan health check (probe). Kubernetes tidak dapat mendeteksi Pod yang rusak/belum siap.
  • tanda `:terbaru`. Tidak jelas versi mana yang berjalan, tidak dapat dibatalkan.
  • Menyerahkan rahasianya langsung ke Git. Base64 bukan enkripsi; semua orang menyelesaikannya.
  • Menjalankan perintah dalam konteks/namespace yang salah. Cara paling umum untuk crash pada prod.
  • melewatkan `--dry-run`/`diff`. Tidak melihat apa yang akan terjadi sebelum implementasi.

Singkatnya

Kubernetes adalah orkestrator yang kuat namun kompleks yang secara otomatis menerapkan, menskalakan, dan mengoptimalkan container di seluruh cluster; Semuanya ditentukan oleh YAML manifes, yang dijadikan template oleh Helm. AI dengan cepat menghasilkan manifes Penerapan/Layanan dan bagan Helm, memecahkan bug misterius — namun Anda harus secara eksplisit meminta batas sumber daya, pemeriksaan kesehatan, tag gambar yang tidak dapat diubah, RBAC yang sempit, dan aturan keamanan rahasia. --dry-run, diff dan pemeriksaan konteks yang benar adalah kebiasaan yang mencegah kerusakan produk.

Tugas aplikasi

Minta AI membuat manifes untuk contoh aplikasi dengan templat "Deployment + Service generation". Kemudian: (1) Periksa batas sumber daya, penyelidikan, :terbaru, dan rahasia dengan templat "Pemeriksaan keamanan/kewarasan"; (2) jalankan kubectl apply --dry-run=server pada cluster pengujian/minikube jika memungkinkan dan baca hasilnya; (3) catat dua item keselamatan/kekokohan paling penting yang Anda temukan hilang.

daftar periksa

  • [] Saya menambahkan versi gambar, jumlah replika, port, dan batasan sumber daya ke permintaan saya.
  • [ ] Saya menambahkan penyelidikan keaktifan dan kesiapan ke manifes.
  • [] Tag gambar diperbaiki; Saya tidak menggunakan :terbaru.
  • [ ] Rahasia tidak tertanam dalam manifes; Saya menggunakan objek Rahasia/lemari besi eksternal.
  • [ ] Saya mempersempit RBAC/izin menjadi izin minimal.
  • [ ] Sebelum melamar, saya memverifikasi bahwa saya berada dalam konteks yang benar dan --dry-run/diff menghasilkan.