Pukapuka "Kubernetes mo DevOps"

Pukapuka "Kubernetes mo DevOps" Kia ora, e nga kainoho o Khabro! Ko Kubernetes tetahi o nga mea matua o te rauwiringa kaiao kapua hou. Ko tenei hangarau e whakarato ana i te pono, i te tauine me te kaha ki te mariko ipu. Ka korero a John Arundel raua ko Justin Domingus mo te rauwiringa kaiao o Kubernetes me te whakaatu i nga otinga kua whakamatauria ki nga raru o ia ra. Ma te hikoi, ka hanga e koe taau ake tono-kapua me te hanga i nga hanganga hei tautoko, te whakarite i tetahi taiao whanaketanga me te paipa tukunga tonu hei awhina i a koe e mahi ana i o tono ka whai ake.

• Me timata ki nga ipu me nga Kubernetes mai i nga mea timatanga: kaore he wheako motuhake e hiahiatia hei ako i te kaupapa. • Whakahaerehia au ake tautau, whiriwhiria ranei he ratonga Kubernetes whakahaere mai i Amazon, Google, me etahi atu. • Whakanuia nga tautau i runga i te utu, te mahi, te kaha, te kaha me te tauineine. • Akohia nga taputapu pai ki te whakawhanake, ki te whakamatautau, ki te tuku i o tono. • Te whakamahi i nga tikanga ahumahi o naianei hei whakarite i te haumaru me te whakahaere. • Whakatinana i nga maataapono a DevOps puta noa i to kamupene kia ngawari ake, kia tere, kia pai hoki te mahi a nga roopu whanaketanga.

Mo wai te pukapuka?

He mea tino tika te pukapuka mo nga kaimahi o nga tari tari e kawe ana mo nga kaitoro, tono me nga ratonga, tae atu ki nga kaiwhakawhanake e whai waahi ana ki te hanga ratonga kapua hou, ki te neke ranei i nga tono o mua ki Kubernetes me te kapua. Kaua e manukanuka, kaore koe e mohio ki te mahi me nga Kubernetes me nga ipu - ma matou koe e ako ki nga mea katoa.

Ka kitea ano e nga kaiwhakamahi mohio Kubernetes te nui o te uara, me te hohonutanga o nga korero mo nga kaupapa penei i te RBAC, te tuku haere tonu, te whakahaere raraunga tairongo, me te maataki. Ko te tumanako ka mau i nga wharangi o te pukapuka tetahi mea whakamere ki a koe, ahakoa o o pukenga me o wheako.

He aha nga patai ka whakautuhia e te pukapuka?

I a matou e whakamahere ana, e tuhi ana i te pukapuka, i korero matou ki nga hangarau kapua me nga Kubernetes me nga rau o nga tangata, ka korero ki nga kaiarahi ahumahi me nga tohunga me nga tauhou. Kei raro nei nga patai kua tohua e hiahia ana ratou kia whakautua i tenei whakaputanga.

  • "Kei te pirangi ahau ki te aha koe e whakapau wa ki tenei hangarau. He aha nga raru ka awhina i ahau me taku roopu ki te whakaoti?”
  • "Ko nga Kubernetes he ahua pai, engari he tino nui te arai ki te whakauru. Ko te whakarite i tetahi tauira ngawari ehara i te mea uaua, engari he uaua te whakahaere me te patuiro. Kei te pirangi matou ki te tiki tohutohu pono mo te whakahaere a nga tangata i nga tautau Kubernetes i roto i te ao tuuturu me nga raru ka pa ki a maatau."
  • "Ka awhina nga tohutohu kaupapa. He maha rawa nga whiringa ka taea e te punaha rauropi Kubernetes ki nga kapa hou. Ina he maha nga huarahi hei mahi i taua mea, me pehea koe e mohio ai ko wai te mea pai? Me pehea te whiriwhiri?

A pea ko te mea tino nui o nga patai katoa:

  • "Me pehea taku whakamahi i nga Kubernetes me te kore e whakararu i taku kamupene?"

Tuhinga. Whirihoranga me nga mea ngaro

