To tatou whakatinanatanga o te Whakamahinga Tonu i runga i te papa o te kaihoko

Kua whakaritea e matou i True Engineering tetahi tikanga mo te tuku tonu i nga whakahoutanga ki nga kaitoro kaihoko me te hiahia ki te whakapuaki i tenei wheako.

Hei timata, i whakawhanakehia e matou he punaha ipurangi mo te kaihoko me te tuku ki roto i a maatau ake roopu Kubernetes. Inaianei kua neke atu ta maatau otinga kawenga nui ki te papa o te kaihoko, na reira i whakatuu ai he mahinga Whakamahi Tonu tonu. Na tenei, i whakaterehia e matou te wa-ki-maakete - te tuku huringa ki te taiao hua.

I roto i tenei tuhinga ka korerohia e maatau nga waahanga katoa o te mahinga Tonu Tonu (CD) tuku ranei o nga whakahoutanga ki te papa o te kaihoko:

  1. Me pehea te tiimata o tenei mahi?
  2. te tukutahi me te putunga Git a te kaihoko,
  3. te huinga o te tuara me te taha o mua,
  4. tuku tono aunoa i roto i te taiao whakamatautau,
  5. tuku aunoa ki Prod.

Ka tohatohahia e matou nga taipitopito tatūnga i te huarahi.

To tatou whakatinanatanga o te Whakamahinga Tonu i runga i te papa o te kaihoko

1. Tīmata CD

Ka timata te Whakamahinga Tonu ma te kaiwhakawhanake e pana ana i nga huringa ki te peka tuku o ta tatou putunga Git.

Ka whakahaerehia ta maatau tono i runga i te hoahoanga microservice ka penapena katoa ona waahanga ki roto i te putunga kotahi. He mihi ki tenei, ka kohia, ka whakauruhia nga ratonga miihini katoa, ahakoa kua rereke tetahi.

He maha nga take i whakaritea ai e matou nga mahi ma te putunga kotahi:

  • Te ngawari o te whakawhanaketanga - kei te kaha te whakawhanaketanga o te tono, na ka taea e koe te mahi me nga waehere katoa i te wa kotahi.
  • He paipa CI/CD kotahi e whakamana ana ko te tono hei punaha kotahi ka paahitia nga whakamatautau katoa ka tukuna ki te taiao whakaputa a te kaihoko.
  • Ka whakakorehia e matou te rangirua i roto i nga putanga - kaore matou e pupuri i te mapi o nga momo ratonga miihini me te whakaahua i tana whirihoranga mo ia ratonga miihini ki nga tuhinga Helm.

2. Tukutahi me te putunga Git o te waehere puna a te kaihoko

Ko nga huringa i mahia ka tukutahi aunoa me te putunga Git a te kaihoko. I reira ka whirihorahia te huihuinga tono, ka whakarewahia i muri i te whakahou i te peka, me te tuku ki te haere tonu. Ko nga tukanga e rua i ahu mai i to raatau taiao mai i te putunga putunga Git.

Kaore e taea e matou te mahi tika me te whare pupuri a te kaihoko na te mea e hiahia ana matou ki o maatau ake taiao hei whakawhanake me te whakamatautau. Ka whakamahia e matou ta matou putunga Git mo enei kaupapa - kua tukutahi me o raatau putunga Git. I te wa ka huri te kaiwhakawhanake ki te peka tika o ta maatau putunga, ka pana tonu e GitLab enei huringa ki te kaihoko.

To tatou whakatinanatanga o te Whakamahinga Tonu i runga i te papa o te kaihoko

I muri i tenei me mahi koe i te huihuinga. He maha nga waahanga: te whakamuri me te huihuinga o mua, te whakamatautau me te tuku ki te whakaputa.

3. Te whakaemi i te tuara me te pito o mua

Ko te hanga i te tuara me te pito o mua e rua nga mahi whakarara e mahia ana i roto i te punaha Runner GitLab. Ko tana whirihoranga hui taketake kei roto i te putunga kotahi.

