E puke "Kubernetes no DevOps"

E puke "Kubernetes no DevOps" Aloha mai e nā kamaʻāina ʻo Khabro! ʻO Kubernetes kekahi o nā mea nui o ke kaiaola ao o kēia wā. Hāʻawi kēia ʻenehana i ka hilinaʻi, scalability a me ka resilience i ka virtualization ipu. Ua kamaʻilio ʻo John Arundel lāua ʻo Justin Domingus e pili ana i ka kaiaola Kubernetes a hoʻolauna i nā hoʻonā i hōʻoia ʻia i nā pilikia o kēlā me kēia lā. I kēlā me kēia ʻanuʻu, e kūkulu ʻoe i kāu noi ʻōiwi ponoʻī a hoʻokumu i ka ʻōnaehana e kākoʻo ai, hoʻonohonoho i kahi kaiapuni hoʻomohala a me kahi pipeline hoʻomau mau e kōkua iā ʻoe i kāu hana ʻana i kāu mau noi e hiki mai ana.

• E hoʻomaka me nā ipu a me nā Kubernetes mai nā kumu: ʻaʻohe ʻike kūikawā e pono ai ke aʻo i ke kumuhana. • E holo i kāu mau puʻupuʻu ponoʻī a i ʻole e koho i kahi lawelawe Kubernetes i mālama ʻia mai Amazon, Google, a pēlā aku. • Hoʻonui i nā pūʻulu e pili ana i ke kumukūʻai, ka hana, ke kūpaʻa, ka mana a me ka scalability. • E aʻo i nā mea hana maikaʻi loa e hoʻomohala, hoʻāʻo, a kau i kāu mau noi. • Hoʻohana i nā hana ʻoihana o kēia manawa e hōʻoia i ka palekana a me ka hoʻomalu. • E hoʻokō i nā kumumanaʻo DevOps ma kāu ʻoihana i hiki i nā hui hoʻomohala ke hana maʻalahi, wikiwiki, a maikaʻi hoʻi.

No wai ka puke?

Pili loa ka puke i nā limahana o nā keʻena hoʻokele kuleana no nā kikowaena, nā noi a me nā lawelawe, a me nā mea hoʻomohala e pili ana i ke kūkulu ʻana i nā lawelawe kapuaʻi hou a i ʻole ka neʻe ʻana i nā noi i loaʻa iā Kubernetes a me ke ao. Mai hopohopo, ʻaʻole pono ʻoe e ʻike pehea e hana ai me nā Kubernetes a i ʻole nā ​​pahu pahu - e aʻo mākou iā ʻoe i nā mea āpau.

E loaʻa pū i nā mea hoʻohana Kubernetes ʻike i ka waiwai nui, me ka uhi hohonu o nā kumuhana e like me RBAC, hoʻomau mau ʻia, hoʻokele ʻikepili koʻikoʻi, a me ka nānā ʻana. Manaʻolana mākou e loaʻa i nā ʻaoʻao o ka puke kahi mea hoihoi iā ʻoe, me ka nānā ʻole i kāu mau akamai a me kou ʻike.

He aha nā nīnau a ka puke e pane ai?

I ka hoʻolālā ʻana a me ke kākau ʻana i ka puke, ua kūkākūkā mākou i ka ʻenehana kapua a me nā Kubernetes me nā haneli o ka poʻe, e kamaʻilio pū ana me nā alakaʻi ʻoihana a me nā poʻe akamai a me nā poʻe novice piha. Aia ma lalo nā nīnau i koho ʻia a lākou e ʻike ai e pane ʻia ma kēia puke.

  • "Makemake wau i ke kumu e hoʻolilo ai ʻoe i ka manawa ma kēia ʻenehana. He aha nā pilikia e kōkua iaʻu a me kaʻu hui?
  • "He mea hoihoi paha ʻo Kubernetes, akā he pale kiʻekiʻe loa i ke komo ʻana. ʻAʻole paʻakikī ka hoʻomākaukau ʻana i kahi laʻana maʻalahi, akā ʻoi aku ka paʻakikī o ka hoʻokele a me ka debugging. Makemake mākou e loaʻa i nā ʻōlelo aʻo hilinaʻi e pili ana i ka hoʻokele ʻana o nā kānaka i nā pūʻulu Kubernetes i ka honua maoli a me nā pilikia a mākou e hālāwai ai. "
  • "He mea kōkua ka ʻōlelo aʻoaʻo kumuhana. Hāʻawi ke kaiaola Kubernetes i nā hui hou i nā koho he nui loa e koho ai. Inā nui nā ala e hana ai i ka mea like, pehea ʻoe e ʻike ai i ka mea ʻoi aku ka maikaʻi? Pehea e hana ai i kahi koho?