Ko te kaha ki te wehe i te arorau o te tono Kubernetes mai i tana whirihoranga (ara, mai i nga uara me nga tautuhinga ka huri pea i te waa) he tino whai hua. Kei roto i nga uara whirihoranga nga tautuhinga taiao-motuhake, nga wahitau DNS ratonga tuatoru, me nga tohu motuhēhēnga.

Ae ra, ko enei katoa ka taea te whakauru tika ki roto i te waehere, engari ko tenei huarahi kaore i te tino ngawari. Hei tauira, ko te whakarereke i te uara whirihoranga ka hiahia koe ki te hanga me te tuku ano i to waehere. Ko te otinga pai ake ko te wehe i te whirihoranga mai i te waehere me te panui mai i te konae, i nga taurangi taiao ranei.

Ka whakaratohia e Kubernetes etahi huarahi rereke hei whakahaere i te whirihoranga. Tuatahi, ka taea e koe te tuku uara ki te tono na roto i nga taurangi taiao kua tohua i roto i te tohu takai takai (tirohia te "Taahuri Taiao" kei te wharangi 192). Tuarua, ka taea te penapena i nga raraunga whirihoranga ki Kubernetes ma te whakamahi i te ConfigMap me nga mea ngaro.

I roto i tenei upoko, ka tirotirohia e matou enei taonga me te titiro ki etahi huarahi whaitake ki te whakahaere i te whirihoranga me nga raraunga tairongo ma te whakamahi i te tono demo.

Te whakahōu i nga anga pod ka huri te whirihoranga

Whakaarohia kei a koe he tukunga i roto i to huinga ka hiahia koe ki te whakarereke i etahi uara ki tana ConfigMap. Mēnā ka whakamahi koe i te tūtohi Helm (tirohia te “Helm: Kaiwhakahaere mōkī mō Kubernetes” i te whārangi 102), ka taea e koe te kite aunoa i te huringa whirihoranga me te uta ano i o anga poroporo i roto i te mahi tika kotahi. Tāpirihia te tuhipoka e whai ake nei ki to whakaritenga whakatakotoranga:

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

Inaianei kei roto i te tauira whakatakotoranga he nama arowhai o nga tawhā whirihoranga: ki te whakarereketia nga tawhā, ka whakahouhia te moni. Ki te whakahaere koe i te whakamohoa helm, ka kitea e Helm kua huri te whakatakotoranga whakatakotoranga ka whakaara ano i nga anga poroporo katoa.

Raraunga tairongo i Kubernetes

Kua mohio ano matou ko te ahanoa ConfigMap he tikanga ngawari mo te penapena me te uru atu ki nga raraunga whirihoranga i roto i te kohinga. Heoi, ko te nuinga o nga tono he korero tairongo me te tairongo, penei i nga kupuhipa me nga taviri API. Ka taea hoki te penapena ki te ConfigMap, engari kaore tenei otinga i te pai.

Engari, ka tukuna e Kubernetes tetahi momo ahanoa motuhake i hangaia hei rokiroki i nga raraunga tairongo: Secret. Panuku, me titiro tatou ki tetahi tauira mo te whakamahi i tenei mea i roto i ta maatau tono demo.

Hei timata, tirohia te whakaaturanga Kubernetes mo te mea ngaro (tirohia hello-secret-env/k8s/secret.yaml):

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

I roto i tenei tauira, ko xyzzy te kī tūmataiti magicWord (en.wikipedia.org/wiki/Xyzzy_(computing)). Ko te kupu xyzzy i te nuinga o te waa ka tino whai hua ki te ao rorohiko. He rite ki te ConfigMap, ka taea e koe te penapena i nga taviri maha me nga uara ki roto i tetahi mea ngaro. I konei, mo te ngawari, ka whakamahia e matou he takirua uara-matua anake.

Te whakamahi i nga mea ngaro hei Taurangi Taiao

Pērā i te ConfigMap, ka waatea te mea ngaro ki roto i te ipu hei taurangi taiao, hei konae ranei kei runga i tana kōpae. I roto i te tauira e whai ake nei, ka tautapa tatou i tetahi taurangi taiao ki te uara mai i te Secret:

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

Whakahaerehia te whakahau e whai ake nei i roto i te putunga demo hei whakamahi i nga whakaaturanga:

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

Pērā i mua, tukuhia te tauranga rohe ki te horahanga kia kite i te hua i roto i to kaitirotiro:

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

