ProHoster > Blog > Rianachd > A’ toirt air falbh meur feart seann-fhasanta ann am buidheann Kubernetes
A’ toirt air falbh meur feart seann-fhasanta ann am buidheann Kubernetes
Hello! Meur feart (aka cleachdadh ro-shealladh, app ath-bhreithneachaidh) - seo nuair nach e a-mhàin gu bheil am prìomh mheur air a chleachdadh, ach cuideachd gach iarrtas tarraing gu URL sònraichte. Faodaidh tu dearbhadh a bheil an còd ag obair ann an àrainneachd riochdachaidh; faodar am feart a shealltainn do phrògramadairean eile no eòlaichean toraidh. Fhad ‘s a tha thu ag obair ann an iarrtas tarraing, thèid gach cleachdadh gnàthach gealltanas ùr airson an t-seann chòd a dhubhadh às, agus thèid an cleachdadh ùr airson a’ chòd ùr a sgaoileadh a-mach. Faodaidh ceistean èirigh nuair a chuir thu iarrtas tarraing còmhla ris a’ phrìomh mheur. Chan fheum thu am meur feart tuilleadh, ach tha goireasan Kubernetes fhathast sa bhuidheann.
Tuilleadh mu mheuran feart
Is e aon dòigh air meuran feart a dhèanamh ann an Kubernetes a bhith a’ cleachdadh ainmean-àite. Ann an ùine ghoirid, tha an rèiteachadh toraidh a ’coimhead mar seo:
Airson meur feart, thèid àite-ainm a chruthachadh leis an aithnichear aige (mar eisimpleir, an àireamh iarrtas tarraing) agus seòrsa de ro-leasachan / postfix (mar eisimpleir, -pr-):
San fharsaingeachd, sgrìobh mi Gnìomhaiche Kubernetes (iarrtas aig a bheil cothrom air goireasan cnuasachaidh), ceangal ris a’ phròiseact air Github. Bidh e a’ toirt air falbh àiteachan ainmean a bhuineas do sheann mheuran feart. Ann an Kubernetes, ma sguabas tu às àite ainm, thèid goireasan eile san ainm-àite sin a dhubhadh às gu fèin-ghluasadach cuideachd.
$ kubectl get pods --all-namespaces | grep -e "-pr-"
NAMESPACE ... AGE
habr-back-end-pr-264 ... 4d8h
habr-back-end-pr-265 ... 5d7h
Faodaidh tu leughadh mu mar a chuireas tu meuran feart an sàs ann am brabhsair an seo и an seo.
Мотивация
Bheir sinn sùil air cuairt-beatha iarrtas tarraing àbhaisteach le amalachadh leantainneach (continuous integration):
Bidh sinn a’ putadh gealltanas ùr chun mheur.
Air an togail, thathas a’ ruith lòchrain agus/no deuchainnean.
Bithear a ’gineadh rèiteachaidhean iarrtas tarraing Kubernetes air an itealan (mar eisimpleir, tha an àireamh aige air a chuir a-steach don teamplaid chrìochnaichte).
A’ cleachdadh kubectl cuir a-steach, thèid rèiteachaidhean a chur ris a’ bhuidheann (cleachdadh).
Tha iarrtas tarraing air a thoirt a-steach don phrìomh mheur.
Fhad ‘s a tha thu ag obair ann an iarrtas tarraing, thèid gach cleachdadh gnàthach gealltanas ùr airson an t-seann chòd a dhubhadh às, agus thèid an cleachdadh ùr airson a’ chòd ùr a sgaoileadh a-mach. Ach nuair a thèid iarrtas tarraing a thoirt a-steach don phrìomh mheur, cha tèid ach am prìomh mheur a thogail. Mar thoradh air an sin, tha e a ’tionndadh a-mach gu bheil sinn mu thràth air dìochuimhneachadh mun iarrtas tarraing, agus tha na goireasan Kubernetes aige fhathast anns a’ bhuidheann.
Parameter namespaceSubstring a dhìth gus beàrnan ainm a shìoladh airson iarrtasan tarraing bho àiteachan ainmean eile. Mar eisimpleir, ma tha na h-àiteachan ainmean a leanas aig a’ bhuidheann: habr-back-end, habr-front-end, habr-back-end-pr-17, habr-back-end-pr-33, an uairsin bidh tagraichean airson cuir às habr-back-end-pr-17, habr-back-end-pr-33.
Parameter às dèidh Làithean Gun Chleachdadh tha feum air seann ainmean a sguabadh às. Mar eisimpleir, ma thèid namespace a chruthachadh 3 дня 1 час air ais, agus tha am paramadair a’ nochdadh 3 дня, thèid an t-ainm-àite seo a sguabadh às. Bidh e cuideachd ag obair an taobh eile ma thèid an t-ainm-àite a chruthachadh 2 дня 23 часа air ais, agus tha am paramadair a’ nochdadh 3 дня, cha tèid an t-ainm-àite seo a sguabadh às.
Tha aon paramadair eile ann, tha e an urra ri dè cho tric ‘s a thèid a h-uile àite ainm a sganadh agus sgrùdadh a dhèanamh airson làithean gun chleachdadh - thoir sùil air a h-uile mionaid. Gu gnàthach tha e co-ionann ri 30 минутам.
Ciamar a tha an obair seo
Ann an cleachdadh, bidh feum agad air:
Docker airson a bhith ag obair ann an àrainneachd iomallach.
Minikube togaidh e cruinneachadh Kubernetes gu h-ionadail.
Bidh sinn a’ togail cruinneachadh Kubernetes gu h-ionadail:
$ minikube start --vm-driver=docker
minikube v1.11.0 on Darwin 10.15.5
Using the docker driver based on existing profile.
Starting control plane node minikube in cluster minikube.
Leis gu bheil rèiteachaidhean cinneasachaidh air an rèiteachadh gus sùil a thoirt air seann ainmean, agus nach eil iad aig a’ bhuidheann ùr againn, cuiridh sinn caochladair na h-àrainneachd an àite IS_DEBUG air true. Leis an luach seo am paramadair afterDaysWithoutDeploy chan eilear a’ toirt aire agus chan eilear a’ sgrùdadh àiteachan ainmean airson làithean gun chleachdadh, dìreach airson an fho-thalamh (-pr-).
Ma tha thu air adhart Linux:
$ sed -i 's|false|true|g' stale-feature-branch-production-configs.yml
Ma tha thu air adhart macOS:
$ sed -i "" 's|false|true|g' stale-feature-branch-production-configs.yml
Bidh sinn a’ dèanamh cinnteach gu bheil gnìomhaiche air nochdadh anns a’ bhuidheann:
$ kubectl get pods --namespace stale-feature-branch-operator
NAME ... STATUS ... AGE
stale-feature-branch-operator-6bfbfd4df8-m7sch ... Running ... 38s
Ma choimheadas tu air na clàran aige, tha e deiseil airson goireasan a phròiseasadh StaleFeatureBranch:
Tha an gnìomhaiche air freagairt agus tha e deiseil airson sùil a thoirt air àiteachan ainmean:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Stale feature branch is being processing.","namespaceSubstring":"-pr-","afterDaysWithoutDeploy":1,"checkEveryMinutes":1,"isDebug":"true"}
Stàlaich fixtures, anns a bheil dà àite ainm (project-pr-1, project-pr-2) agus iadsan deployments, services, ingress, Agus mar sin air adhart:
$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/first-feature-branch.yml -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/second-feature-branch.yml
...
namespace/project-pr-1 created
deployment.apps/project-pr-1 created
service/project-pr-1 created
horizontalpodautoscaler.autoscaling/project-pr-1 created
secret/project-pr-1 created
configmap/project-pr-1 created
ingress.extensions/project-pr-1 created
namespace/project-pr-2 created
deployment.apps/project-pr-2 created
service/project-pr-2 created
horizontalpodautoscaler.autoscaling/project-pr-2 created
secret/project-pr-2 created
configmap/project-pr-2 created
ingress.extensions/project-pr-2 created
Nì sinn cinnteach gun deach na goireasan gu h-àrd a chruthachadh gu soirbheachail:
$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
NAME ... READY ... STATUS ... AGE
pod/project-pr-1-848d5fdff6-rpmzw ... 1/1 ... Running ... 67s
NAME ... READY ... AVAILABLE ... AGE
deployment.apps/project-pr-1 ... 1/1 ... 1 ... 67s
...
Bhon a thug sinn a-steach debug, ainmean-àite project-pr-1 и project-pr-2, mar sin feumar a h-uile goireas eile a dhubhadh às sa bhad gun a bhith a’ toirt aire don pharamadair afterDaysWithoutDeploy. Tha seo ri fhaicinn ann an logaichean a’ ghnìomhaiche:
$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-1"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-1","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-1"}
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-2"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-2","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-2"}
Ma nì thu sgrùdadh air na tha ri fhaighinn de ghoireasan, bidh iad san inbhe Terminating (pròiseas sguabaidh às) no air a dhubhadh às mu thràth (tha toradh òrdughan falamh).
$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
Faodaidh tu am pròiseas cruthachaidh ath-aithris fixtures grunn thursan agus dèan cinnteach gun tèid an toirt air falbh taobh a-staigh mionaid.
Roghainnean eile
Dè ghabhas dèanamh an àite gnìomhaiche a tha ag obair ann am brabhsair? Tha grunn dhòighean-obrach ann, tha iad uile neo-fhoirfe (agus tha na h-easbhaidhean aca pearsanta), agus bidh a h-uile duine a 'co-dhùnadh dha fhèin dè as fheàrr airson pròiseact sònraichte:
Cuir às do mheur feart rè togail amalachadh leantainneach de phrìomh mheur.
Gus seo a dhèanamh, feumaidh fios a bhith agad dè an t-iarrtas tarraing a tha a 'buntainn ris a' ghealltanas a thathar a 'togail. Leis gu bheil an aithnichear iarrtas tarraing ann an àrainn-ainm meur feart - an àireamh aige, no ainm a’ mheur, feumaidh an aithnichear an-còmhnaidh a bhith air a shònrachadh sa ghealladh.
Tha prìomh thogalaichean meur a’ fàiligeadh. Mar eisimpleir, tha na h-ìrean a leanas agad: luchdaich sìos am pròiseact, ruith deuchainnean, tog am pròiseact, cuir fios a-mach, cuir fiosan, cuir às don mheur feart den iarrtas tarraing mu dheireadh. Ma dh’ fhailicheas an togail nuair a chuireas tu fios, feumaidh tu a h-uile goireas sa bhuidheann a dhubhadh às le làimh.
Às aonais co-theacs ceart, chan eil e follaiseach cuir às do mheuran feart anns a’ phrìomh thogalach.
Is dòcha nach e seo an dòigh-obrach agad. Mar eisimpleir, ann an Jenkins, chan eil ach aon seòrsa de loidhne-phìoban a’ toirt taic don chomas na rèiteachaidhean aige a shàbhaladh sa chòd stòr. Nuair a bhios tu a’ cleachdadh lìn-lìn, feumaidh tu an sgriobt agad fhèin a sgrìobhadh airson an làimhseachadh. Feumaidh an sgriobt seo a bhith air a chuir ann an eadar-aghaidh Jenkins, a tha duilich a chumail suas.
Gus sgrìobhadh Cronobair agus cuir buidheann Kubernetes ris.
A’ caitheamh ùine air sgrìobhadh agus taic.
Tha an gnìomhaiche mar-thà ag obair ann an stoidhle coltach ris, air a chlàradh agus a 'faighinn taic.