Akoranga mo te tuhi tuhi YAML mo te hanga ki GitLab.

Ka tango a GitLab Runner i te waehere mai i te putunga e hiahiatia ana, ka kohia me te tono hanga tono Java ka tukuna ki te rehita Docker. I konei ka whakahiatohia e matou te tuara me te taha o mua, ka whiwhi whakaahua Docker, ka waiho e matou ki roto i te putunga i te taha o te kaihoko. Hei whakahaere i nga whakaahua Docker ka whakamahia e matou Gradle mono.

Ka tukutahia nga putanga o a maatau whakaahua me te putanga tuku ka whakaputaina ki Docker. Mo te mahi maeneene kua mahia e matou etahi whakarereketanga:

1. Kaore nga ipu i hangaia i waenga i te taiao whakamatautau me te taiao whakaputa. I mahia e matou nga parametrizations kia taea ai e te ipu kotahi te mahi me nga tautuhinga katoa, nga taurangi taiao me nga ratonga i roto i te taiao whakamatautau me te mahi me te kore hanga ano.

2. Hei whakahou i tetahi tono ma te Helm, me tohu e koe tona putanga. Ka hangahia e matou te tuara, te pito o mua me te whakahou i te tono - e toru enei mahi rereke, no reira he mea nui kia rite te ahua o te tono ki nga waahi katoa. Mo tenei mahi, ka whakamahi matou i nga raraunga mai i te hitori o Git, na te mea kei roto i te putunga putunga a Git to tatou whirihoranga huinga K8S me nga tono.

Ka whiwhi tatou i te putanga tono mai i nga hua mahi whakahau
git describe --tags --abbrev=7.

4. Te tuku aunoa o nga huringa katoa ki te taiao whakamatautau (UAT)

Ko te mahi ka whai ake i roto i tenei tuhinga hanga ko te whakahou aunoa i te roopu K8S. Ka puta tenei mena kua oti te hanga te tono katoa, kua whakaputaina nga taonga toi katoa ki te Rehita Docker. I muri i tenei, ka timata te whakahou taiao whakamatautau.

Kua timata te whakamohoatanga tautau ki te whakamahi Whakahou Helm. Ki te kore e rite tetahi mea ki te mahere, ka huri aunoa a Helm i ona huringa katoa. Ko ana mahi kaore e hiahiatia kia whakahaeretia.

Ka tukuna e matou te whirihoranga huinga K8S me te huihuinga. No reira, ko te mahi e whai ake nei ko te whakahou: configMaps, deployments, services, secrets and any other K8S configurations that we have changed.

Ka whakahaerehia e Helm he whakahou RollOut o te tono i roto i te taiao whakamatautau. I mua i te tukunga o te tono ki te whakaputa. Ka mahia tenei kia taea ai e nga kaiwhakamahi te whakamatautau a-ringa i nga ahuatanga pakihi ka tukuna e matou ki te taiao whakamatautau.

5. Te tuku aunoa o nga huringa katoa ki te Prod

Hei tuku whakahou ki te taiao whakangao, me paato noa koe i te paatene kotahi i GitLab - ka tukuna tonu nga ipu ki te taiao whakaputa.

Ka taea e te tono kotahi te mahi i roto i nga taiao rereke-whakamatautau me te whakaputa-kare he hanga ano. Ka whakamahia e matou nga toi ano me te kore e whakarereke i tetahi mea i roto i te tono, ka whakatauhia e matou nga tawhā ki waho.

Ko te taapiri ngawari o nga tautuhinga tono ka whakawhirinaki ki te taiao e mahia ai te tono. Kua nekehia e matou nga tautuhinga taiao katoa ki waho: kua tohua nga mea katoa na roto i te whirihoranga K8S me nga taapiri Helm. Ka tukuna e Helm he huihuinga ki te taiao whakamatautau, ka whakamahia nga tautuhinga whakamatautau ki a ia, ka whakamahia nga tautuhinga hua ki te taiao whakaputa.