A ʻo ka nīnau nui paha o nā nīnau a pau.

  • "Pehea e hiki ai iaʻu ke hoʻohana i nā Kubernetes me ka hoʻopilikia ʻole i kaʻu hui?"

Wehewehe. Hoʻonohonoho a me nā mea huna

ʻO ka hiki ke hoʻokaʻawale i ka loiloi o kahi noi Kubernetes mai kāna hoʻonohonoho ʻana (ʻo ia hoʻi, mai nā waiwai a i ʻole nā ​​hoʻonohonoho e loli paha i ka manawa) he mea pono loa. Hoʻokomo pinepine ʻia nā waiwai hoʻonohonoho i nā hoʻonohonoho pili kaiapuni, nā ʻaoʻao DNS lawelawe ʻekolu, a me nā hōʻoia hōʻoia.

ʻOiaʻiʻo, hiki ke hoʻokomo pololei i kēia mau mea i ke code, akā ʻaʻole hiki ke maʻalahi kēia ala. No ka laʻana, ʻo ka hoʻololi ʻana i kahi waiwai hoʻonohonoho e koi iā ʻoe e kūkulu a kau hou i kāu code. ʻO kahi ʻoi aku ka maikaʻi o ka hoʻokaʻawale ʻana i ka hoʻonohonoho ʻana mai ke code a heluhelu iā ia mai kahi faila a i ʻole nā ​​mea hoʻololi kaiapuni.

Hāʻawi ʻo Kubernetes i nā ala like ʻole e hoʻokele i ka hoʻonohonoho. ʻO ka mea mua, hiki iā ʻoe ke hāʻawi i nā waiwai i ka noi ma o nā ʻano hoʻololi kaiapuni i hōʻike ʻia ma ka kikoʻī o ka pod wrapper (e ʻike i "Nā Hoʻololi Kaiapuni" ma ka ʻaoʻao 192). ʻO ka lua, hiki ke mālama pono ʻia ka ʻikepili hoʻonohonoho i nā Kubernetes me ka hoʻohana ʻana i ka ConfigMap a me nā mea huna.

Ma kēia mokuna, ʻimi mākou i kēia mau mea i nā kikoʻī a nānā i kekahi mau ala kūpono i ka hoʻokele ʻana i ka hoʻonohonoho a me ka ʻikepili koʻikoʻi me ka hoʻohana ʻana i kahi noi demo.

Hoʻohou i nā pūpū pod ke loli ka hoʻonohonoho

E noʻonoʻo ʻoe i kahi hoʻolaha i kāu hui a makemake ʻoe e hoʻololi i kekahi mau waiwai i kāna ConfigMap. Inā ʻoe e hoʻohana i ka pakuhi Helm (e nānā i ka “Helm: Package Manager for Kubernetes” ma ka ʻaoʻao 102), hiki iā ʻoe ke ʻimi ʻakomi i kahi hoʻololi hoʻonohonoho a hoʻouka hou i kāu mau pūpū pod i hoʻokahi hoʻopunipuni. E hoʻohui i kēia hōʻike i kāu kikoʻī hoʻolaha:

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

Aia i loko o ka la'ana ho'olālā i kēia manawa ka helu helu o nā palena ho'onohonoho: inā ho'ololi 'ia nā palena, e hō'ano hou 'ia ka huina. Inā holo ʻoe i ka hoʻomaikaʻi ʻana i ka helm, e ʻike ʻo Helm ua loli ka kikoʻī hoʻolaha a hoʻomaka hou i nā pūpū pod āpau.

ʻIke koʻikoʻi ma Kubernetes

