Üksus 5 / 11

Kubernetes: Manifest, Helm ja AI-põhine orkestratsioon

Kasu:

  • Võimalus mõista Kubernetese põhiobjekte (Pod, juurutus, teenus, konfiguratsioonikaart, salajane, nimeruum) ja deklaratiivset filosoofiat ning koostada tehisintellekti jaoks kindlaid manifeste
  • Võimalus muuta manifestid tootmiseks valmis ja turvaliseks ressursipiirangute, tervisekontrollide (sondide), fikseeritud kujutise siltide ja kitsa RBAC-iga
  • Võimalus kontrollida õiget konteksti enne täitmist ja rakendada kuivjooksu distsipliini koos kuivkäigu/diff

Ühte konteinerit on lihtne käivitada. Kuid luua süsteem, mis jaotab sadu konteinereid kümnete serverite vahel, taaskäivitub automaatselt, kui üks neist kokku jookseb, kordab seda koormuse suurenemisel ja värskendab seda ilma seisakuta? See on orkestreerimine ja tööstusharu standardtööriist on Kubernetes (lühidalt K8s) – platvorm, mis juurutab, skaleerib ja haldab konteinereid automaatselt klastris. Kubernetes on võimas, kuid keeruline: kõik on määratletud pikkade, taandetundlike YAML-failidega, mida nimetatakse manifestideks. See on koht, kus tehisintellekt annab värsket õhku; Õige konteksti korral koostab see kiiresti need manifestid ja dekodeerib nende salapärased vead.

Kuid Kubernetesis tähendab vale manifest terve teenuse suutmatust püstitada, skaleerimist valesti või haavatavuse jätmist. Teie kohustus on mõista ja kontrollida iga tehisintellekti loodud manifesti – eriti enne kubectli rakendamist.

Kubernetese põhiobjektid

Kubernetese auditeerimiseks peaksite teadma põhimõisteid:

  • Pod: väikseim tööüksus; See sisaldab ühte või mitut konteinerit. Üldiselt ei kasutata Podi otse, vaid kasutatakse seda haldavaid emaobjekte.
  • Juurutamine: määrab, mitu koopiat rakendusest töötab, millist pilti see kasutab ja kuidas seda värskendatakse. Kui Pod jookseb kokku, loob see selle automaatselt uuesti.
  • Teenus: pakub kaustadele fikseeritud võrguaadressi ja koormuse tasakaalustamist; Kuigi kaunad tulevad ja lähevad, ei muutu juurdepääsuaadress.
  • ConfigMap ja Secret: hoiab konfiguratsiooniväärtused ja salajase teabe Podidest eraldi. ConfigMap on selgesõnaliste sätete jaoks, Secret on tundlike väärtuste jaoks.
  • Nimeruum: piirkond, mis loogiliselt jagab ja isoleerib ressursse (nt dev, prod).
  • Sissepääs: reeglistik, mis suunab HTTP-liikluse välismaailmast klastri teenustele.

Helm on Kubernetese "paketihaldur": see võimaldab teil ühe käsuga koostada korduvaid manifeste (diagramme) ja installida need erinevate väärtustega erinevatesse keskkondadesse. AI koostab nii töötlemata manifesti kui ka Helmi diagrammi.

Miks on nii palju objekte? Kuna Kubernetese põhifilosoofia on deklaratiivne: määratlete "kuidas soovite, et süsteem lõpuks välja näeks" (nt "sellest rakendusest peab alati töötama kolm koopiat"), samal ajal kui Kubernetes liigutab praegust olekut pidevalt soovitud olekule lähemale. Kui Pod sureb, loob see uue; kui sõlm läheb alla, liigub see töökoormuse teisele sõlmele. Sellepärast pole manifestid mitte käsklused "tee", vaid retseptid "lase olla nii". Selle eristuse mõistmine on AI tekitatud manifestide lugemisel kriitilise tähtsusega: iga domeen kirjeldab osa süsteemi soovitud olekust. Vale domeen tähendab, et Kubernetes töötab vale eesmärgi nimel – ja seda eesmärki jõustatakse vaikselt ja järjekindlalt.

Näpunäide. Kubernetesis on kõige olulisem ohutu testimise tööriist kubectl apply --dry-run=server -f file.yaml: see näitab, kas server nõustub ja mida teha ilma manifesti tegelikult rakendamata. Enne manifesti rakendamist tootele käivitage kindlasti kuivkäivitus ja kubectl diff.