Ko te mea tino uaua ko te tawhā i nga ratonga katoa me nga taurangi e whakawhirinaki ana ki te taiao, me te whakamaori ki nga taurangi taiao me te whakamaarama-whakaritenga o nga tawhā taiao mo Helm.

Ka whakamahi nga tautuhinga tono i nga taurangi taiao. Ka whakatauhia o raatau uara ki roto i nga ipu ma te whakamahi i te mahere whirihora K8S, he mea tauira ma te whakamahi i nga tauira Go. Hei tauira, ka taea te whakarite i te taurangi taiao ki te ingoa rohe penei:

APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}

.Values.global.env – ko tenei taurangi ka pupuri i te ingoa o te taiao (prod, stage, UAT).
.Values.app.properties.app_external_domain – i roto i tenei taurangi ka whakaturia e matou te rohe e hiahiatia ana ki te konae .Values.yaml

I te wa e whakahou ana i tetahi tono, ka hangaia e Helm he konae configmap.yaml mai i nga tauira ka whakakiia te uara APP_EXTERNAL_DOMAIN ki te uara e hiahiatia ana i runga i te taiao i timata ai te whakahou tono. Kua tau kē tēnei taurangi ki roto i te ipu. Ka taea te uru mai i te tono, no reira ka rereke te uara o ia taiao tono mo tenei taurangi.

No tata nei, ka puta te tautoko K8S i te Spring Cloud, tae atu ki te mahi me te configMaps: Puna Kapua Kubernetes. Ahakoa kei te kaha te whakawhanake me te rereke o te kaupapa, kaore e taea e taatau te whakamahi i roto i nga mahi whakaputa. Engari ka kaha te aro turuki i tona ahuatanga me te whakamahi i roto i nga whirihoranga DEV. Ka u ana, ka huri tatou mai i te whakamahi i nga taurangi taiao ki tera.

Te tapeke

Na, ka whirihorahia te Tukunga Tonu me te mahi. Ka puta nga whakahoutanga katoa me te patene kotahi. Ko te tukunga o nga huringa ki te taiao hua he aunoa. A, ko te mea nui, kaore nga whakahoutanga e aukati i te punaha.

To tatou whakatinanatanga o te Whakamahinga Tonu i runga i te papa o te kaihoko

Mahere a meake nei: te hekenga raraunga aunoa

I whakaaro matou ki te whakahou ake i te paataka raraunga me te kaha ki te huri whakamuri i enei huringa. I muri i nga mea katoa, e rua nga waahanga rereke o te tono e rere ana i te wa kotahi: kei te rere te tawhito, kei te eke te mea hou. A ka whakawetohia e matou te mea tawhito ka tino mohio kei te mahi te putanga hou. Ma te hekenga raraunga ka taea e koe te mahi me nga putanga e rua o te tono.

Na reira, e kore e taea e tatou te huri noa i te ingoa tīwae me etahi atu raraunga. Engari ka taea e tatou te hanga i tetahi pou hou, ka kape i nga raraunga mai i te pou tawhito ki roto ka tuhi i nga keemu e, i te wa e whakahou ana i nga raraunga, ka kape me te whakahou i te waa ki tetahi atu pou. A, i muri i te tukunga angitu o te putanga hou o te tono, i muri i te waa tautoko i muri i te whakarewatanga, ka taea e matou te whakakore i te pou tawhito me te keu kua kore e tika.

Ki te kore e mahi tika te putanga hou o te tono, ka taea e tatou te hoki ki te putanga o mua, tae atu ki te putanga o mua o te putunga raraunga. Hei poto, ma a maatau huringa ka taea e koe te mahi i te wa kotahi me etahi momo putanga o te tono.

Ka whakamahere matou ki te whakaaunoa i te hekenga raraunga ma te mahi K8S, me te whakauru ki roto i te tukanga CD. A ka tino tohatohahia e matou tenei wheako mo Habré.

Source: will.com

Tāpiri i te kōrero