Ho tsamaisoa ha Canary ke mokhoa o sebetsang haholo oa ho lekola khoutu e ncha ho sehlopha sa basebelisi. E fokotsa haholo mojaro oa sephethephethe o ka bang mathata nakong ea ts'ebetso ea ho romelloa, kaha e etsahala feela ka har'a karolo e itseng. Lethathamo lena le nehetsoe mabapi le mokhoa oa ho hlophisa thomello e joalo ho sebelisoa Kubernetes le deployment automation. Re nahana hore o tseba ho hong ka lisebelisoa tsa Helm le Kubernetes.
Tšebeliso e bonolo ea canary ho Kubernetes e kenyelletsa lisebelisoa tse peli tsa bohlokoa: tšebeletso ka boeona le sesebelisoa sa ho tsamaisa. Ho tsamaisoa ha Canary ho sebetsa ka ts'ebeletso e le 'ngoe e sebelisanang le lisebelisoa tse peli tse fapaneng tse fanang ka sephethephethe sa ntlafatso. E 'ngoe ea lisebelisoa tsena e tla sebetsa le phetolelo ea "canary",' me ea bobeli e tla sebetsa ka mokhoa o tsitsitseng. Boemong bona, re ka laola palo ea liphetolelo tsa canary ho fokotsa palo ea sephethephethe se hlokahalang ho sebeletsa. Haeba, ka mohlala, u khetha ho sebelisa Yaml, e tla shebahala tjena ho Kubernetes:
kind: Deployment
metadata:
name: app-canary
labels:
app: app
spec:
replicas: 1
...
image: myapp:canary
---
kind: Deployment
metadata:
name: app
labels:
app: app
spec:
replicas: 5
...
image: myapp:stable
---
kind: Service
selector:
app: app # Selector will route traffic to both deployments.
Ho bonolo le ho feta ho nahana ka khetho ena u sebelisa kubectl, le ho
Automation ea ho tsamaisoa ha canary
Pele ho tsohle, re hloka 'mapa oa chate ea Helm, e seng e kenyelletsa lisebelisoa tseo re li tšohlileng ka holimo. E lokela ho shebahala tjena:
~/charts/app
├── Chart.yaml
├── README.md
├── templates
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── deployment.yaml
│ └── service.yaml
└── values.yaml
Motheo oa mohopolo oa Helm ke taolo ea litokollo tsa mefuta e mengata. Phetolelo e tsitsitseng ke lekala la rona le ka sehloohong le tsitsitseng la khoutu ea morero. Empa ka Helm re ka sebelisa tokollo ea canary ka khoutu ea rona ea liteko. Ntho e ka sehloohong ke ho boloka phapanyetsano ea sephethephethe pakeng tsa phetolelo e tsitsitseng le ho lokolloa ha canary. Re tla laola tsena tsohle re sebelisa khetho e khethehileng:
selector:
app.kubernetes.io/name: myapp
Lisebelisoa tsa rona tsa "canary" le tse tsitsitseng tsa ho tsamaisa li tla bontša lengolo lena ho li-module. Haeba ntho e 'ngoe le e' ngoe e hlophisitsoe ka nepo, joale nakong ea ho tsamaisoa ha mofuta oa canary oa 'mapa oa rona oa chate ea Helm re tla bona hore sephethephethe se tla lebisoa ho li-module tse sa tsoa sebelisoa. Mofuta o tsitsitseng oa taelo ena o tla shebahala tjena:
helm upgrade
--install myapp
--namespace default
--set app.name=myapp # Goes into app.kubernetes.io/name
--set app.version=v1 # Goes into app.kubernetes.io/version
--set image.tag=stable
--set replicaCount=5
Joale a re hlahlobeng tokollo ea rona ea canary. Ho tsamaisa mofuta oa canary, re hloka ho hopola lintho tse peli. Lebitso la tokollo le tlameha ho fapana e le hore re se ke ra hlahisa ntlafatso ea mofuta o tsitsitseng oa hajoale. Mofuta le tag le tsona li tlameha ho fapana e le hore re ka sebelisa khoutu e 'ngoe le ho tseba phapang ka li-tag tsa lisebelisoa.
helm upgrade
--install myapp-canary
--namespace default
--set app.name=myapp # Goes into app.kubernetes.io/name
--set app.version=v2 # Goes into app.kubernetes.io/version
--set image.tag=canary
--set replicaCount=1
Ke phetho! Haeba u penya ts'ebeletso, u ka bona hore sephethephethe sa ntlafatso ea canary ke karolo ea nako feela.
Haeba u batla lisebelisoa tsa automation tsa deployment tse kenyelletsang logic e hlalositsoeng, ela hloko
Source: www.habr.com