I te whakatuwheratanga o tetahi wahitau localhost:9999/ me kite koe i nga mea e whai ake nei:

The magic word is "xyzzy"

Te tuhi i nga mea ngaro ki nga konae

I tenei tauira, ka whakapirihia te mea ngaro ki te ipu hei konae. Ko te waehere kei roto i te kōpaki hello-secret-file o te putunga demo.

Hei hono i te mea ngaro hei konae, ka whakamahia e matou te whakatakotoranga e whai ake nei:

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

Ka rite ki te waahanga "Te hanga i nga konae whirihoranga mai i nga mea ConfigMap" kei te p. 240, ka hangahia e matou he rōrahi (i roto i tenei keehi demo-huna-rōrahi) ka whakairihia ki te ipu kei te waahanga VolumeMounts o te whakaritenga. Ko te mara mountPath he /huna, no reira ka hanga e Kubernetes tetahi konae ki tenei kōpaki mo ia takirua matua/uara kua tautuhia ki te ahanoa ngaro.

I roto i ta maatau tauira, i tautuhia e matou he takirua uara-matua anake e kiia ana ko magicWord, na te whakaaturanga ka hanga he konae panui-anake / ngaro / magicWord me nga raraunga tairongo i roto i te ipu.

Mena ka whakamahi koe i tenei whakaaturanga kia rite ki te tauira o mua, me whiwhi koe i te hua rite:

The magic word is "xyzzy"

Te panui i nga mea ngaro

I te waahanga o mua, i whakamahia e matou te kubectl describe command hei whakaatu i nga ihirangi o te ConfigMap. Ka taea ano te mahi ki a Secret?

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

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

Data
====
magicWord: 5   bytes

Kia mahara ko nga raraunga ake kaore i te whakaatuhia. Ko nga mea ngaro i Kubernetes he momo Puataata, ko te tikanga kaore i te whakaatuhia o ratou ihirangi ki te kubectl whakaahua i te whakaputanga, nga urunga takiuru, te tauranga ranei, na reira e kore e taea te whakaatu ohorere i nga korero tairongo.

Hei tiro i tetahi putanga YAML kua whakawaeherehia o nga raraunga tairongo, whakamahia te tono kubectl get:

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

base64

He aha te eHl6enk=, he rereke rawa atu i to tatou uara taketake? He mea ngaro tenei, e whakaatuhia ana i te whakawaehere base64. Ko te Base64 he kaupapa mo te whakawaehere i nga raraunga rua-rua hei aho o nga tohu.

Na te mea ko nga korero tairongo he ruarua noa iho, ehara i te putanga (penei me te ki whakamunatanga TLS), ka penapena nga mea ngaro ki te whakatakotoranga base64.

Ko te kuputuhi beHl6enk= te putanga whakawaehere turanga64 o ta tatou kupu huna xyzzy. Ka taea e koe te manatoko i tenei ma te whakahaere i te tono base64 —decode i te tauranga:

echo "eHl6enk=" | base64 --decode
xyzzy

Na, i te wa e tiaki ana a Kubernetes i a koe mai i te whakaputa ohorere i nga raraunga tairongo i roto i te tauranga, i nga konae rangitaki ranei, mena kua panui koe i nga whakaaetanga mo nga mea ngaro i roto i tetahi mokowāingoa motuhake, ka taea te whakaemi64 taua raraunga ka wetewete i muri mai.

Mena ka hiahia koe ki te whakawaehere i etahi tuhinga (hei tauira, ki te whakauru ki roto i te mea ngaro), whakamahia te tono base64 kaore he tautohetohe:

echo xyzzy | base64
eHl6enkK

Te uru atu ki nga mea ngaro

Ko wai ka taea te panui me te whakatika i nga mea ngaro? Ka whakatauhia tenei e te RBAC, he tikanga whakahaere uru (ka matapakihia e matou i roto i te waahanga iti "Te Whakataki ki te Mana Uru-a-Tuhinga" kei te wharangi 258). Mēnā kei te whakahaere koe i tētahi kāhui karekau he RBAC, karekau ranei i te whakahohea, kei te waatea katoa o mea ngaro ki nga kaiwhakamahi me nga ipu (ka whakamarama matou i muri mai me kore koe e whai tautau whakangao me te kore RBAC).

