Unit 5 / 11

Kubernetes: Manifes, Helm dan Orkestrasi Dikuasakan AI

Keuntungan:

  • Keupayaan untuk memahami objek asas (Pod, Deployment, Service, ConfigMap, Secret, Namespace) dan falsafah deklaratif Kubernetes dan menghasilkan manifes pepejal untuk kecerdasan buatan
  • Keupayaan untuk membuat manifes sedia untuk pengeluaran dan selamat dengan had sumber, pemeriksaan kesihatan (probe), tag imej tetap dan RBAC sempit
  • Keupayaan untuk mengesahkan konteks yang betul sebelum pelaksanaan dan menerapkan disiplin larian kering dengan larian kering/perbezaan

Mudah untuk menjalankan satu bekas. Tetapi mewujudkan sistem yang menyebarkan ratusan kontena merentasi berdozen pelayan, dimulakan semula secara automatik apabila salah satu daripadanya ranap, mereplikasinya apabila beban meningkat dan mengemas kininya dengan masa henti sifar? Itulah orkestrasi, dan alat standard industri ialah Kubernetes (pendek kata K8) — platform yang menggunakan secara automatik, menskala dan mengurus bekas merentas kluster. Kubernetes berkuasa tetapi kompleks: semuanya ditakrifkan oleh fail YAML sensitif lekukan yang panjang — dipanggil manifes. Di sinilah AI memberikan nafas udara segar; Dengan konteks yang betul, ia dengan cepat menghasilkan manifes ini dan menyahkod kesilapan misteri mereka.

Tetapi dalam Kubernetes, manifes yang salah bermakna gagal mengekalkan keseluruhan perkhidmatan, melakukan penskalaan secara tidak betul atau meninggalkan kelemahan. Adalah menjadi tanggungjawab anda untuk memahami dan mengesahkan setiap manifes yang dihasilkan AI — terutamanya sebelum kubectl digunakan.

Objek teras Kubernetes

Untuk mengaudit Kubernetes, anda harus mengetahui konsep utama:

  • Pod: Unit kerja terkecil; Ia mengandungi satu atau beberapa bekas. Secara amnya, Pod tidak digunakan secara langsung, tetapi objek induk yang mengurusnya digunakan.
  • Deployment: Mentakrifkan bilangan salinan aplikasi yang akan dijalankan, imej yang akan digunakan dan cara ia akan dikemas kini. Jika Pod ranap, ia akan mencipta semula secara automatik.
  • Perkhidmatan: Menyediakan alamat rangkaian tetap dan pengimbangan beban kepada pod; Walaupun pod datang dan pergi, alamat akses tidak berubah.
  • ConfigMap dan Rahsia: Menyimpan nilai konfigurasi dan maklumat rahsia berasingan daripada Pod. ConfigMap adalah untuk tetapan eksplisit, Rahsia adalah untuk nilai sensitif.
  • Ruang nama: Kawasan yang membahagikan dan mengasingkan sumber secara logik (cth. dev, prod).
  • Ingress: Set peraturan yang mengarahkan trafik HTTP dari dunia luar kepada perkhidmatan dalam kelompok.

Helm ialah "pengurus pakej" Kubernetes: ia membolehkan anda membuat templat manifes berulang (carta) dan memasangnya dengan nilai berbeza dalam persekitaran berbeza dengan satu arahan. AI menghasilkan kedua-dua manifes mentah dan carta Helm.

Mengapa terdapat begitu banyak objek? Oleh kerana falsafah teras Kubernetes adalah deklaratif: anda mentakrifkan "bagaimana anda mahu sistem itu kelihatan" (cth. "sentiasa mempunyai 3 salinan aplikasi ini berjalan"), manakala Kubernetes terus mengalihkan keadaan semasa lebih dekat kepada keadaan yang dikehendaki itu. Jika Pod mati, ia mencipta yang baharu; jika nod turun, ia mengalihkan beban kerja ke nod lain. Itulah sebabnya manifes bukan arahan "lakukan", tetapi resipi "biarlah seperti ini". Memahami perbezaan ini adalah penting apabila membaca manifes yang dihasilkan AI: setiap domain menerangkan sebahagian daripada keadaan sistem yang dikehendaki. Domain yang salah bermakna Kubernetes sedang berusaha ke arah matlamat yang salah — dan matlamat itu dikuatkuasakan secara senyap dan berterusan.

Petua: Dalam Kubernetes, alat ujian selamat yang paling penting ialah kubectl apply --dry-run=server -f file.yaml: ia menunjukkan sama ada pelayan akan menerima dan apa yang perlu dilakukan tanpa benar-benar menggunakan manifes. Pastikan anda menjalankan dry-run dan kubectl diff sebelum menggunakan manifes pada prod.