Ua ʻike mua mākou ua hāʻawi ka mea ConfigMap i kahi hana maʻalahi no ka mālama ʻana a me ke komo ʻana i ka ʻikepili hoʻonohonoho i loko o kahi pūpū. Eia nō naʻe, ʻo ka hapa nui o nā noi he ʻike koʻikoʻi a koʻikoʻi, e like me nā ʻōlelo huna a i ʻole nā ​​kī API. Hiki ke mālama ʻia ma ConfigMap, akā ʻaʻole kūpono kēia hoʻonā.

Akā, hāʻawi ʻo Kubernetes i kahi ʻano mea kūikawā i hoʻolālā ʻia e mālama i ka ʻikepili koʻikoʻi: Secret. A laila, e nānā kākou i kahi laʻana o ka hoʻohana ʻana i kēia mea i kā mākou noi demo.

No ka hoʻomaka ʻana, e nānā i ka hōʻike Kubernetes no ka mea huna (e nānā hello-secret-env/k8s/secret.yaml):

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

Ma kēia laʻana, ʻo xyzzy ke kī pilikino magicWord (en.wikipedia.org/wiki/Xyzzy_(computing)). He mea maʻamau ka huaʻōlelo xyzzy i ka honua o nā kamepiula. E like me ConfigMap, hiki iā ʻoe ke mālama i nā kī he nui a me nā waiwai i kahi mea huna. Maʻaneʻi, no ka maʻalahi, hoʻohana mākou i hoʻokahi paʻa waiwai kī.

Ke hoʻohana nei i nā mea huna e like me nā ʻano hoʻololi kaiapuni

E like me ConfigMap, hiki ke loaʻa ka mea huna i loko o ka pahu e like me nā ʻano hoʻololi kaiapuni a i ʻole he faila ma kāna disk. Ma kēia hiʻohiʻona, e hāʻawi mākou i kahi hoʻololi kaiapuni i ka waiwai mai Secret:

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

E holo i kēia kauoha ma ka waihona demo e hoʻohana i nā hōʻike:

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

E like me ka wā ma mua, e hoʻouna i ke awa kūloko i ka hoʻolālā e ʻike i ka hopena i kāu polokalamu kele pūnaewele:

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

I ka wehe ʻana i kahi helu wahi localhost:9999/ pono ʻoe e ʻike i kēia:

The magic word is "xyzzy"

Ke kākau ʻana i nā mea huna i nā faila

Ma kēia laʻana, e hoʻopili mākou i ka mea huna i ka pahu ma ke ʻano he faila. Aia ke code ma ka waihona hello-secret-file o ka waihona demo.

No ka hoʻopili ʻana i ka Secret ma ke ʻano he faila, e hoʻohana mākou i kēia hoʻolālā:

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

E like me ka ʻāpana "Ke hana ʻana i nā faila hoʻonohonoho mai nā mea ConfigMap" ma ka p. 240, hana mākou i kahi leo (ma kēia hihia demo-secret-volume) a kau iā ia i ka pahu i ka ʻāpana volumeMounts o ka kikoʻī. ʻO ke kahua mountPath he / huna, no laila e hana ʻo Kubernetes i hoʻokahi faila i loko o kēia waihona no kēlā me kēia pālua kī/waiwai i wehewehe ʻia ma ka mea huna.

I kā mākou laʻana, ua wehewehe mākou i hoʻokahi paʻa waiwai nui i kapa ʻia ʻo magicWord, no laila e hana ka mea hōʻike i kahi faila heluhelu-wale wale nō / mea huna / magicWord me ka ʻikepili koʻikoʻi i loko o ka ipu.

Inā hoʻohana ʻoe i kēia hōʻike ma ke ʻano like me ka laʻana mua, pono ʻoe e loaʻa ka hopena like:

The magic word is "xyzzy"

Heluhelu i na mea huna

Ma ka ʻāpana mua, ua hoʻohana mākou i ke kauoha kubectl wehewehe e hōʻike i nā ʻike o kahi ConfigMap. Hiki ke hana like me Secret?

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

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

Data
====
magicWord: 5   bytes