Samm-sammult: manifestide loomine tehisintellektiga

  1. Kirjeldage rakendust ja vajadust. Pildi nimi, port, koopiate arv, ressursipiirangud (CPU/mälu).
  2. Taotlege juurutamist + teenust. Tavaliselt nõutakse mõlemat koos.
  3. Eraldi konfiguratsioon ja saladus. Seadistused ConfigMapile, tundlikud väärtused Secret.
  4. Lisage tervisekontroll. livenessProbe (kas on otseülekanne) ja readynessProbe (kas see on liikluseks valmis) on kriitilised.
  5. Määrake ressursipiirang. Ilma taotluste/piiranguteta võib Pod tarbida kogu sõlme.
  6. Kinnitage parameetritega "--dry-run" ja "diff", seejärel rakendage. Esimesena testi nimeruumis.

Turvalisus: Kubernetese spetsiifilised riskid

  1. Saladus pole tegelikult saladus – see on lihtsalt base64. Kubernetes Secreti objekt base64 kodeerib väärtusi; See ei ole krüptimine, seda on lihtne dekrüpteerida. Tõelise privaatsuse tagamiseks on vaja etcd-krüptimist ja välist varahoidlat (Vault, pilvesaladuse haldur). Ärge kunagi sisestage salajasi manifeste otse Gitile (selleks on lahendusi, näiteks pitseeritud saladused/välised saladused).
  2. Määrake ressursipiirang. Piiranguteta Pod võib kogu sõlme mälulekkega kokku kukkuda.
  3. Minimaalne volitus (RBAC). Rollipõhise juurdepääsu juhtimisega on igal teenusel/kasutajal ainult vajalikud õigused. AI annab mõnikord suure klastri administraatori; kitsenda seda.
  4. Ärge kasutage "viimast" pildimärgendit. Te ei tea, milline versioon töötab, ja te ei saa seda tagasi pöörata.
Ettevaatust: kubectli kustutamine või vale rakendamine võib hävitada aktiivse juurutuse. Enne käskude käivitamist kontrolli kindlasti, millises nimeruumis sa asud (kubectl config current-context); Juhuslikud tööd on tootmise kontekstis tavaline katastroof.

Toores manifest vs. Helmi tabel

kriteerium

Toores YAML-i manifest

Helmi diagramm

Paigaldamine

kubectl rakendus -f

tüüri paigaldamine

Multimeedium (arendaja/toode)

Kopeeri-kleebi, veatundlik

Üks diagramm, erinevad väärtused.yaml

Versioon/tagasi

käsitsi

lihtne tüüri tagasipööramisega

Õppimiskõver

madal

keskmine

millal

Väike, ühtne keskkond

Multimeedia, korduv teenus

kolm minikarpi

Juhtum 1 — katkenud teenuse saladus. Pod taaskäivitus pidevalt (CrashLoopBackOff). Meeskond andis logid ja manifesti AI-le; Tehisintellekt näitas, et Podi ei peetud kunagi "valmis", kuna valmisolekProbe vaatas valet porti. Nad tegid pordi korda, teenus muutus 10 minutiga stabiilseks. Selle suhte käsitsi loomine võib võtta tunde.

Juhtum 2 – piiride seadmata jätmine murdis sõlme. Juurutamisel ei olnud piiranguid; Mäluleke paisutas Podi ja jooksis kogu sõlme kokku, tuues alla ka naaberteenused. Pärast intsidenti panid nad tehisintellekti ütlema "lisage kõigile juurutustele mõistlikud protsessori-/mälupäringud ja piirangud" ning muutsid selle standardiks. Üks puuduv liin maksis tunde seisakuid.

Juhtum 3 – hõivatud suur RBAC. Uurimise käigus leiti, et tehisintellekti loodud ServiceAccount manifest on seotud klastri administraatori rolliga – see tähendab, et teenus võib hallata kogu klastrit. Meeskond piiras luba oma nimeruumis ainult Podide lugemiseks. Väiksemate privileegide põhimõte sulges turvahaavatavuse.

Neli kopeeritavat malli

1) juurutamine + teenuse tootmine:

Kirjutage Kubernetese juurutamise ja teenuse manifest. Rakendus: [AD], pilt: [pilt: fikseeritud versioon], port: [X], koopia: [N]. Reeglid: - Lisage protsessori/mälu päringuid ja piiranguid. - Määratlege livenessProbe ja ReadinessProbe. - Lugege konfiguratsiooni ConfigMapist, salajase objekti salajane; Ärge manustage manifesti väärtusi, kasutage kohahoidjaid. - ÄRGE kasutage pildimärgendit ":latest". Anna koos kirjeldusega.