Langkah demi langkah: Membuat manifes dengan AI

  1. Terangkan permohonan dan keperluan. Nama imej, port, bilangan replika, had sumber (CPU/memori).
  2. Minta Penggunaan + Perkhidmatan. Biasanya kedua-duanya diperlukan bersama.
  3. Asingkan konfigurasi dan rahsia. Tetapan kepada ConfigMap, nilai sensitif kepada Rahsia.
  4. Tambah pemeriksaan kesihatan. livenessProbe (adakah ia langsung) dan readyProbe (adakah ia bersedia untuk lalu lintas) adalah kritikal.
  5. Tetapkan had sumber. Tanpa permintaan/had Pod boleh menggunakan keseluruhan nod.
  6. Sahkan dengan `--dry-run` dan `diff`, kemudian gunakan. Pertama dalam ruang nama ujian.

Keselamatan: Risiko khusus Kubernetes

  1. Rahsia sebenarnya bukan rahsia — ia hanya base64. Objek Rahsia Kubernetes base64 mengekod nilai; Ini bukan penyulitan, ia mudah dinyahsulit. Untuk privasi sebenar, penyulitan dsb dan peti besi luaran (Vault, pengurus rahsia awan) diperlukan. Jangan sekali-kali melakukan manifes rahsia terus kepada Git (terdapat penyelesaian untuk ini seperti Rahsia Termeterai/Rahsia Luaran).
  2. Tetapkan had sumber. Pod tanpa had boleh merosakkan keseluruhan nod dengan kebocoran memori.
  3. Kuasa minimum (RBAC). Dengan Kawalan Akses Berasaskan Peranan, setiap perkhidmatan/pengguna hanya mempunyai kebenaran yang diperlukan. AI kadangkala memberikan kluster-admin yang besar; sempitkan ini.
  4. Jangan gunakan teg imej `terkini`. Anda tidak tahu versi mana yang sedang dijalankan dan anda tidak boleh melancarkannya kembali.
Awas: kubectl delete atau penggunaan yang salah boleh memusnahkan Deployment langsung. Pastikan anda mengesahkan ruang nama mana anda berada (kubectl config current-context) sebelum menjalankan arahan; Kerja tidak sengaja adalah bencana biasa dalam konteks pengeluaran.

Jadual manifes mentah lwn. Helm

kriteria

Manifes YAML mentah

Carta helm

Pemasangan

kubectl memohon -f

pasang helm

Multimedia (dev/prod)

Salin-tampal, terdedah kepada ralat

Carta tunggal, nilai berbeza.yaml

Versi/gulung semula

dengan tangan

mudah dengan rollback helm

Keluk pembelajaran

rendah

sederhana

bila

Persekitaran kecil dan tunggal

Multi-media, perkhidmatan berulang

tiga kes mini

Kes 1 — rahsia perkhidmatan terhempas. Pod sentiasa dibut semula (CrashLoopBackOff). Pasukan itu memberikan log dan manifes kepada AI; AI menunjukkan bahawa Pod tidak pernah dianggap "bersedia" kerana kesediaanProbe melihat pada port yang salah. Mereka membetulkan pelabuhan, perkhidmatan menjadi stabil dalam 10 minit. Mewujudkan perhubungan ini secara manual boleh mengambil masa berjam-jam.

Kes 2 — tidak menetapkan had telah memecahkan simpulan. Tiada had dalam Kerahan; Kebocoran ingatan menyebabkan Pod menjadi kembung dan merempuh keseluruhan nod, menurunkan perkhidmatan jiran juga. Selepas kejadian itu, mereka membuat AI berkata "tambah permintaan dan had CPU/memori yang munasabah kepada semua Deployment" dan menjadikannya standard. Satu talian hilang kos jam masa henti.

Kes 3 — RBAC besar ditangkap. Semasa penyiasatan, manifes ServiceAccount yang dijana oleh AI didapati terikat dengan peranan pentadbir kluster — bermakna perkhidmatan itu boleh mengurus keseluruhan kluster. Pasukan mengecilkan kebenaran untuk hanya membaca Pod dalam ruang nama mereka. Prinsip keistimewaan paling sedikit menutup kelemahan keselamatan.

Empat templat yang boleh disalin

1) Penggunaan + Pengeluaran perkhidmatan:

Tulis manifes Penggunaan dan Perkhidmatan untuk Kubernetes. Aplikasi: [AD], imej: [imej: versi tetap], port: [X], replika: [N]. Peraturan:- Tambah permintaan dan had CPU/memori.- Tentukan livenessProbe dan readyProbe.- Baca konfigurasi daripada ConfigMap, rahsia daripada objek Rahsia; Jangan benamkan nilai dalam manifes, gunakan ruang letak. - JANGAN gunakan tag imej ":terkini". Beri dengan penerangan.