E ʻoluʻolu, ʻaʻole i hōʻike ʻia ka ʻikepili ponoʻī. ʻO nā mea huna ma Kubernetes he ʻano Opaque, ʻo ia hoʻi, ʻaʻole i hōʻike ʻia ko lākou ʻike ma ka kubectl wehewehe i ka hoʻopuka, nā hoʻokomo log, a i ʻole ka pahu, ʻaʻole hiki ke hōʻike i ka ʻike koʻikoʻi.

No ka nānā ʻana i kahi mana YAML i hoʻopili ʻia o ka ʻikepili koʻikoʻi, e hoʻohana i ke kauoha kubectl get:

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

base64

He aha ka eHl6enk=, ʻokoʻa loa mai kā mākou waiwai kumu? He mea huna maoli kēia, i hōʻike ʻia ma base64 encoding. ʻO Base64 kahi papahana no ka hoʻopili ʻana i ka ʻikepili binary arbitrary ma ke ʻano he kaula o nā huaʻōlelo.

No ka mea, he binary paha ka ʻike koʻikoʻi a ʻaʻole hoʻopuka (e like me ke kī hoʻopunipuni TLS), mālama mau ʻia nā mea huna ma ka ʻano base64.

ʻO ka kikokikona beHl6enk= ʻo ia ka base64 i hoʻopili ʻia o kā mākou huaʻōlelo huna xyzzy. Hiki iā ʻoe ke hōʻoia i kēia ma ka holo ʻana i ke kauoha base64 —decode i ka pahu:

echo "eHl6enk=" | base64 --decode
xyzzy

No laila, ʻoiai ʻo Kubernetes e pale aku iā ʻoe mai ka hoʻopuka ʻana i ka ʻikepili koʻikoʻi ma ka pahu a i ʻole nā ​​faila log, inā ua heluhelu ʻoe i nā ʻae i nā mea huna ma kahi inoa kikoʻī, hiki ke hoʻopaʻa ʻia kēlā ʻikepili a hoʻololi ʻia.

Inā pono ʻoe e hoʻopili i ka base64 i kekahi mau kikokikona (e like me ka hoʻokomo ʻana i kahi huna), e hoʻohana i ke kauoha base64 me ka ʻole o nā hoʻopaʻapaʻa:

echo xyzzy | base64
eHl6enkK

Ke kiʻi ʻana i nā mea huna

ʻO wai ka mea hiki ke heluhelu a hoʻoponopono i nā mea huna? Hoʻoholo ʻia kēia e RBAC, kahi hana hoʻokele hoʻokele (e kūkākūkā mākou i nā kikoʻī ma ka ʻāpana "Introduction to Role-Based Access Control" ma ka ʻaoʻao 258). Inā ʻoe e holo ana i kahi pūʻulu ʻaʻohe RBAC a ʻaʻole hiki ke hoʻohana ʻia, loaʻa kāu mau mea huna a pau i nā mea hoʻohana a me nā ipu (e wehewehe mākou ma hope ʻaʻole pono ʻoe e loaʻa nā pūʻulu hana me ka ʻole o RBAC).

Hoʻopili ʻikepili passive

Pehea ka poʻe i loaʻa i ka waihona etcd kahi e mālama ai ʻo Kubernetes i kāna ʻike āpau? Hiki iā lākou ke heluhelu i ka ʻikepili koʻikoʻi me ka ʻole o ka ʻae ʻia e heluhelu i nā mea huna ma o ka API?

Mai ka mana 1.7, kākoʻo ʻo Kubernetes i ka hoʻopunipuni ʻikepili passive. ʻO ia hoʻi, mālama ʻia ka ʻike koʻikoʻi o loko etcd i hoʻopili ʻia ma ka disk a ʻaʻole hiki ke heluhelu ʻia e ka poʻe i komo pololei i ka waihona. No ka wehe ʻana iā ia, pono ʻoe i kahi kī i loaʻa i ka server Kubernetes API wale nō. I loko o kahi puʻupuʻu i hoʻonohonoho pono ʻia, pono e ʻae ʻia ka hoʻopunipuni passive.

Hiki iā ʻoe ke nānā inā hana ka hoʻopunipuni passive i kāu puʻupuʻu penei:

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

