Pẹlu ilana Canary, awọn imudojuiwọn ni a kọkọ lo si ipin awọn olumulo nikan. Nipasẹ ibojuwo, data log, idanwo afọwọṣe, tabi awọn ikanni esi miiran, idasilẹ jẹ idanwo ṣaaju ki o to tu silẹ si gbogbo awọn olumulo.
Ifilọlẹ Kubernetes (imudojuiwọn yiyi)
Ilana aiyipada fun Imuṣiṣẹ Kubernetes jẹ imudojuiwọn-yiyi, nibiti nọmba kan ti awọn adarọ-ese ti ṣe ifilọlẹ pẹlu awọn ẹya tuntun ti awọn aworan. Ti wọn ba ṣẹda laisi awọn iṣoro, awọn adarọ-ese pẹlu awọn ẹya atijọ ti awọn aworan ti pari, ati pe awọn adarọ-ese tuntun ti ṣẹda ni afiwe.
GitOps
A lo GitOps ni apẹẹrẹ yii nitori awa:
lilo Git gẹgẹbi orisun otitọ kan
a lo Awọn iṣẹ Git fun kikọ ati imuṣiṣẹ (ko si awọn aṣẹ miiran ju git tag/dapọ ni a nilo)
Apeere:
Jẹ ki a ṣe adaṣe to dara - lati ni ibi ipamọ kan fun koodu ohun elo ati ọkan fun awọn amayederun.
Ibi ipamọ ohun elo
Eyi jẹ Python + Flask API ti o rọrun pupọ ti o da esi pada bi JSON. A yoo kọ package nipasẹ GitlabCI ati Titari abajade si Iforukọsilẹ Gitlab. Ninu iforukọsilẹ a ni awọn ẹya itusilẹ oriṣiriṣi meji:
wuestkamp/k8s-deployment-example-app:v1
wuestkamp/k8s-deployment-example-app:v2
Iyatọ laarin wọn nikan ni iyipada ninu faili JSON ti o pada. A lo ohun elo yii lati wo ni irọrun bi o ti ṣee ṣe iru ẹya ti a n ba sọrọ.
Ibi ipamọ ohun elo
Ninu turnip yii a yoo ran lọ nipasẹ GitlabCI si Kubernetes, .gitlab-ci.yml dabi eleyi:
A Titari awọn ayipada wọnyi si ibi ipamọ lati eyiti imuṣiṣẹ yoo bẹrẹ (nipasẹ GitlabCI) ati rii bi abajade:
Iṣẹ wa yoo tọka si awọn imuṣiṣẹ mejeeji, nitori awọn mejeeji ni yiyan ohun elo. Nitori aileto aiyipada Kubernetes, a yẹ ki o rii awọn idahun oriṣiriṣi fun ~ 10% ti awọn ibeere:
Ipo lọwọlọwọ ti ohun elo wa (GitOps, ti a mu lati Git bi Orisun Otitọ Nikan) jẹ niwaju awọn imuṣiṣẹ meji pẹlu awọn ẹda ti nṣiṣe lọwọ, ọkan fun ẹya kọọkan.
~ 10% ti awọn olumulo di faramọ pẹlu ẹya tuntun ati idanwo aimọkan. Bayi ni akoko lati ṣayẹwo fun awọn aṣiṣe ninu awọn àkọọlẹ ati ibojuwo data lati wa isoro.
Igbesẹ 2: Tu ẹya tuntun si gbogbo awọn olumulo
A pinnu pe ohun gbogbo lọ daradara ati bayi a nilo lati yi ẹya tuntun jade si gbogbo awọn olumulo. Lati ṣe eyi a nìkan imudojuiwọn deploy.yaml fifi titun kan ti ikede ti awọn aworan ati awọn nọmba ti replicas dogba si 10. Ni deploy-canary.yaml a ṣeto nọmba awọn ẹda pada si 0. Lẹhin imuṣiṣẹ, abajade yoo jẹ bi atẹle:
Summing soke
Fun mi, ṣiṣe imuṣiṣẹ pẹlu ọwọ ni ọna yii ṣe iranlọwọ lati ni oye bi o ṣe le ni irọrun ti o le tunto nipa lilo k8s. Niwọn igba ti Kubernetes gba ọ laaye lati ṣe imudojuiwọn ohun gbogbo nipasẹ API, awọn igbesẹ wọnyi le ṣe adaṣe nipasẹ awọn iwe afọwọkọ.
Ohun miiran ti o nilo lati ṣe imuse ni aaye titẹsi oluyẹwo (LoadBalancer tabi nipasẹ Ingress) nipasẹ eyiti ẹya tuntun nikan le wọle si. O le ṣee lo fun lilọ kiri ayelujara pẹlu ọwọ.
Ninu awọn nkan iwaju, a yoo ṣayẹwo awọn ojutu adaṣe adaṣe miiran ti o ṣe pupọ julọ ohun ti a ti ṣe.