Hoatuhia nga tono puta noa i nga tautau Kubernetes maha me te Helm

Me pehea te whakamahi a Dailymotion i a Kubernetes: Whakamahi Taupānga

I timata matou i Dailymotion ki te whakamahi i nga Kubernetes i roto i te hanga 3 tau ki muri. Engari he ngahau te tuku tono puta noa i nga tautau maha, no reira i roto i nga tau kua taha ake nei e ngana ana matou ki te whakapai ake i a matou taputapu me a matou rerengamahi.

I hea i timata ai

I konei ka korerohia me pehea te tuku i a maatau tono ki nga roopu Kubernetes maha huri noa i te ao.

Hei tuku i nga taonga Kubernetes maha i te wa kotahi, ka whakamahia e matou Helm, a ko o maatau mahere katoa kei te rongoa i roto i te kohinga git kotahi. Hei whakatakoto i te kohinga tono katoa mai i te maha o nga ratonga, ka whakamahia e matou te raarangi whakarāpopototanga. Ko te tikanga, he tūtohi tenei e whakaatu ana i nga whakawhirinakitanga ka taea e koe te arawhiti i te API me ona ratonga ma te tono kotahi.

I tuhia ano e matou he tuhituhi Python iti ki runga ake o Helm ki te tirotiro, ki te hanga tūtohi, ki te taapiri i nga mea ngaro, ki te tuku tono. Ko enei mahi katoa ka mahia i runga i te papaaapu CI pokapū ma te whakamahi i te ahua docker.

Kia tae ki te kaupapa.

Tuhipoka. I a koe e panui ana i tenei, kua panuitia te kaitono tuku tuatahi mo Helm 3. Kei roto i te putanga matua te tini o nga whakapainga hei whakatika i etahi o nga take i pa ki a matou i mua.

rerengamahi whanaketanga tūtohi

Ka whakamahia e matou te pekanga mo nga tono, a ka whakatau matou ki te whakamahi i taua huarahi ki nga tūtohi.

  • Peka dev whakamahia ki te hanga tūtohi ka whakamatauria ki nga tautau whanaketanga.
  • Ina tukuna he tono toia ki ariki, ka tirotirohia i roto i te waahi.
  • Ka mutu, ka waihangahia he tono kume hei tuku i nga huringa ki te peka prod me te whakamahi i roto i te hanga.

Kei ia taiao tana ake putunga motuhake e pupuri ana i a maatau tūtohi, ka whakamahia e matou Whare Taonga me nga API tino whai hua. Ma tenei ka whakarite maatau te wehe i waenga i nga taiao me nga whakamatautau o te ao tuuturu i mua i te whakamahi ki te whakaputa.

Pupuri tūtohi i roto i nga taiao rereke

He mea tika kia mahara ka panaia e nga kaiwhakawhanake he peka dev, ka panaia he putanga o ta ratou tūtohi ki te dev Chartmuseum. No reira, ka whakamahi nga kaiwhakawhanake katoa i te putunga dev kotahi, me ata whakarite e koe to putanga o te tūtohi kia kore ai e pohehe te whakamahi i nga huringa a tetahi atu.

I tua atu, ko ta maatau tuhinga Python iti e whakamana ana i nga taonga Kubernetes ki nga whakaritenga a Kubernetes OpenAPI e whakamahi ana Kubeval, i mua i te whakaputa i runga i te Chartmusem.

Whakaahuatanga whānui o te rerengamahi whanaketanga tūtohi

  1. Te whakarite i nga mahi paipa e ai ki nga whakaritenga gazr.io mo te whakahaere kounga (lint, wae-whakamatautau).
  2. Te pana i te ahua docker me nga taputapu Python e tuku ana i a maatau tono.
  3. Te whakarite i te taiao ma te ingoa peka.
  4. Te whakamana i nga konae yaml Kubernetes ma te whakamahi i te Kubeval.
  5. Whakanuia aunoatia te putanga o te tūtohi me ona tūtohi matua (nga tūtohi e whakawhirinaki ana ki te tūtohi e hurihia ana).
  6. Te tuku tūtohi ki tētahi whare taonga tūtohi e ōrite ana ki tōna taiao