Inā ʻaʻole ʻoe e ʻike i ka hae hoʻokolohua-encryption-provider-config, ʻaʻole hiki ke hoʻopili ʻia ka passive encryption. Ke hoʻohana nei ʻo Google Kubernetes Engine a i ʻole nā ​​​​lawelawe hoʻokele Kubernetes ʻē aʻe, hoʻopili ʻia kāu ʻikepili me ka hoʻohana ʻana i kahi mīkini ʻē aʻe, no laila ʻaʻole e loaʻa ka hae. E nānā me kāu mea kūʻai Kubernetes e ʻike inā ua hoʻopili ʻia nā ʻike etcd.

Ke mālama nei i ka ʻikepili huna

Aia kekahi mau kumuwaiwai Kubernetes ʻaʻole pono e wehe ʻia mai ka pūʻulu, e like me nā mea huna koʻikoʻi. Hiki iā ʻoe ke pale i kahi kumuwaiwai mai ka holoi ʻia ʻana me ka hoʻohana ʻana i kahi hōʻike i hāʻawi ʻia e ka luna Helm:

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

Hoʻolālā Hoʻolālā Mea Malu

Ma ka laʻana mai ka pauku mua, ua pale ʻia nā ʻikepili koʻikoʻi mai ka ʻae ʻole ʻia ma hope koke o ka mālama ʻia ʻana i ka hui. Akā i loko o nā faila hōʻike ua mālama ʻia lākou ma ke ʻano he kikokikona maʻalahi.

ʻAʻole pono ʻoe e waiho i ka ʻike huna i loko o nā faila i ka mana mana. Pehea e hiki ai iā ʻoe ke mālama a mālama i kēia ʻike ma mua o ka hoʻohana ʻana i kāu pūʻulu Kubernetes?

Hiki iā ʻoe ke koho i nā mea hana a i ʻole nā ​​hoʻolālā no ka mālama ʻana i ka ʻikepili koʻikoʻi i kāu mau noi, akā pono ʻoe e pane i nā nīnau ma lalo nei.

  • Ma hea kahi e mālama ʻia ai nā ʻikepili koʻikoʻi i hiki ke loaʻa?
  • Pehea e hiki ai ke ʻike i ka ʻikepili koʻikoʻi i kāu mau noi hana?
  • He aha ka hopena i kāu mau noi ke pani a hoʻoponopono ʻoe i ka ʻikepili koʻikoʻi?

No nā mea kākau

John Arundel he mea kūkākūkā me 30 mau makahiki o ka ʻike ma ka ʻoihana kamepiula. Ua kākau ʻo ia i nā puke he nui a hana pū me nā ʻoihana he nui mai nā ʻāina like ʻole, e aʻo ana iā lākou e pili ana i nā ʻōnaehana kapuaʻi a me nā Kubernetes. I kona manawa kūʻokoʻa, leʻaleʻa ʻo ia i ka heʻenalu, he pana pana pana maikaʻi, a hoʻokani i ka piano ma ke ʻano he kamaʻāina. Noho ʻo ia i loko o kahi hale moʻolelo ma Cornwall, ʻEnelani.

Justin Dominus - ʻenehana hoʻokele ʻōnaehana e hana ana i kahi kaiapuni DevOps me nā Kubernetes a me nā ʻenehana kapua. Leʻaleʻa ʻo ia i ka hoʻolimalima manawa ma waho, inu kofe, pāpaʻi, a noho ma ke kamepiula. Noho ʻo ia ma Seattle, Wakinekona, me kahi pōpoki maikaʻi a me kahi wahine maikaʻi loa a me kahi hoaaloha maikaʻi loa, ʻo Adrienne.

» Hiki ke loaʻa nā kikoʻī hou aku e pili ana i ka puke ma punaewele o ka mea hoʻopuka
» Ka papa o nā mea
» ʻĀpana ʻlelo

No Khabrozhiteley 25% ho'ēmi me ka hoʻohana coupon - Kubernetes

Ma ka uku ʻana i ka mana pepa o ka puke, e hoʻouna ʻia kahi puke uila ma ka leka uila.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka