ProHoster > Pūnaewele > Nā Administration > Nā ʻōlelo aʻoaʻo a me nā hoʻopunipuni Kubernetes: e pili ana i ka hoʻomohala kūloko a me Telepresence
Nā ʻōlelo aʻoaʻo a me nā hoʻopunipuni Kubernetes: e pili ana i ka hoʻomohala kūloko a me Telepresence
Ua nīnau nui ʻia mākou e pili ana i ka hoʻomohala ʻana i nā microservices ma Kubernetes. Makemake nā mea hoʻomohala, ʻoi aku hoʻi o nā ʻōlelo unuhi, e hoʻoponopono koke i ke code i kā lākou IDE punahele a ʻike i ka hopena me ke kali ʻole no ke kūkulu ʻana/ka hoʻolālā ʻana - ma ke kaomi wale ʻana iā F5. A i ka hiki ʻana mai i kahi noi monolithic, ua lawa ia e hoʻokomo i kahi waihona a me kahi kikowaena pūnaewele (ma Docker, VirtualBox ...), a laila hauʻoli koke i ka hoʻomohala ʻana. Me ka ʻoki ʻana o nā monoliths i nā microservices a me ka hōʻea ʻana mai o Kubernetes, me ke ʻano o nā hilinaʻi i kekahi i kekahi, nā mea āpau. ua ʻoi aku ka paʻakikī. ʻO ka nui o kēia mau microservices, ʻoi aku ka nui o nā pilikia. No ka leʻaleʻa hou i ka hoʻomohala ʻana, pono ʻoe e hoʻāla i ʻoi aku ma mua o hoʻokahi a ʻelua mau pahu Docker, a i kekahi manawa ʻoi aku paha ma mua o hoʻokahi kakini ... Ma ka laulā, hiki i kēia mau mea ke lawe i ka manawa nui, no ka mea pono e mālama ʻia i kēia lā. .
I nā manawa like ʻole, ua hoʻāʻo mākou i nā hoʻonā ʻokoʻa i ka pilikia. A e hoʻomaka wau me nā workarounds i hōʻiliʻili ʻia a i ʻole "kākau".
1. Nā koʻi
Hiki i ka hapa nui o nā IDE ke hoʻoponopono pololei i ke code ma ke kikowaena me FTP/SFTP. Ua maopopo loa kēia ala a ua hoʻoholo koke mākou e hoʻohana. Hoʻopili ʻia kona ʻano i kēia mau mea:
I loko o ka pod o nā kaiapuni hoʻomohala (dev/review), hoʻokuʻu ʻia kahi pahu hou me ka loaʻa SSH a hoʻouna i ke kī SSH lehulehu o ka mea hoʻomohala nāna e hoʻokō / hoʻoili i ka noi.
Ma ke kahua init (i loko o ka ipu prepare-app) hoʻoili i ke code i emptyDire loaʻa i ke code mai nā pahu noi a me ka server SSH.
No ka hoʻomaopopo maikaʻi ʻana i ka hoʻokō ʻenehana o ia ʻano papahana, e hāʻawi wau i nā ʻāpana o nā hoʻonohonoho YAML pili i Kubernetes.
Nā hoʻonohonoho
1.1. waiwai.yaml
ssh_pub_key:
vasya.pupkin: <ssh public key in base64>
he mea vasya.pupkin ka waiwai o ka hoololi ${GITLAB_USER_LOGIN}.
Voila: hiki i ka mea hoʻomohala nāna i hoʻokumu i ka hoʻolālā ke hoʻopili ma ka inoa lawelawe (pehea e hāʻawi paʻa ai i ke komo i ka hui, ua haʻi mua mākou) mai kāu pākaukau ma o SFTP a hoʻoponopono i ke code me ke kali ʻole e hāʻawi ʻia i ka hui.
He hopena hana holoʻokoʻa kēia, akā mai kahi manaʻo hoʻokō he mau hemahema ʻike ʻole ia:
ka pono e hoʻomaʻemaʻe i ka pakuhi Helm, kahi e paʻakikī ai ka heluhelu ʻana i ka wā e hiki mai ana;
hiki ke hoʻohana wale ʻia e ka mea nāna i kau i ka lawelawe;
Pono ʻoe e hoʻomanaʻo e hoʻohui pū me ka papa kuhikuhi kūloko me ke code a hāʻawi iā Git.
2. Telepresence
ʻO ka papahana telepresence ua ʻike ʻia no ka manawa lōʻihi, akā ʻo mākou, e like me kā lākou e ʻōlelo nei, "ʻaʻole i hele a puni i ka hoʻāʻo koʻikoʻi i ka hana." Eia naʻe, ua hana ka noi i kāna hana a ke hauʻoli nei mākou e kaʻana like i kā mākou ʻike, he mea pono paha i ka poʻe heluhelu o kā mākou blog - ʻoiai ʻaʻohe mea ʻē aʻe e pili ana i Telepresence ma ka hub.
I ka pōkole, ua lilo nā mea a pau i mea weliweli. Ua kau mākou i nā hana a pau e pono ai ka hoʻokō ʻana ma ka ʻaoʻao o ka mea hoʻomohala ma kahi faila kikokikona Helm i kapa ʻia NOTES.txt. No laila, ma hope o ka lawe ʻana i ka lawelawe iā Kubernetes, ʻike ka mea hoʻomohala i nā ʻōlelo aʻoaʻo no ka hoʻokuʻu ʻana i ke kaiapuni dev kūloko ma ka log hana GitLab:
!!! Разработка сервиса локально, в составе Kubernetes !!!
* Настройка окружения
* * Должен быть доступ до кластера через VPN
* * На локальном ПК установлен kubectl ( https://kubernetes.io/docs/tasks/tools/install-kubectl/ )
* * Получить config-файл для kubectl (скопировать в ~/.kube/config)
* * На локальном ПК установлен telepresence ( https://www.telepresence.io/reference/install )
* * Должен быть установлен Docker
* * Необходим доступ уровня reporter или выше к репозиторию https://gitlab.site.com/group/app
* * Необходимо залогинится в registry с логином/паролем от GitLab (делается один раз):
#########################################################################
docker login registry.site.com
#########################################################################
* Запуск окружения
#########################################################################
telepresence --namespace {{ .Values.global.env }} --swap-deployment {{ .Chart.Name }}:backend --mount=/tmp/app --docker-run -v `pwd`:/app -v /tmp/app/var/run/secrets:/var/run/secrets -ti registry.site.com/group/app/backend:v8
#########################################################################
ʻAʻole mākou e noʻonoʻo kikoʻī i nā ʻanuʻu i wehewehe ʻia ma kēia ʻōlelo aʻo ... koe wale nō ka mea hope. He aha ka mea i ka wā o ka hoʻomaka ʻana o Telepresence?
Ke hana nei me Telepresence
I ka hoʻomaka ʻana (me ka hoʻohana ʻana i ke kauoha hope i kuhikuhi ʻia i nā ʻōlelo aʻoaʻo ma luna), hoʻonoho mākou:
inoa inoa kahi e holo ai ka microservice;
nā inoa o ka hoʻolaha a me ka pahu a mākou e makemake ai e komo.
ʻO nā manaʻo i koe he koho. Inā pili kā mākou lawelawe me ka API Kubernetes Hana ʻia ka ServiceAccount, pono mākou e kau i nā palapala hōʻoia / hōʻailona ma kā mākou papapihi. No ka hana ʻana i kēia, e hoʻohana i ke koho --mount=true (ai ole --mount=/dst_path), ka mea e kau ai i ke kumu (/) mai ka pahu Kubernetes i kā mākou papapihi. Ma hope o kēia, hiki iā mākou (e pili ana i ka OS a me ke ʻano o ka hoʻomaka ʻana o ka noi) e hoʻohana i nā "kī" mai ka hui.
ʻO ka mea mua, e nānā i ka koho ākea loa no ka holo ʻana i kahi noi - i loko o kahi pahu Docker. No ka hana ʻana i kēia, e hoʻohana mākou i ke kī --docker-run a kau i ka papa kuhikuhi me ke code i loko o ka ipu: -v `pwd`:/app
E ʻoluʻolu, e manaʻo ʻoe e holo ana kēia mai ka papa kuhikuhi papahana. E kau ʻia ke code noi ma ka papa kuhikuhi /app i loko o kahi pahu.
Eia kekahi: -v /tmp/app/var/run/secrets:/var/run/secrets - e kau i ka papa kuhikuhi me ka palapala hōʻoia i loko o kahi pahu.
Hoʻopili hope ʻia kēia koho e ke kiʻi kahi e holo ai ka noi. NB: I ke kūkulu ʻana i kiʻi, pono ʻoe e kuhikuhi CMD ai ole ia, ENTRYPOINT!
He aha ka mea e hiki mai ana?
Ma Kubernetes, no ka Deployment i kuhikuhi ʻia, e hoʻololi ʻia ka helu o nā replicas i 0. Akā, e hoʻomaka ʻia kahi Deployment hou - me kahi pahu pani. backend.
E hoʻokuʻu ʻia nā pahu 2 ma ka pākaukau: ʻo ka mua me Telepresence (ʻo ia nā noi koho mai / i Kubernetes), ʻo ka lua me ka hoʻomohala ʻana o ka noi.
Inā mākou e hoʻokō i loko o ka pahu me ka noi, a laila e loaʻa iā mākou nā mea hoʻololi ENV a pau i hoʻoili ʻia e Helm i ka wā o ka hoʻolālā ʻana, a e loaʻa pū nā lawelawe āpau. ʻO nā mea a pau i koe e hoʻoponopono i ke code i kāu IDE punahele a hauʻoli i ka hopena.
I ka pau ʻana o ka hana, pono ʻoe e pani i ka pahu kahi e holo ai ʻo Telepresence (hoʻopau i ke kau me Ctrl + C) - E kū nā pahu Docker ma ka pākaukau, a ma Kubernetes e hoʻi nā mea āpau i kona kūlana mua. ʻO nā mea a pau i koe, ʻo ka hoʻokō, hoʻopuka i ka MR a hoʻololi iā ia e nānā / hui /… (e pili ana i kāu kahe hana).
Inā ʻaʻole mākou makemake e holo i ka noi i loko o kahi pahu Docker - no ka laʻana, ʻaʻole mākou e hoʻomohala ma PHP, akā ma Go, a kūkulu mau i ka ʻāina - ʻoi aku ka maʻalahi o ka hoʻokuʻu ʻana i Telepresence:
Inā komo ka palapala noi i ka Kubernetes API, pono ʻoe e kau i ka papa kuhikuhi kī (https://www.telepresence.io/howto/volumes). Aia kahi pono no Linux moʻa:
Ma hope o ka hoʻokuʻu ʻana i Telepresence me ke koho ʻole --docker-run e loaʻa nā ʻano hoʻololi kaiapuni a pau i ka pahu o kēia manawa, no laila pono e hoʻokuʻu ʻia ka noi ma laila.
NB: I ka hoʻohana ʻana, no ka laʻana, PHP, pono ʻoe e hoʻomanaʻo e hoʻopau i nā ʻano op_cache, apc a me nā mea wikiwiki ʻē aʻe no ka hoʻomohala ʻana - inā ʻaʻole e alakaʻi ka hoʻoponopono i ke code i ka hopena i makemake ʻia.
Nā hopena
ʻO ka hoʻomohala kūloko me Kubernetes kahi pilikia e ulu nei ka hoʻonā e like me ka hoʻokomo ʻana i kēia kahua. I ka loaʻa ʻana o nā noi kūpono mai nā mea hoʻomohala (mai kā mākou mea kūʻai aku), ua hoʻomaka mākou e hoʻoponopono iā lākou me nā ala mua i loaʻa, akā naʻe, ʻaʻole i hōʻoia iā lākou iho i ka wā lōʻihi. ʻO ka mea pōmaikaʻi, ua ʻike ʻia kēia ʻaʻole wale i kēia manawa a ʻaʻole wale iā mākou, no laila ua ʻike mua ʻia nā ala kūpono i ka honua, a ʻo Telepresence ka mea kaulana loa o lākou (ma ke ala, aia pū kekahi. skaffold mai Google). ʻAʻole maikaʻi loa kā mākou ʻike o ka hoʻohana ʻana iā ia, akā ua hāʻawi mua iā mākou i ke kumu e ʻōlelo aku ai i kā mākou "hoa hana ma ka hale kūʻai" - e hoʻāʻo!
PS
Nā mea ʻē aʻe mai nā ʻōlelo aʻoaʻo a me nā hoʻopunipuni K8s: