Canary Deployment e fa'aaoga ai le Jenkins-X Istio Flagger
O le a matou faia ma le lima le faʻapipiʻiina o Canary e ala i GitOps ma fatuina / faʻaleleia punaoa autu Kubernetes. O lenei tusiga ua fa'amoemoe muamua lava mo le fa'atomuaga faʻatasi ai ma le faʻaogaina o galuega i Kubernetes Canary, talu ai o loʻo i ai auala sili atu le aoga o le masini, lea o le a tatou iloiloina i mataupu o loʻo mulimuli mai.
Faatasi ai ma le Canary fuafuaga, faʻafouga muamua e faʻaoga i naʻo se vaega o tagata faʻaoga. E ala i le mataʻituina, faʻamaumauga faʻamaumauga, suʻega tusi lesona, poʻo isi auala faʻaalia, e faʻataʻitaʻiina le faʻasalalauga aʻo leʻi tuʻuina atu i tagata uma.
Kubernetes Deployment (fa'afouina fa'afouga)
Ole ta'iala fa'aletonu mo Kubernetes Deployment o lo'o fa'afou-fa'afou, lea e fa'alauiloa ai se numera o pods ma fa'aaliga fou o ata. Afai na faia e aunoa ma ni faʻafitauli, e faʻamutaina pusa ma ata tuai o ata, ma faʻapipiʻi foʻi pusa fou.
GitOps
Matou te faʻaaogaina GitOps i lenei faʻataʻitaʻiga aua matou:
faʻaaogaina Git o se puna e tasi o le mea moni
matou te faʻaogaina le Git Operations mo le fausiaina ma le faʻapipiʻiina (leai ni poloaiga e ese mai i le git tag / merge e manaʻomia)
Faataitaiga:
Sei o tatou faia se fa'ata'ita'iga lelei - ia tasi le faleteuoloa mo fa'ailoga tusi talosaga ma le tasi mo atina'e tetele.
Fale teu oloa
O se Python + Flask API faigofie tele lea e toe faʻafoʻi mai se tali e pei o JSON. O le a matou fausia le afifi e ala i GitlabCI ma tulei le taunuuga i le Gitlab Registry. I totonu o le resitala e lua a matou faʻasalalauga faʻasalalauga eseese:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Pau lava le eseesega i le va o latou o le suiga i le faila JSON toe faafoi. Matou te faʻaogaina lenei talosaga e vaʻavaʻai i le faigofie e mafai ai po o le a le faʻamatalaga matou te fesoʻotaʻi ai.
Fale teufale tetele
I lenei turnip o le a matou faʻaogaina e ala i GitlabCI i Kubernetes, .gitlab-ci.yml foliga faapenei:
Manatua o le app-deploy e leʻo iai ni faʻataʻitaʻiga faʻamalamalamaina.
Faʻatinoina le faʻatulagaina muamua
Ina ia amata le faʻapipiʻiina muamua, e mafai ona e amataina le paipa GitlabCI ma le lima i luga o le paranesi matai. Pe 'a uma lena kubectl e tatau ona faʻaalia mea nei:
Ua tatou vaai app deployment with 10 replicas and app-canary with 0. E iai foʻi le LoadBalancer lea e mafai ona tatou maua mai ai curl e ala i fafo IP:
while true; do curl -s 35.198.149.232 | grep label; sleep 0.1; done
Matou te vaʻaia o la matou suʻega suʻega e naʻo le "v1".
Fa'atinoina o le fa'aogaina o Canary
Laasaga 1: faʻamalolo se faʻamatalaga fou mo nisi tagata faʻaoga
Matou te setiina le numera o kopi i le 1 i le faila deploy-canary.yaml ma le ata fou:
Matou te tuleia nei suiga i le faleoloa lea e amata ai le faʻapipiʻiina (e ala i GitlabCI) ma vaʻai i se taunuuga:
O la matou Au'aunaga o le a fa'asino atu i fa'agaioiga uma e lua, talu ai o lo'o i ai uma i la'ua le filifiliga o mea. Ona o le fa'aletonu o le fa'avasegaina o Kubernetes, e tatau ona tatou va'ai i tali eseese mo le ~ 10% o talosaga:
O le tulaga o loʻo i ai nei o la matou talosaga (GitOps, ave mai le Git e avea ma Punavai Tasi o le Upumoni) o le i ai o ni faʻaoga se lua ma faʻataʻitaʻiga faʻamalosi, tasi mo lomiga taʻitasi.
~ 10% o tagata faʻaoga e masani i se faʻamatalaga fou ma faʻataʻitaʻiina ma le le iloa. O le taimi lenei e siaki ai mea sese i totonu o ogalaau ma mataʻituina faʻamaumauga e suʻe ai faʻafitauli.
Laasaga 2: Faʻasaʻo le lomiga fou i tagata faʻaoga uma
Na matou filifili na sologa lelei mea uma ma o lea e manaʻomia ona matou faʻasalalau le lomiga fou i tagata uma. Ina ia faia lenei mea matou te faʻafouina deploy.yaml fa'apipi'i se fa'ailoga fou o le ata ma le numera o fa'atusa e tutusa ma le 10. I deploy-canary.yaml matou te setiina le numera o kopi i tua i le 0. A maeʻa le faʻapipiʻiina, o le taunuuga o le a faʻapea:
E tauaofai
Mo aʻu, o le faʻatinoina o le faʻaogaina ma le lima i lenei auala e fesoasoani e malamalama ai i le faigofie ona mafai ona faʻaogaina e faʻaaoga ai le k8s. Talu ai ona o le Kubernetes e faʻatagaina oe e faʻafouina mea uma e ala i se API, o nei laasaga e mafai ona otometi e ala i tusitusiga.
O le isi mea e manaʻomia ona faʻatinoina o le suʻega faʻailoga (LoadBalancer poʻo le Ingress) lea e naʻo le lomiga fou e mafai ona maua. E mafai ona fa'aoga mo su'esu'ega tusilima.
I tala i le lumana'i, o le a matou su'esu'eina isi fofo otometi e fa'atino ai le tele o mea na matou faia.