Te whakahaere i nga rereketanga puta noa i nga tautau

Te Huihuinga o nga Huihuinga

He wa i whakamahia e matou federation of Kubernetes tautau, i reira ka taea te whakapuaki i nga taonga Kubernetes mai i te pito mutunga API kotahi. Engari ka puta nga raruraru. Hei tauira, kaore e taea te hanga etahi taonga Kubernetes ki te pito mutunga o te whakakotahitanga, na te mea he uaua ki te pupuri i nga taonga whakakotahi me etahi atu mea mo nga tautau takitahi.

Hei whakatau i te raru, i timata matou ki te whakahaere takitahi i nga tautau, i tino ngawari te mahi (i whakamahia e matou te putanga tuatahi o te whakakotahitanga; kua rereke pea tetahi mea i te tuarua).

Te papaaa-a-rangi

I tenei wa ka tohatohahia to maatau papaa puta noa i nga rohe 6 - 3 i te rohe me te 3 i te kapua.


Toha Tohaina

Nga uara Helm o te Ao

4 nga uara Helm o te ao ka taea e koe te tautuhi i nga rereketanga i waenga i nga tautau. He uara iti taunoa katoa o a maatau tūtohi.

global:
  cloud: True
  env: staging
  region: us-central1
  clusterName: staging-us-central1

Nga uara o te ao

Ka awhina enei uara ki te tautuhi i te horopaki mo a maatau tono ka whakamahia mo nga kaupapa rereke: te aro turuki, te tirotiro, te takiuru, te waea waea o waho, te tauine, aha atu.

  • "kapua": Kei a matou he papaahi Kubernetes ranu. Hei tauira, ka tukuna to tatou API ki nga rohe GCP me o tatou pokapū raraunga.
  • "env": Ka huri pea etahi uara mo nga taiao kore-whakaputa. Hei tauira, ko nga whakamaarama rauemi me nga whirihoranga whakahiato-aunoa.
  • "rohe": Ka awhina enei korero ki te whakatau i te waahi o te tautau ka taea te whakamahi ki te whakatau i nga waahi mutunga tata mo nga ratonga o waho.
  • "clusterName": mena me te wa e hiahia ana matou ki te tautuhi i tetahi uara mo tetahi tautau.

Anei tetahi tauira motuhake:

{{/* Returns Horizontal Pod Autoscaler replicas for GraphQL*/}}
{{- define "graphql.hpaReplicas" -}}
{{- if eq .Values.global.env "prod" }}
{{- if eq .Values.global.region "europe-west1" }}
minReplicas: 40
{{- else }}
minReplicas: 150
{{- end }}
maxReplicas: 1400
{{- else }}
minReplicas: 4
maxReplicas: 20
{{- end }}
{{- end -}}

He tauira tauira potae

Kua tautuhia tenei arorau i roto i te tauira kaiawhina kia kore ai e marara te Kubernetes YAML.

Panuitanga Tono

Ko a maatau taputapu whakaurunga kei runga i nga konae YAML maha. Kei raro nei he tauira mo ta matou whakapuaki i tetahi ratonga me tana topology tauine (te maha o nga tauira) i roto i te tautau.

releases:
  - foo.world

foo.world:                # Release name
  services:               # List of dailymotion's apps/projects
    foobar:
      chart_name: foo-foobar
      repo: [email protected]:dailymotion/foobar
      contexts:
        prod-europe-west1:
          deployments:
            - name: foo-bar-baz
              replicas: 18
            - name: another-deployment
              replicas: 3

Whakamaramatanga Ratonga

He whakahuahua tenei o nga kaupae katoa e tautuhi ana i ta maatau rerenga mahi. Ko te taahiraa whakamutunga ka tukuna te tono ki nga tautau kaimahi maha i te wa kotahi.


Jenkins Deployment Steps

He aha nga mea ngaro?

Mo te haumarutanga, ka whai matou i nga mea ngaro katoa mai i nga waahi rereke ka penapena ki roto i tetahi waahi ahurei Vault i Paris.

