• 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
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
»
»
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