2) Ilmselgete vigade lahendamine:

Praegune Pod on olekus [CrashLoopBackOff / Pending / ImagePullBackOff]. Vastavalt järgmisele manifestile ja väljundile „kubectl description” loetlege võimalikud algpõhjused tõenäosuse järjekorras ja andke igaühe jaoks välja verify käsk. Manifest: [YAML] Kirjeldage: [OUTPUT]

3) Turvalisuse/terviklikkuse kontroll:

Kontrollige seda Kubernetese manifesti: kas ressursipiirang puudub, kas see on puudu, kas on :latest silt, kas on liiga lai RBAC/luba, kas saladus on manifesti manustatud? Kirjutage leiud tähtsuse järjekorras ja parandusega. Manifest: [YAML]

4) Teisendamine roolidiagrammiks:

Teisendage järgmised töötlemata manifestid korduvkasutatavaks Helm-diagrammiks: millised väärtused peaksid minema väärtusele Values.yaml (pilt, koopia, allikas, keskkond)? Kuva diagrammi struktuur ja näidisväärtused.yaml.Manifests: [YAML]

Nõrk viip / Tugev viip

Nõrk: "Kirjutage minu rakenduse jaoks Kubernetes YAML."

Tulemus: no-probe, no-limit Deployment koos :latest silt, manustades salajane tavaline; Tootmises ebakindel ja habras.

Tugev: "Kirjutage Kubernetese juurutus + teenus. Pildi minu rakendus: 1.4.2, 3 koopiat, 8080 porti. Protsessor 100-500 m, mälu 128Mi-512Mi lisataotluste/limiitide lisamine. Lisage /healthz elavdamise sond, /ready jaoks valmisoleku sond. Salajane objekt G, lugege seda koos kirjeldusega.

Erinevus: teine ​​viipaversioon annab skaala, ressursipiirangud, tervisekontrolli ja salareegli; Väljund on tootmislähedane ja ohutu.

Levinud vead

  • Ei sea ressursipiiranguid. Üks Pod võib tarbida kogu sõlme.
  • Tervisekontrolli (sondi) ei lisa. Kubernetes ei suuda tuvastada kokkujooksnud/ei ole valmis Podit.
  • `:latest` silt. Jääb ebaselgeks, milline versioon töötab, seda ei saa tagasi pöörata.
  • Andke saladus otse Gitile. Base64 ei ole krüptimine; kõik lahendavad selle.
  • Käskude käivitamine vales kontekstis/nimeruumis. Kõige tavalisem viis kokkujooksmiseks tootlikus versioonis.
  • vahelejätmine `--dry-run`/`diff. Enne rakendamist pole näha, mis juhtub.

Kokkuvõttes

Kubernetes on võimas, kuid keeruline orkestraator, mis juurutab, skaleerib ja optimeerib konteinereid automaatselt kogu klastri ulatuses; Kõik on määratletud manifesti YAML-idega, mille Helm mallistab. AI koostab kiiresti juurutamise/teenuse manifestid ja Helm-diagrammid, lahendab salapäraseid vigu – kuid peate selgelt nõudma ressursipiirangut, tervisekontrolli, muutumatut pildimärgendit, kitsast RBAC-i ja salajasi turvareegleid. --Dry-run, Diff ja korrektne kontekstikontroll on harjumused, mis hoiavad ära toote krahh.

Rakenduse ülesanne

Laske tehisintellektil luua näidisrakenduse manifest malliga „Juurendus + teenuse loomine”. Seejärel tehke järgmist. (1) Laske mallil "Turvalisuse/terve mõistuse kontroll" kontrollida ressursipiirangut, proove, :uusimat ja salajast; (2) käivitage võimalusel testklastris/minikubis käsk kubectl apply --dry-run=server ja loe väljund; (3) Märkige kaks kõige olulisemat ohutuse/kindluse elementi, mille leiate, et need puuduvad.

kontrollnimekiri

  • [ ] Lisasin oma päringule pildi versiooni, koopiate arvu, pordi ja ressursipiirangud.
  • [ ] Lisasin manifestile elavuse ja valmisolekusondi.
  • [ ] Pildi silt parandatud; Ma ei kasutanud :latest.
  • [ ] Saladust ei ole manifesti manustatud; Kasutasin Secret objekti/välist varahoidlat.
  • [ ] Kitsendasin RBAC/load minimaalsete õigusteni.
  • [ ] Enne taotlemist kontrollisin, et olen õiges kontekstis ja et --dry-run/diff väljundid.