Buka "Kubernetes bakeng sa DevOps"

Buka "Kubernetes bakeng sa DevOps" Lumelang, baahi ba Khabro! Kubernetes ke e 'ngoe ea likarolo tsa bohlokoa tsa tikoloho ea sejoale-joale ea maru. Theknoloji ena e fana ka ts'epahalo, scalability le botsitso ho sesebelisoa sa virtualization. John Arundel le Justin Domingus ba bua ka tikoloho ea Kubernetes le ho hlahisa tharollo e netefalitsoeng ea mathata a letsatsi le letsatsi. Mohato ka mohato, o tla iketsetsa sesebelisoa sa hau sa maru mme o thehe lits'ebetso tsa ho e ts'ehetsa, ho theha tikoloho ea nts'etsopele le lipeipi tse tsoelang pele tsa phepelo tse tla u thusa ha u ntse u sebetsa lits'ebetsong tsa hau tse latelang.

• Qala ka lijana le Kubernetes ho tloha linthong tsa motheo: ha ho na phihlelo e khethehileng e hlokahalang ho ithuta sehlooho. • Iketsetse lihlopha tsa hau kapa u khethe tšebeletso e laoloang ea Kubernetes ho tsoa Amazon, Google, joalo-joalo. • Sebelisa Kubernetes ho laola nako ea bophelo ba linkho le tšebeliso ea lisebelisoa. • Ntlafatsa lihlopha ho ipapisitsoe le litšenyehelo, ts'ebetso, botsitso, matla le scalability. • Ithute lisebelisoa tse molemohali tsa ho hlahisa, ho leka, le ho tsamaisa lits'ebetso tsa hau. • Ho sebelisa mekhoa ea morao-rao ea indasteri ho netefatsa tšireletso le taolo. • Kenya ts'ebetsong melaoana ea DevOps ho pholletsa le k'hamphani ea hau hore lihlopha tsa nts'etsopele li tsebe ho sebetsa ka mokhoa o bonolo, kapele, le ka nepo.

Buka eo ke ea mang?

Buka ena e bohlokoa haholo bakeng sa basebetsi ba mafapha a tsamaiso a ikarabellang bakeng sa li-server, lits'ebetso le lits'ebeletso, hammoho le bahlahisi ba amehang ho aheng lits'ebeletso tse ncha tsa maru kapa ho fallisa lits'ebetso tse teng ho Kubernetes le leru. Se ke oa tšoenyeha, ha ho hlokahale hore u tsebe ho sebetsa le Kubernetes kapa lijana - re tla u ruta tsohle.

Basebelisi ba nang le boiphihlelo ba Kubernetes le bona ba tla fumana boleng bo bongata, ka litaba tse tebileng tsa lihlooho tse kang RBAC, phepelo e tsoelang pele, taolo ea data e hlokolosi, le ho bonoa. Re tšepa hore maqephe a buka a tla ba le ntho e thahasellisang bakeng sa hau, ho sa tsotellehe tsebo ea hau le phihlelo ea hau.

Buka ee e araba lipotso life?

Ha re ntse re rera le ho ngola buka, re buisane ka theknoloji ea leru le Kubernetes le batho ba makholo, re bua le baetapele ba indasteri le litsebi hammoho le ba qalang ka botlalo. Ka tlaase ho na le lipotso tse khethiloeng tseo ba ka ratang hore li arabeloe khatisong ena.

  • “Ke thahasella ho tseba hore na ke hobane’ng ha u lokela ho qeta nako u sebelisa theknoloji ena. Ke mathata afe a tla thusa nna le sehlopha sa ka ho rarolla bothata?
  • "Kubernetes e bonahala e khahla, empa e na le tšitiso e phahameng haholo ea ho kena. Ho lokisetsa mohlala o bonolo ha ho thata, empa tsamaiso e tsoelang pele le ho lokisa liphoso hoa tšosa. Re ka thabela ho fumana likeletso tse tšepahalang mabapi le hore na batho ba laola lihlopha tsa Kubernetes joang lefatšeng la 'nete le hore na re ka tobana le mathata afe."
  • “Keletso e nepahetseng e ka ba molemo. The Kubernetes ecosystem e fa lihlopha tse ncha likhetho tse ngata haholo tseo li ka khethang ho tsona. Ha ho na le mekhoa e mengata ea ho etsa ntho e tšoanang, u tseba joang hore na ke efe e molemohali? Joang ho etsa khetho?

'Me mohlomong ea bohlokoa ka ho fetisisa ho lipotso tsohle:

  • "Nka sebelisa Kubernetes joang ntle le ho senya k'hamphani ea ka?"

Moqotso. Tlhophiso le Lintho tsa Sephiri