Whakamunatanga raraunga hāngū

Me pehea te hunga e whai waahi ana ki te paataka raraunga etcd kei reira a Kubernetes e rongoa ai ona korero katoa? Ka taea e raatau te panui i nga raraunga tairongo me te kore e whakaae ki te panui i nga mea ngaro ma te API?

Mai i te putanga 1.7, kei te tautoko a Kubernetes i te whakamunatanga raraunga hangū. Ko te tikanga ko nga korero tairongo kei roto etcd kua whakamunatia ki runga i te kōpae, a kaore e taea te panui ahakoa te hunga e uru tika ana ki te paataka raraunga. Hei wetewete i te reira, me hiahia koe ki te kii kei te tūmau API Kubernetes anake. I roto i te kahui whirihora tika, me whakahohe te whakamunatanga hāngū.

Ka taea e koe te tirotiro mena ka mahi te whakamunatanga hāngū i roto i to kāhui penei:

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

Ki te kore koe e kite i te haki whakamuna-whakamuna-kaiwhakarato-whirihora, karekau e taea te whakamunatanga hāngū. Ina whakamahi i a Google Kubernetes Engine, i etahi atu ratonga whakahaere Kubernetes, ka whakamunatia to raraunga ma te whakamahi i tetahi tikanga rereke, no reira karekau te haki. Tirohia me to kaihoko Kubernetes kia kite mena kei te whakamunatia nga ihirangi etcd.

Te rokiroki raraunga matatapu

Arā etahi rauemi Kubernetes kia kaua rawa e tangohia mai i te roopu, penei i nga mea ngaro tino tairongo. Ka taea e koe te tiaki i tetahi rauemi kei mukua ma te whakamahi i te tuhipoka i homai e te kaiwhakahaere Helm:

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

Nga Rautaki Whakahaere Mea ngaro

I roto i te tauira mai i te waahanga o mua, i parea nga raraunga tairongo mai i te uru kore mana i muri tonu i te penapena i roto i te tautau. Engari i roto i nga konae whakaatu i penapenahia hei tuhinga maamaa.

Kaua rawa e waiho nga korero muna ki roto i nga konae kei te mana putanga. Me pehea e taea ai e koe te whakahaere me te penapena i enei korero i mua i te tono ki to roopu Kubernetes?

Ka taea e koe te whiriwhiri i etahi taputapu, rautaki ranei mo te whakahaere i nga raraunga tairongo i roto i o tono, engari me whakautu tonu koe i nga patai e whai ake nei.

  • Me penapena nga raraunga tairongo ki hea kia tino watea ai?
  • Me pehea e uru ai nga raraunga tairongo ki o tono hohe?
  • Me aha ki o tono ina whakakapi koe, whakatika raraunga tairongo ranei?

Mo nga kaituhi

John Arundel he kaitohutohu me nga tau 30 o te wheako i roto i te ahumahi rorohiko. He maha nga pukapuka kua tuhia e ia me te mahi tahi me nga kamupene maha mai i nga whenua rereke, me te tohutohu i a raatau mo nga hanganga kapua me nga Kubernetes. I a ia e waatea ana, he pai ki a ia te ngaru, he pai ki te kaikopere pitara, me te purei piana hei tangata runaruna. E noho ana i tetahi whare pakiwaitara i Cornwall, Ingarangi.

Justin Domingus — he miihini whakahaere punaha e mahi ana i tetahi taiao DevOps me nga Kubernetes me nga hangarau kapua. He pai ki a ia te noho ki waho, ki te inu kawhe, ki te paopao, ki te noho ki te rorohiko. E noho ana i Seattle, Washington, me te ngeru ataahua me te wahine tino ataahua me te hoa pai, ko Adrienne.

» Ka kitea etahi atu korero mo te pukapuka i paetukutuku a te kaiwhakaputa
» Ripanga o nga ihirangi
» Panui

Mo Khabrozhiteley 25% hekenga ma te whakamahi coupon - Kubernetes

Ina utua te putanga pepa o te pukapuka, ka tukuna he pukapuka hiko ma te imeera.

Source: will.com

Tāpiri i te kōrero