2) Penyelesaian ralat nyata:

Pod semasa berada dalam keadaan [CrashLoopBackOff / Pending / ImagePullBackOff]. Mengikut keluaran manifes dan 'kubectl describe' berikut, senaraikan punca punca yang mungkin mengikut urutan kebarangkalian dan keluarkan arahan pengesahan untuk setiap satu. Manifes: [YAML] Huraikan: [OUTPUT]

3) Pemeriksaan keselamatan/integriti:

Semak manifes Kubernetes ini: adakah had sumber hilang, adakah ia tiada prob, adakah terdapat teg :latest, adakah terdapat RBAC/keizinan yang terlalu luas, adakah rahsia itu tertanam dalam manifes? Tulis dapatan mengikut urutan kepentingan dan dengan pembetulan. Manifes: [YAML]

4) Penukaran kepada carta Helm:

Tukar manifes mentah berikut kepada carta Helm yang boleh diguna semula: nilai yang manakah harus dikeluarkan kepada values.yaml (imej, replika, sumber, persekitaran)? Tunjukkan struktur carta dan nilai sampel.yaml.Manifests: [YAML]

Gesaan lemah / Gesaan kuat

Lemah: "Tulis Kubernetes YAML untuk permohonan saya."

Keputusan: Penggunaan tanpa siasatan, tanpa had dengan :teg terkini, membenamkan dataran rahsia; Tidak selamat dan rapuh dalam prod.

Kuat: "Tulis Kubernetes Deployment + Service. Imej myapp:1.4.2, 3 replika, 8080 port. CPU 100m-500m, memori 128Mi-512Mi menambah permintaan/had. Letakkan liveness probe untuk /healthz, kesediaan probe untuk /ready. Bacalah Rahsia itu dalam huraian Rahsia daripada Giat.

Perbezaan: versi segera kedua memberikan skala, had sumber, pemeriksaan kesihatan dan peraturan rahsia; Keluaran hampir dengan pengeluaran dan selamat.

Kesilapan biasa

  • Tidak menetapkan had sumber. Satu Pod boleh menggunakan keseluruhan nod.
  • Tidak menambah pemeriksaan kesihatan (probe). Kubernetes tidak dapat mengesan Pod yang ranap/tidak bersedia.
  • tag `:terkini`. Ia menjadi tidak jelas versi mana yang sedang berjalan, ia tidak boleh digulung semula.
  • Melakukan rahsia terus kepada Git. Base64 bukan penyulitan; semua orang menyelesaikannya.
  • Menjalankan arahan dalam konteks/ruang nama yang salah. Cara yang paling biasa untuk ranap dalam prod.
  • melangkau `--dry-run`/`diff`. Tidak melihat apa yang akan berlaku sebelum pelaksanaan.

Secara ringkasnya

Kubernetes ialah pengatur yang berkuasa tetapi kompleks yang menggunakan secara automatik, menskala dan mengoptimumkan bekas merentas kluster; Segala-galanya ditakrifkan oleh YAML nyata, yang Helm template. AI dengan cepat menghasilkan manifes Deployment/Service dan carta Helm, menyelesaikan pepijat misteri — tetapi anda perlu meminta had sumber secara jelas, pemeriksaan kesihatan, tag imej tidak berubah, RBAC sempit dan peraturan keselamatan rahsia. --dry-run, semakan konteks berbeza dan betul ialah tabiat yang menghalang ranap prod.

Tugasan permohonan

Minta AI menjana manifes untuk sampel aplikasi dengan templat "Pengerahan + Penjanaan Perkhidmatan". Kemudian: (1) Minta ia menyemak untuk had sumber, siasatan, :terkini dan rahsia dengan templat "Semakan keselamatan/kewarasan"; (2) jalankan kubectl apply --dry-run=server pada kluster ujian/minikube jika boleh dan baca output; (3) perhatikan dua item keselamatan/keteguhan paling kritikal yang anda dapati hilang.

senarai semak

  • [ ] Saya menambah versi imej, bilangan replika, port dan had sumber pada permintaan saya.
  • [ ] Saya menambah keceriaan dan siasatan kesediaan pada manifes.
  • [ ] Tag imej tetap; Saya tidak menggunakan :latest.
  • [ ] Rahsia tidak tertanam dalam manifes; Saya menggunakan objek Rahsia/bilik kebal luaran.
  • [ ] Saya mengecilkan RBAC/keizinan kepada kebenaran minimum.
  • [ ] Sebelum memohon, saya mengesahkan bahawa saya berada dalam konteks yang betul dan --dry-run/diff output.