Bokhoni ba ho arola mohopolo oa ts'ebeliso ea Kubernetes ho tlhophiso ea eona (ke hore, ho tsoa ho litekanyetso kapa litlhophiso life kapa life tse ka fetohang ha nako e ntse e ea) li bohlokoa haholo. Maemo a tlhophiso hangata a kenyelletsa litlhophiso tse ikhethileng tikolohong, liaterese tsa DNS tsa litšebeletso tsa motho oa boraro, le lintlha tsa netefatso.

Ha e le hantle, sena sohle se ka kenngoa ka ho toba khoutu, empa mokhoa ona ha o fetohe ka ho lekaneng. Mohlala, ho fetola boleng ba tlhophiso ho tla hloka hore o thehe le ho sebelisa khoutu ea hau hape. Tharollo e betere haholo e ka ba ho arola tlhophiso ho tsoa ho khoutu ebe o e bala ho tsoa ho faele kapa mefuta e fapaneng ea tikoloho.

Kubernetes e fana ka mekhoa e mengata e fapaneng ea ho laola tlhophiso. Taba ea mantlha, o ka fetisa boleng ts'ebelisong ka mefuta e fapaneng ea tikoloho e boletsoeng ho "pod wrapper" (bona "Lintho tse fapaneng tsa Tikoloho" leqepheng la 192). Ea bobeli, data ea tlhophiso e ka bolokoa ka kotloloho ho Kubernetes e sebelisa ConfigMap le lintho tsa Lekunutu.

Khaolong ena, re hlahloba lintho tsena ka botlalo mme re sheba mekhoa e meng e sebetsang ea ho laola tlhophiso le data e hlokolosi ka ho sebelisa sesebelisoa sa demo.

Ho nchafatsa likhetla tsa pod ha tlhophiso e fetoha

Ak'u nahane u e-na le lisebelisoa sehlopheng sa hau 'me u batla ho fetola litekanyetso ho ConfigMap ea eona. Haeba u sebelisa chate ea Helm (sheba "Helm: Package Manager for Kubernetes" leqepheng la 102), u ka bona phetoho ea tlhophiso ka bo eona 'me ua kenya likhetla tsa hau hape ka leqheka le le leng le makhethe. Kenya litlatsetso tse latelang ho litlhaloso tsa hau tsa phepelo:

checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
       | sha256sum }}

Template ea ho romelloa hona joale e na le checksum ea li-parameter tsa tlhophiso: haeba li-parameter li fetotsoe, kakaretso e tla ntlafatsoa. Haeba u tsamaisa ntlafatso ea helm, Helm e tla lemoha hore litlhaloso tsa ho romelloa li fetohile 'me li tla qala likhetla tsohle tsa pod.

Lintlha tse hlokolosi ho Kubernetes

Re se re ntse re tseba hore ntho ea ConfigMap e fana ka mokhoa o feto-fetohang oa ho boloka le ho fihlella data ea tlhophiso ka har'a sehlopha. Leha ho le joalo, lits'ebetso tse ngata li na le tlhaiso-leseling e hlokolosi, joalo ka li-password kapa linotlolo tsa API. E ka boela ea bolokoa ho ConfigMap, empa tharollo ena ha e ea nepahala.

Ho e-na le hoo, Kubernetes e fana ka mofuta o khethehileng oa ntho e etselitsoeng ho boloka lintlha tse tebileng: Lekunutu. Ka mor'a moo, a re shebeng mohlala oa hore na ntho ena e ka sebelisoa joang ts'ebetsong ea rona ea demo.

Ho qala, sheba ponahalo ea Kubernetes bakeng sa ntho ea Lekunutu (sheba hello-secret-env/k8s/secret.yaml):

apiVersion: v1
kind: Secret
metadata:
    name: demo-secret
stringData:
    magicWord: xyzzy

Mohlaleng ona, senotlolo sa lekunutu sa magicWord ke xyzzy (en.wikipedia.org/wiki/Xyzzy_(computing)). Lentsoe xyzzy hangata le thusa haholo lefatšeng la likhomphutha. Joalo ka ConfigMap, o ka boloka linotlolo le litekanyetso tse ngata nthong ea Lekunutu. Mona, ho nolofatsa, re sebelisa para e le 'ngoe feela ea bohlokoa.

Ho Sebelisa Lintho tsa Lekunutu joalo ka Liphetoho tsa Tikoloho

Joalo ka ConfigMap, ntho ea Lekunutu e ka fumaneha ka har'a setshelo e le mefuta e fapaneng ea tikoloho kapa joalo ka faele ho disk ea eona. Mohlaleng o latelang, re tla abela phetoho ea tikoloho ho boleng bo tsoang ho Lekunutu:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-env
          ports:
             - containerPort: 8888
          env:
             - name: GREETING
               valueFrom:
               secretKeyRef:
                  name: demo-secret
                  key: magicWord

Etsa taelo e latelang sebakeng sa polokelo ea demo ho sebelisa lipontšo:

kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created

Joalo ka pele, fetisetsa boema-kepe ba lehae ho thomello ho bona sephetho ho sebatli sa hau:

kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888

Ha o bula aterese Localhost:9999/ o lokela ho bona tse latelang:

The magic word is "xyzzy"

Ho Ngola Lintho tsa Lekunutu ho Lifaele

Mohlala ona, re tla kopanya ntho ea Lekunutu ho setshelo e le faele. Khoutu e fumaneha ka har'a foldara ea hello-secret-file ea polokelo ea demo.

Ho hokahanya Lekunutu joalo ka faele, re tla sebelisa phepelo e latelang:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-file
          ports:
              - containerPort: 8888
          volumeMounts:
              - name: demo-secret-volume
                mountPath: "/secrets/"
                readOnly: true
   volumes:
      - name: demo-secret-volume
        secret:
           secretName: demo-secret

Joalo ka karoloana "Ho theha lifaele tsa tlhophiso ho tsoa linthong tsa ConfigMap" ho leq. 240, re theha molumo (tabeng ena demo-secret-volume) ebe re e beha ka setshelo karolong ea volumeMounts ea litlhaloso. Sebaka sa mountPath ke / liphiri, kahoo Kubernetes e tla etsa faele e le 'ngoe ka har'a foldareng ena bakeng sa senotlolo se seng le se seng / boleng bo hlalositsoeng ho Ntho ea Lekunutu.

Mohlaleng oa rona, re hlalositse para e le 'ngoe feela ea bohlokoa e bitsoang magicWord, kahoo ponts'o e tla etsa faele e le 'ngoe feela ea ho bala /secrets/magicWord e nang le data e hlokolosi ka har'a setshelo.

Haeba u sebelisa pontšo ena ka tsela e ts'oanang le mohlala o fetileng, u lokela ho fumana sephetho se tšoanang:

The magic word is "xyzzy"

Ho Bala Lintho tsa Lekunutu

Karolong e fetileng, re sebelisitse taelo e hlalosang ea kubectl ho hlahisa litaba tsa ConfigMap. Na ho ka etsoa se tšoanang ka Lekunutu?

kubectl describe secret/demo-secret
Name:          demo-secret

Namespace:      default
Labels:             <none>
Annotations:
Type:               Opaque

Data
====
magicWord: 5   bytes

Ka kopo hlokomela hore data ka boeona ha e hlahe. Lintho tsa lekunutu ho Kubernetes ke tsa mofuta oa Opaque, ho bolelang hore litaba tsa tsona ha li bontšoe ho kubectl e hlalosa tlhahiso, lipehelo tsa log, kapa terminal, e etsang hore ho se khonehe ho senola tlhahisoleseling e tebileng ka phoso.

Ho sheba mofuta oa YAML o kentsoeng oa data ea bohlokoa, sebelisa taelo ea fumana ea kubectl:

kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
   magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque

motheo64

EHl6enk= ke eng, e fapaneng ka ho felletseng le boleng ba rona ba mantlha? Ha e le hantle sena ke ntho ea Lekunutu, e emeloang ho base64 encoding. Base64 ke leano la ho kenyelletsa data ea binary e sa sebetseng joalo ka letoto la litlhaku.

Hobane tlhahisoleseling e bobebe e kanna ea ba ea binary mme e se tlhahiso (joalo ka ha ho le joalo ka senotlolo sa encryption sa TLS), Lintho tsa lekunutu li lula li bolokiloe ka sebopeho sa base64.

Mongolo beHl6enk= ke mofuta oa base64 o kentsoeng oa lentsoe la rona la lekunutu xyzzy. U ka netefatsa sena ka ho sebelisa base64 -decode taelo ho terminal:

echo "eHl6enk=" | base64 --decode
xyzzy

Kahoo, ha Kubernetes e u sireletsa hore u se ke ua ntša ka phoso data ea bohlokoa ho li-terminal kapa lifaele tsa log, haeba u balile tumello ea lintho tsa Lekunutu sebakeng se itseng sa mabitso, data eo e ka ba base64ed mme ka mor'a moo ea hlalosoa.

Haeba o hloka ho kenyelletsa mongolo oa base64 (mohlala, ho o beha Lekunutung), sebelisa taelo ea base64 ntle le likhang:

echo xyzzy | base64
eHl6enkK

Ho fihlella Lintho tsa Lekunutu

Ke mang ea ka balang le ho hlophisa Lintho tsa Lekunutu? Sena se khethoa ke RBAC, mokhoa oa ho laola phihlello (re tla e tšohla ka botlalo karolong e reng "Selelekela sa Taolo ea Phihlello e Thehiloeng" leqepheng la 258). Haeba u ntse u tsamaisa sehlopha se se nang RBAC kapa se sa lumelloa, lintho tsohle tsa hau tsa Lekunutu li fumaneha ho basebelisi leha e le bafe le lijana (re tla hlalosa hamorao hore ha ua lokela ho ba le lihlopha tsa tlhahiso ntle le RBAC).