Ka tangohia e a maatau taputapu whakauru nga uara ngaro mai i Vault, a, ka tae mai te wa tuku, whakauruhia ki roto i te Helm.

Hei mahi i tenei, i tautuhia he mapi i waenga i nga mea ngaro i Vault me ​​nga mea ngaro e hiahiatia ana e a maatau tono:

secrets:                                                                                                                                                                                                        
     - secret_id: "stack1-app1-password"                                                                                                                                                                                  
       contexts:                                                                                                                                                                                                   
         - name: "default"                                                                                                                                                                                         
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"                                                                                                                                                                                    
         - name: "cluster1"                                                                                                                                                                           
           vaultPath: "/kv/dev/stack1/app1/test"                                                                                                                                                               
           vaultKey: "password"

  • Kua tautuhia e matou nga ture whanui hei whai i te wa e tuhi ana i nga mea ngaro ki Vault.
  • Mena ka pa te mea ngaro ki te horopaki motuhake, ki te tautau ranei, me taapiri he urunga motuhake. (I konei ko te huinga horopaki1 he uara ake mo te stack-app1-kupuhipa huna).
  • Ki te kore ka whakamahia te uara taunoa.
  • Mo ia mea kei tenei rarangi kei roto Kubernetes ngaro ka whakauruhia he takirua uara-matua. Na reira, he tino ngawari te tauira ngaro i roto i a maatau tūtohi.

apiVersion: v1
data:
{{- range $key,$value := .Values.secrets }}
  {{ $key }}: {{ $value | b64enc | quote }}
{{ end }}
kind: Secret
metadata:
  name: "{{ .Chart.Name }}"
  labels:
    chartVersion: "{{ .Chart.Version }}"
    tillerVersion: "{{ .Capabilities.TillerVersion.SemVer }}"
type: Opaque

Nga raruraru me nga here

Te mahi me nga putunga maha

Inaianei ka wehea e matou te whanaketanga o nga mahere me nga tono. Ko te tikanga me mahi nga kaiwhakawhanake i roto i nga putunga git e rua: kotahi mo te tono, me tetahi mo te tautuhi i tana tukunga ki Kubernetes. Ko te tikanga o nga repositories 2 git e 2 nga rerengamahi, a he ngawari te raruraru mo te tauhou.

He raruraru te whakahaere i nga mahere whanui

Ka rite ki ta matou i korero ai, he tino whai hua nga tūtohi whanui mo te tautuhi i nga whakawhirinakitanga me te tuku tere i nga tono maha. Engari ka whakamahia e matou --reuse-valueski te karo i te tuku i nga uara katoa i nga wa katoa ka tukuna e matou he tono he waahanga o tenei tūtohi whanui.

I roto i te rerenga mahi tuku tonu, e rua noa nga uara ka huri tonu: ko te maha o nga tauira me te tohu whakaahua (putanga). Ko etahi atu, ko nga uara pumau ka hurihia ma te ringa, a he tino uaua tenei. I tua atu, ko te hapa kotahi ki te tuku i te tūtohi whaanui ka arahi ki nga rahunga nui, pera i ta maatau i kite mai i o maatau ake wheako.

Kei te whakahou i nga konae whirihoranga maha

Ka taapirihia e te kaiwhakawhanake he tono hou, me whakarereke e ia nga konae maha: te whakapuakanga tono, te rarangi o nga mea ngaro, me te taapiri i te tono hei whakawhirinakitanga mena ka whakauruhia ki te tūtohi whanui.

He roa rawa nga whakaaetanga a Jenkins i Vault

Inaianei kei a matou tetahi AppRole, e panui ana i nga mea ngaro katoa mai i te Vault.

Ko te tukanga whakamuri kaore i te aunoa

Hei huri whakamuri, me whakahaere e koe te whakahau i runga i te maha o nga tautau, a he maha nga hapa. Ka mahia e matou tenei mahi a-ringa kia mohio ai kua tohua te ID putanga tika.

Kei te neke tatou ki GitOps

To maatau whainga

Kei te hiahia matou ki te whakahoki i te tūtohi ki te putunga o te tono ka tukuna.

Ka rite te rerenga mahi ki te whanaketanga. Hei tauira, ka panaia te peka ki te rangatira, ka puta aunoa te tukunga. Ko te rereketanga nui i waenga i tenei huarahi me te rerenga mahi o naianei ko tera ka whakahaerehia nga mea katoa i roto i te git (ko te tono ake me te huarahi e tukuna ana ki Kubernetes).

He maha nga painga:

  • Nui marama ake mo te kaiwhakawhanake. He maamaa ake te ako me pehea te whakamahi i nga huringa ki te tūtohi rohe.
  • Ka taea te tautuhi i te whakamaramatanga tuku ratonga he waahi ano ko te waehere ratonga.
  • Te whakahaere i te tango i nga mahere whanui. Ka whiwhi te ratonga i tana ake tuku Helm. Ma tenei ka taea e koe te whakahaere i te huringa ora o te tono (whakahoki, whakahou) i te taumata iti rawa, kia kore ai e pa ki etahi atu ratonga.
  • Nga painga o te git mo te whakahaere tūtohi: wetekina ngā huringa, rangitaki arotake, aha atu. Ki te hiahia koe ki te wete i tetahi huringa ki te tūtohi, ka taea e koe te mahi ma te whakamahi i te git. Ka timata aunoa te tuku.
  • Ka whakaaro pea koe ki te whakapai ake i to rerenga mahi whanaketanga me nga taputapu penei Tauira, ka taea e nga kaihanga te whakamatautau i nga huringa i roto i te horopaki e tata ana ki te hanga.

Hekenga-rua

Kua 2 tau a matou kaiwhakawhanake e whakamahi ana i tenei rerengamahi, no reira e hiahia ana matou kia noho mamae te heke. Na reira, i whakatau matou ki te taapiri i tetahi taahiraa takawaenga i runga i te huarahi ki te whainga.
He ngawari te waahanga tuatahi:

  • Ka pupuri matou i tetahi hanganga rite mo te whakatu i te tuku tono, engari i roto i te mea kotahi e kiia nei ko DailymotionRelease.

apiVersion: "v1"
kind: "DailymotionRelease"
metadata:
  name: "app1.ns1"
  environment: "dev"
  branch: "mybranch"
spec:
  slack_channel: "#admin"
  chart_name: "app1"
  scaling:
    - context: "dev-us-central1-0"
      replicas:
        - name: "hermes"
          count: 2
    - context: "dev-europe-west1-0"
      replicas:
        - name: "app1-deploy"
          count: 2
  secrets:
    - secret_id: "app1"
      contexts:
        - name: "default"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"
        - name: "dev-europe-west1-0"
          vaultPath: "/kv/dev/ns1/app1/test"
          vaultKey: "password"

  • 1 tuku mo ia tono (kaore he mahere whanui).
  • Tutohi kei roto i te putunga git o te tono.

Kua korero matou ki nga kaiwhakawhanake katoa, no reira kua timata te mahi heke. Ko te waahi tuatahi kei te whakahaerehia tonu ma te whakamahi i te papaarangi CI. Ka tuhia e au tetahi atu panui mo te wahanga tuarua: me pehea te neke ki tetahi rerengamahi GitOps rere. Ka korerotia e ahau ki a koe me pehea te whakarite i nga mea katoa me nga uaua i pa ki a maatau (nga putunga maha, nga mea ngaro, me etahi atu). Whaia nga korero.

I konei kua ngana matou ki te whakaahua i to maatau ahunga whakamua i roto i te rerenga mahi tuku tono i nga tau kua hipa, i puta mai nga whakaaro mo te huarahi GitOps. Kare ano matou kia eke ki te whainga me te tuku korero mo nga hua, engari inaianei kua tino mohio matou i mahia e matou te mea tika i te wa i whakatau ai matou ki te whakangawari i nga mea katoa me te whakatata atu ki nga tikanga a nga kaihanga.

Source: will.com

Tāpiri i te kōrero