Fa'ata'atia tusi talosaga i le tele o fuifui Kubernetes ma Helm

Fa'afefea ona fa'aogaina e Dailymotion Kubernetes: Fa'atulagaina o Talosaga

O matou i Dailymotion na amata faʻaaoga Kubernetes i le gaosiga 3 tausaga talu ai. Ae o le fa'atinoina o talosaga i le tele o fuifui e malie, o lea i nai tausaga ua tuana'i sa matou taumafai ai e fa'aleleia a matou mea faigaluega ma galuega.

O fea na amata ai

O iinei o le a matou faʻaalia ai le faʻaogaina o a matou talosaga i le tele o fuifui Kubernetes i le lalolagi atoa.

Ina ia faʻapipiʻi le tele o mea Kubernetes i le taimi e tasi, matou te faʻaogaina pūlou faʻafao, ma o matou siata uma o loʻo teuina i le tasi git repository. Ina ia faʻapipiʻiina se faʻaputuga atoa o talosaga mai le tele o auʻaunaga, matou te faʻaogaina le siata o le aotelega. O le mea moni, o se siata lea e faʻaalia ai le faʻalagolago ma faʻatagaina oe e amataina le API ma ana tautua i le tasi poloaiga.

Na matou tusia foi se tamai tusitusiga Python i luga o le Helm e fai siaki, fai siata, faʻaopoopo mealilo, ma faʻapipiʻi tusi talosaga. O nei galuega uma o loʻo faʻatinoina i luga o le ogatotonu o le CI platform e faʻaaoga ai se ata faʻailoga.

Sei o tatou oo atu i le tulaga.

Manatua. A'o e faitauina lenei mea, ua uma ona fa'asalalau le sui tauva muamua mo Helm 3. O le lomiga autu o loʻo i ai le tele o faʻaleleia atili e foia ai nisi o faʻafitauli na matou feagai i le taimi ua tuanaʻi.

Fuafuaga o le atina'eina o siata

Matou te faʻaaogaina lala mo talosaga, ma matou filifili e faʻaoga le auala tutusa i siata.

  • Lala dev fa'aaoga e fai ai siata o le a fa'ata'ita'iina i vaega o atina'e.
  • Pe a tuuina atu se talosaga toso i aliʻi, o lo'o siakiina i le fa'atulagaina.
  • Mulimuli ane, matou te faia se talosaga toso e fai suiga i le lala gaosiga ma fa'aaoga i le gaosiga.

O si'osi'omaga ta'itasi e iai lana lava fale teu oloa e teu ai a tatou siata, ma tatou fa'aaogaina Falemataaga Siata fa'atasi ai ma API aoga tele. O le auala lea matou te faʻamautinoa ai le faʻamavaeina o siʻosiʻomaga ma suʻega moni o siata aʻo leʻi faʻaaogaina i le gaosiga.

Siata fale teu oloa i siosiomaga eseese

E taua le maitauina pe a tuleia e le au atinaʻe se lala dev, o se faʻaaliga o la latou siata e otometi lava ona tuleia i le dev Chartmuseum. O le mea lea, e faʻaogaina uma e le au atinaʻe le fale e tasi o le dev, ma e tatau ona e faʻamaonia ma le faʻaeteete lau faʻasologa o le siata ina ia aua neʻi faʻafuaseʻi ona faʻaogaina suiga a se isi tagata.

E le gata i lea, o la matou tama'i Python tusitusiga fa'amaonia mea Kubernetes e fa'atatau i fa'amatalaga Kubernetes OpenAPI fa'aaoga Kubeval, a o leʻi lomiaina i luga o le Chartmusem.

Fa'amatalaga lautele o le fa'atupuina o siata galuega

  1. Fa'atulaga galuega paipa e tusa ai ma fa'amatalaga gazr.io mo le pulea lelei (lint, unit-test).
  2. Fa'aosoina se ata fa'ailoga fa'atasi ma meafaigaluega Python e fa'aogaina ai a tatou talosaga.
  3. Fa'atulaga le si'osi'omaga ile igoa lala.
  4. Fa'amaonia faila yaml Kubernetes e fa'aaoga ai Kubeval.
  5. Fa'ateleina le fa'asologa o se siata ma ona matua siata (siata e fa'alagolago i le siata o lo'o suia).
  6. Tuuina atu o se siata i se Chartmuseum e fetaui ma lona siosiomaga

Puleaina o eseesega i fuifui

Fa'apotopotoga o Fa'apotopotoga

Sa i ai se taimi na matou faʻaaogaina federation of Kubernetes fuifui, lea e mafai ona fa'ailoa mai ai mea a Kubernetes mai se fa'ai'uga API se tasi. Ae na tulai mai faafitauli. Mo se fa'ata'ita'iga, o nisi mea Kubernetes e le'i mafai ona faia i totonu o le federation endpoint, e faigata ai ona tausia mea federated ma isi mea mo fuifui ta'itasi.

Ina ia foia le faafitauli, na amata ona matou pulea tutoatasi ia fuifui, lea na matua faafaigofieina ai le faagasologa (na matou faaaogaina le uluai lomiga o le federation; atonu e iai se mea na suia i le lona lua).

Geo-tufatufaina tulaga

O loʻo tufatufa atu la matou faʻasalalauga i le 6 itulagi - 3 i le lotoifale ma le 3 i le ao.


Fa'asoa Fa'asoa

Fa'atatau i le Global Helm

4 tulaga taua o Helm i le lalolagi e mafai ai ona e iloa eseesega i le va o fuifui. O a matou siata uma e iai fa'atauga aupito maualalo.

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

Tulaga fa'alelalolagi

O nei tau aoga e fesoasoani e faʻamalamalamaina le tala mo a tatou talosaga ma faʻaaogaina mo faʻamoemoega eseese: mataʻituina, suʻeina, logging, faia o telefoni fafo, scaling, etc.

  • "cloud": E iai a matou faʻasalalauga Kubernetes faʻapipiʻi. Mo se faʻataʻitaʻiga, o la matou API o loʻo faʻapipiʻiina i sone GCP ma totonu o matou nofoaga autu o faʻamatalaga.
  • "env": O nisi tulaga taua e mafai ona suia mo siosiomaga e le o gaosia. Mo se fa'ata'ita'iga, fa'amatalaga o puna'oa ma fa'avasegaga fa'a-auto.
  • "Region": O lenei fa'amatalaga e fesoasoani i le fuafuaina o le nofoaga o le fuifui ma e mafai ona fa'aoga e fuafua ai pito lata ane mo auaunaga i fafo.
  • "clusterName": pe afai ma le taimi tatou te mananaʻo e faʻamalamalamaina se tau mo se fuifui taʻitasi.

O se fa'ata'ita'iga fa'apitoa lenei:

{{/* 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 -}}

Fa'ata'ita'iga mamanu foeuli

O lenei faʻamatalaga o loʻo faʻamatalaina i se fesoasoani fesoasoani e aloese ai mai le faʻalavelave Kubernetes YAML.

Faasilasilaga o Talosaga

O a matou meafaigaluega faʻapipiʻi e faʻavae i luga o le tele o faila YAML. O lo'o i lalo se fa'ata'ita'iga o le fa'ailoaina atu o se tautua ma lona fa'avasegaina o fa'asologa (numera o fa'atusa) i totonu o se fuifui.

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

Auaunaga Faauigaga

O se otootoga lea o laasaga uma e faʻamalamalamaina ai le matou faʻatulagaina o galuega. O le laasaga mulimuli e faʻapipiʻi ai le talosaga i le tele o fuifui tagata faigaluega i le taimi e tasi.


Jenkins Deployment Steps

Ae faapefea mealilo?

E tusa ai ma le saogalemu, matou te siakiina mea lilo uma mai nofoaga eseese ma teu i totonu o se pusa faʻapitoa Vault i Pale.

O a matou meafaigaluega faʻapipiʻi e maua mai ai mea lilo mai le Vault ma, a oʻo mai le taimi faʻapipiʻi, faʻapipiʻi i totonu o Helm.

Ina ia faia lenei mea, matou faʻamatalaina se faʻafanua i le va o mealilo i Vault ma mealilo e manaʻomia e a matou talosaga:

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"

  • Ua matou fa'amalamalamaina tulafono lautele e mulimuli ai pe a pu'eina mealilo i Vault.
  • Afai e faatatau le mea lilo i se anotusi patino po o se fuifui, e tatau ona e faʻaopoopoina se faʻamatalaga patino. (O iinei o le anotusi cluster1 ei ai lona lava taua mo le faalilolilo stack-app1-password).
  • A leai e fa'aaoga le tau lē mafai.
  • Mo mea taitasi i lenei lisi i Kubernetes faalilolilo o lo'o fa'aofiina se pa'aga taua-taua. O le mea lea, o le mamanu faalilolilo i totonu oa tatou siata e matua faigofie lava.

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

Faafitauli ma tapulaa

Galulue ma le tele o fale teu oloa

O lea ua matou vavaeeseina le atinaʻeina o siata ma faʻaoga. O lona uiga e tatau i tagata atiae ona galulue i fale teu oloa e lua: tasi mo le talosaga, ma le tasi mo le faʻamalamalamaina o lona faʻaogaina i Kubernetes. 2 git repository o lona uiga e 2 galuega, ma e faigofie mo se tagata fou ona fenumiai.

O le puleaina o siata lautele o se faʻalavelave

E pei ona uma ona matou fai atu, o siata lautele e aoga tele mo le faʻamaonia o faʻalagolago ma vave faʻaogaina le tele o talosaga. Ae matou te faʻaaogaina --reuse-valuese aloese mai le pasi uma o tau i taimi uma matou te faʻaogaina ai se talosaga o se vaega o lenei siata lautele.

I le faʻaauau pea o galuega faʻaleleia, e naʻo le lua a matou tau e suia i taimi uma: le numera o faʻataʻitaʻiga ma le faʻailoga ata (version). O isi, sili atu ona mautu tau e suia ma le lima, ma e fai si faigata. E le gata i lea, e tasi le mea sese i le faʻapipiʻiina o se siata lautele e mafai ona oʻo atu ai i ni faʻaletonu matuia, e pei ona tatou vaʻaia mai o tatou lava poto masani.

Fa'afou le tele o faila fa'atulagaina

Pe a faʻaopoopo e se tagata faʻapipiʻi se talosaga fou, e tatau ona ia suia le tele o faila: o le taʻutinoga o le talosaga, le lisi o mealilo, faʻaopoopo le talosaga e avea o se faʻalagolago pe a aofia ai i le siata lautele.

Ua fa'alautele tele fa'atagaga a Jenkins i Vault

O lea ua maua le tasi AppRole, lea e faitauina uma mea lilo mai le Vault.

E le otometi le faagasologa o le toe faafoi

Ina ia toe foʻi i tua, e tatau ona e faʻatautaia le faʻatonuga i luga o ni fuifui, ma e tumu i mea sese. Matou te faia lenei gaioiga ma le lima ina ia mautinoa o loʻo faʻamaonia le ID saʻo.

O loʻo matou agai atu i GitOps

La tatou sini

Matou te mananaʻo e toe faʻafoʻi le siata i le fale teu oloa o loʻo faʻaaogaina.

Ole a tutusa le faiga ole galuega ma le atina'e. Mo se faʻataʻitaʻiga, pe a tuleia se lala i le matai, o le faʻapipiʻiina o le a faʻaalia otometi. O le eseesega tele i le va o lenei faiga ma le galuega o loʻo i ai nei o le o mea uma o le a pulea i le git (le talosaga lava ia ma le auala e faʻapipiʻiina i Kubernetes).

E tele mea lelei:

  • Tele manino atu mo le tagata atiaeina. E faigofie ona a'oa'oina le fa'aogaina o suiga ile siata fa'apitonu'u.
  • E mafai ona fa'amaonia le fa'auigaina o le fa'atinoina o le auaunaga nofoaga tutusa ma le code auaunaga.
  • Puleaina o le aveeseina o siata lautele. O le auaunaga o le a iai lana lava fa'amalolo Helm. O lenei mea o le a mafai ai e oe ona faʻatautaia le faʻasologa o le olaga (toe faʻafoʻi, faʻaleleia) i le laʻititi laʻititi, ina ia le afaina ai isi auʻaunaga.
  • Fa'amanuiaga ole git mo le puleaina o siata: toe fa'afo'i suiga, fa'amaumauga su'etusi, ma isi. Afai e te mana'omia le toe fa'aleaogaina o se suiga i se siata, e mafai ona e faia lea fa'aoga git. E amata otometi le fa'apipi'i.
  • Atonu e te mafaufau e faʻaleleia lau faʻaleleia galuega faʻatasi ma meafaigaluega e pei o Fa'alava, lea e mafai ai e le au atiaʻe ona suʻeina suiga i se talatala latalata ile gaosiga.

E lua-laasaga femalagaiga

O lo'o fa'aogaina e le au atia'e lenei fa'asologa o galuega mo le 2 tausaga i le taimi nei, o lea matou te manana'o ai ia leai se tiga e mafai ai. O le mea lea, na matou filifili ai e faʻaopoopo se laʻasaga vavalalata i luga o le ala i le sini.
O le laasaga muamua e faigofie:

  • Matou te tausia se fausaga tutusa mo le faʻatulagaina o le faʻaogaina o talosaga, ae i totonu o se mea e tasi e taʻua 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 faʻasalalauga i le talosaga (e aunoa ma ni siata lautele).
  • Siata i le fale teu oloa git.

Ua uma ona matou talanoa i tagata atiaʻe uma, o lea ua amata le faagasologa o femalagaiga. O le laasaga muamua o loʻo pulea pea e faʻaaoga ai le CI platform. O le a ou tusia se isi pou i se taimi lata mai e uiga i le vaega lua: pe faʻafefea ona matou siitia atu i le GitOps workflow ma tafe. O le a ou taʻu atu ia te oe pe faʻafefea ona matou faʻatulagaina mea uma ma faʻafitauli na matou feagai (tele faleoloa, mealilo, ma isi). Mulimuli i tala fou.

O iinei na matou taumafai ai e faʻamatala lo matou alualu i luma i le faʻaogaina o le faʻaogaina o galuega i tausaga ua tuanaʻi, lea na mafua ai mafaufauga e uiga i le GitOps auala. Matou te leʻi ausia le sini ma o le a lipotia iʻuga, ae o lea ua matou talitonu na matou faia le mea saʻo ina ua matou filifili e faʻafaigofie mea uma ma faʻalatalata atu i masaniga a le au atinaʻe.

puna: www.habr.com

Faaopoopo i ai se faamatalaga