Passive data encryption

Ho thoe'ng ka ba nang le phihlello ea database ea etcd moo Kubernetes e bolokang tlhahisoleseling eohle ea eona? Na ba ka bala lintlha tsa bohlokoa ntle le tumello ea ho bala lintho tsa Lekunutu ka API?

Ho tloha ka mofuta oa 1.7, Kubernetes e ts'ehetsa encryption ea data e sa sebetseng. Sena se bolela hore tlhahisoleseling e hlokolosi ka har'a etcd e bolokoa e patiloe ho disk mme e ke ke ea baloa le ke ba nang le phihlello e tobileng ho database. Ho e hlakola, o hloka senotlolo seo ho nang le seva sa Kubernetes API feela. Sehlopheng se hlophisitsoeng hantle, encryption e tlameha ho etsoa.

U ka sheba hore na encryption e sa sebetseng e sebetsa sehlopheng sa hau ka tsela ena:

kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
        --experimental-encryption-provider-config=...

Haeba u sa bone folakha ea liteko-encryption-provider-config, passive encryption ha e sebetse. Ha u sebelisa Google Kubernetes Engine kapa litšebeletso tse ling tsa tsamaiso ea Kubernetes, data ea hau e patiloe ka mokhoa o fapaneng, kahoo folakha e ke ke ea ba teng. Sheba le morekisi oa hau oa Kubernetes ho bona hore na litaba tsa etcd li patiloe.

Ho boloka lintlha tsa lekunutu

Ho na le lisebelisoa tse ling tsa Kubernetes tse sa lokelang ho tlosoa sehlopheng, joalo ka lintho tsa Lekunutu tse hlokolosi haholo. U ka sireletsa sesebelisoa hore se se hlakole u sebelisa litlatsetso tse fanoeng ke molaoli oa Helm:

kind: Secret
metadata:
    annotations:
        "helm.sh/resource-policy": keep

Maano a Tsamaiso ea Ntho ea Sephiri

Mohlala o tsoang karolong e fetileng, data e hlokolosi e sirelelitsoe ho tsoa phihlellong e sa lumelloeng hang kamora ho bolokoa sehlopheng. Empa lifaeleng tse hlakileng li ne li bolokiloe e le mongolo o hlakileng.

Ha ua lokela ho beha litaba tsa lekunutu ho lifaele tse taolong ea mofuta. U ka laola le ho boloka tlhahisoleseling ee joang ka mokhoa o sireletsehileng pele u e sebelisa sehlopheng sa hau sa Kubernetes?

U ka khetha lisebelisoa kapa maqheka afe kapa afe a ho sebetsana le lintlha tsa bohlokoa lits'ebetsong tsa hau, empa u ntse u tla hloka ho araba bonyane lipotso tse latelang.

  • Lintlha tsa bohlokoa li lokela ho bolokoa hokae e le hore li ka fumaneha habonolo?
  • U ka etsa joang hore data ea bohlokoa e fihlellehe lits'ebetsong tsa hau tse sebetsang?
  • Ho lokela ho etsahala'ng ka lits'ebetso tsa hau ha u khutlisa kapa u hlophisa lintlha tsa bohlokoa?

Mabapi le bangoli

John Arundel ke moeletsi ea nang le boiphihlelo ba lilemo tse 30 indastering ea likhomphutha. O ngotse libuka tse 'maloa' me o sebetsa le lik'hamphani tse ngata tse tsoang linaheng tse fapaneng, a li eletsa ka mekhoa ea motheo ea maru-native le Kubernetes. Ka nako ea hae ea phomolo, o rata ho palama maqhubu, ke sethunya se hloahloa sa sethunya, 'me o bapala piano joalo ka motho ea sa rutehang. O lula ntlong ea litšōmo Cornwall, Engelane.

Justin Domingus - moenjiniere oa tsamaiso ea tsamaiso ea sebetsang tikolohong ea DevOps e nang le Kubernetes le mahlale a maru. O thabela ho qeta nako a le ka ntle, a noa kofi, a khoahlapisa le ho lula k’homphieutheng. O lula Seattle, Washington, le katse e ntle le mosali ea khabane le motsoalle oa hlooho ea khomo, Adrienne.

» Lintlha tse ling mabapi le buka li ka fumanoa ho webosaete ea mohatisi
» Lethathamo la tse kahare
» Sengoloa

Bakeng sa Khabrozhiteley 25% theolelo o sebelisa setlankane - Kubernetes

Kamora ho lefa mofuta oa pampiri oa buka, buka ea elektroniki e tla romelloa ka e-mail.

Source: www.habr.com

Eketsa ka tlhaloso