ááŸááºáá»áẠáá¬áá¬ááŒááº- Weaveworks á០á€ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºááẠáá±áááºážá¡á á¬ážáá¯á¶áž á¡ááá®áá±ážááŸááºáž ááŒáá·áºáá»ááá±ážáá»á°áá¬áá»á¬ážááᯠááááºáááºáá±ážááŒá®áž Kubernetes Flagger á¡á±á¬áºááá±áá¬ááᯠá¡áá¯á¶ážááŒá¯á á¡ááá·áºááŒáá·áºáá¯á¶ážáá»á¬ážááᯠáááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºááŒá±á¬ááºáž ááŒááááºá áááºážááᯠááá¯ážááŸááºážáá±á¬áá¬áá¬á áá¬ážááŒáá·áº áá±ážáá¬ážáá¬ážááŒá®áž ááŒá¿áá¬ááᯠá¡ááœá±á·á¡ááŒá¯á¶áááŸááá±ážáá±á¬ á¡ááºáá»ááºáá®áá¬áá»á¬ážáááºáá»áŸáẠáá¬ážáááºááá¯ááºá á±ááá·áº áá¯ááºáá¯á¶áá¬ážáá»ááºáá»á¬ážáá«ááŸááááºá
á¡áá¯á០áá°áá¬ážáá¬
ááá±á·áá±ááºááœáẠcloud áá°áááºážá¡ááºááºáá®áá±ážááŸááºážáá»á¬áž áá±á¬áºáá±á¬ááºáá¬ááœáẠá¡ááŒá®ážáá¬ážáá¯á¶ážá áááºáá±á«áºááŸá¯áá»á¬ážáá²ááŸáá áºáá¯ááŸá¬ ááŒáá·áºáá»ááºááŸá¯ááᯠá¡ááŸáááºááŒáŸáá·áºááŒááºážááŒá áºáááºá microservices áá»ááºážáááºááŸá¯ááœááºá developer áá»á¬ážááẠááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬á¡ááœá²á·áá»á¬ážááᯠáá áºááŒáá¯ááºáááºáááºážáá¯ááºáá±ážáááºááŸáá·áº á¡ááºááºáá®áá±ážááŸááºážááᯠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŒá¯áá¯ááºááá¯ááºá á±ááá·áº áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬ážáá¯á¶á á¶á¡ááá®áá±ážááŸááºážáá»á¬ážááŸáá·áº áá®ááá¯ááºážáá±ážááœá²áá¬ážááŒá®ážááŒá áºáááºá
ááá¯ááá¯á áááŒá¬áá ááŒáá·áºáá»ááºááŒááºážááẠá¡á±á¬ááºáá« á¡áá»áá¯ážáá»á±ážáá°ážáá»á¬áž ááŸááááºá
- á á»á±ážááœááºáááºááá¯á· á¡áá»áááºá áá»á±á¬á·ááœá¬ážáááºá
- áááºáá±á¬ááºááŸá¯á¡áá áºáá»á¬ážááẠáá¯á¶ážá áœá²áá°áá»á¬ážáᶠááá¯ááŒááºá á±áááºá
- á¡áá¯á¶ážááŒá¯áá° á¡ááŒá¶ááŒá¯áá»ááºááẠááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážá¡ááœá²á·áᶠááá¯ááá¯ááŒááºáááºá áœá¬ áá±á¬ááºááŸááááºá ááá¯ááá¯áááºááŸá¬ á¡ááœá²á·ááẠáááºáá±á¬ááºááŸá¯áá»á¬ážááᯠáá±á«ááºážááá·áºááá¯ááºááŒá®áž ááŒá¿áá¬áá»á¬ážááᯠááá¯ááá¯áá»ááºááŒááºá áœá¬ ááŒá±ááŸááºážááá¯ááºáááºááŒá áºáááºá
- áá±á¬á·ááºáá²áá±ážáá¬ážáá° á áááºáá¬áẠááá¯ážáá¬áááº- ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠá¡ááºá¹áá«áááºáá»á¬áž ááá¯ááá¯áá«áááºááŒá®áž á¡áá¯ááºáá¯ááºááᬠááá¯áá»á±á¬áºá áá¬áá±á¬ááºážáá«áááºá
ááá¯á·áá±á¬áº áá¯ááºáá±ááŸá¯á¡ááŒáááºáá± ááá¯ážáá¬áááºááŸáá·áºá¡áá»áŸ á¡ááá®áá±ážááŸááºážá áá¯á¶ááŒááºá
áááºáá»áááŸá¯ ááá¯á·ááá¯áẠá¡áá¯á¶ážááŒá¯áá°á¡ááœá±á·á¡ááŒá¯á¶ááᯠááááá¯ááºá
á±ááá¯ááºááá·áº á¡ááœáá·áºá¡áááºážáá»á¬ážáááºáž ááá¯ážáá¬áá«áááºá ááá¯á·ááŒá±á¬áá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº DevOps á¡ááœá²á·áá»á¬ážááẠáá¯ááºáá¯ááºááŸáá·áº áá¯á¶ážá
áœá²áá°áá»á¬ážá¡ááœáẠá¡áá¹ááá¬ááºá¡áááºážáá¯á¶ážááŒá
áºá
á±áá±á¬ áááºážáááºážááŒáá·áº áá¯ááºáááºážá
ááºáá»á¬ážáááºáá±á¬ááºáᬠá¡áá¯á¶ážáá»ááŸá¯áá»á°áá¬áá»á¬ážááᯠá
á®áá¶ááá·áºááœá²ááẠá¡áá±ážááŒá®ážáá«áááºá (CI/CD ááá¯ááºááá¯ááºáž á¡ááá¯á¡áá»á±á¬ááºá
áá
áºá¡ááŒá±á¬ááºáž ááá¯ááá¯áá±á·áá¬ááá¯ááºáá«áááºá
á€ááá¯á·á áºááœááºá ááŒáá·áºáá»ááºáá»áá¬ážááŸá¯áá»á¬ážááŸáá·áº Canary ááŒáá·áºáá»áááŸá¯áá»á¬ážááŸáá·áº áááºážááá¯á·á ááœá²ááŒá¬ážááŸá¯áá»á¬ážáá²á·ááá¯á·áá±á¬ ááá¯ááá¯á¡ááá·áºááŒáá·áºááá·áºáááºážáááºážáá»á¬ážá¡áá«á¡ááẠKubernetes ááœáẠááŒáá·áºáá»ááºááŸá¯áá»á°áá¬á¡áá»áá¯ážáá»áá¯ážááᯠááœá±ážááœá±ážáá«áááºá
ááŒáá·áºáá»ááºáááºážáá»á°áá¬áá»á¬áž
ááá·áºáááºááŸááºážáá»ááºáá±á«áº áá°áááºá áááºá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº á¡áá¯á¶ážáá»ááŸá¯áá»á°áᬠá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá áœá¬ ááŸááá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáá±á¬ááºáááºá ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠá¡áá»áá¯á·áá±á¬áááºáááºážáá»ááºááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŒá¯áá¯ááºááẠááá¯á¡ááºááá¯ááºáááºá ááá¯á·ááá¯áẠá¡áá¯á¶ážááŒá¯áá°/áá±á¬ááºáááºáá»á¬ážá á¡á á¯á¡áá±ážááá¯á· ááŒá±á¬ááºážáá²ááẠááá¯á¡ááºááá¯ááºáááºá ááá¯á·ááá¯áẠá¡ááºá¹áá«áááºáá áºáá¯ááá¯ááºáá±á¬ááºáá®ááœáẠáááºááẠá¡ááá·áºá¡áááºááŸááá±á¬ á¡áá¯á¶ážááŒá¯áá°á ááºážáááºááŸá¯ááᯠááŒá¯áá¯ááºááẠááá¯á¡ááºááá¯ááºáááºá á¡áá»á¬ážáá°ááŸá¬.
Rolling (áááŒááºážááŒááºážá "ááŸááá·áº" ááŒáá·áºáá»ááºááŸá¯)
áááºážááẠKubernetes ááŸá á á¶ááŸá¯ááºážá¡áá¯á¶ážáá»ááŸá¯áá»á°áá¬ááŒá áºáááºá áááºážááẠá¡á á¯á¡áá±ážáááºáá¬ážáá»áááºáááŸááá² áá¬ážááŸááºážá¡áá áºááŒáá·áº á¡ááá®áá±ážááŸááºážááá¬ážááŸááºážáá±á¬ááºážááŸáá·áº ááœááºááºáá»á¬ážááᯠáá áºáá¯á¶ážááŒá®ážáá áºáá¯á¶áž ááŒááºážááŒááºážáá»ááºáž á¡á á¬ážááá¯ážáááºá
áá±á«á·ááºá¡áá
áºáá»á¬áž á¡áá¯ááºáá¯ááºááẠá¡áááºááá·áºááŒá
áºáááºá¡áá Kubernetes á
á±á¬áá·áºáá±ááẠ(áááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯á á
á
áºáá±ážáá±áááºá
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp
spec:
replicas: 3
template:
metadata:
labels:
app: awesomeapp
spec:
containers:
- name: awesomeapp
image: imagerepo-user/awesomeapp:new
ports:
- containerPort: 8080
á¡ááŸáá·áºá¡ááŒá±á¬ááºážááœááºážáá¶ááŸá¯ ááá·áºáááºáá»ááºáá»á¬ážááᯠáááºáá®ážáááºá áºááá¯ááºááœáẠáááºááŸááºááá¯ááºáááº-
spec:
replicas: 3
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
...
ááŒááºáááºáááºáá®ážáá«á
á€á¡ááá¯ážááŸááºážáá¯á¶áž á¡áá¯á¶ážáá»ááŸá¯ á¡áá»áá¯ážá¡á á¬ážááœáẠá¡á á±á·áá±á¬ááºážáá»á¬ážááᯠáá áºááŒáá¯ááºáááºáááºááŒá®áž á¡áá áºáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážáááº-
áááºá
ááºáá±á¬áºááŒáá»ááºááẠá€áá²á·ááá¯á· ááŒá
áºáááº-
spec:
replicas: 3
strategy:
type: Recreate
template:
...
á¡ááŒá¬/á¡á áááºáž (á¡ááŒá¬-á¡á áááºáž ááŒáá·áºáá»ááºááŸá¯áá»á¬áž)
á¡ááŒá¬-á áááºáž ááŒáá·áºáá»ááºááŸá¯áá»á°áᬠ(ááá«ááᶠá¡áá®/á¡ááẠááá¯á·áááºáž áá±á«áºáááº) ááẠá¡ááá®áá±ážááŸááºážá á¡áá±á¬ááºáž (á áááºáž) ááŸáá·áº á¡áá Ạ(á¡ááŒá¬) áá¬ážááŸááºážáá»á¬ážááᯠáááŒáá¯ááºááẠááŒáá·áºáá»ááºááŒááºáž áá«áááºáááºá áá¬ážááŸááºážááŸá áºáá»áá¯ážáá¯á¶ážááᯠááá¯á·á áºáááºááŒá®ážáá±á¬ááºá áá¯á¶ááŸááºá¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠá¡á áááºážáá±á¬ááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºááŒá®ážá á¡ááŒá¬ááẠQA á¡ááœá²á·á¡ááœáẠáá®ážááŒá¬ážáááºáá±á¬ááºááŸá¯ ááá¯á·ááá¯áẠááá¯ááºááá¯ááºááá¯á·ááºáááºááá·áºááŒááºážááŸáá áºááá·áº á ááºážáááºááŸá¯áá»á¬ážááᯠá¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááẠáááá¯ááºáá±á¬áºáááºážá
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: awesomeapp-02
spec:
template:
metadata:
labels:
app: awesomeapp
version: "02"
á¡ááŒá¬ (á¡áá áº) áá¬ážááŸááºážááᯠá ááºážáááºááŒá®áž áááºážá áá¯ááºáá±ááŸá¯ááᯠá¡áááºááŒá¯ááŒá®ážáá±á¬ááºá áááºáá±á¬ááºááŸá¯ááẠáááºážááá¯á· ááŒá±á¬ááºážááœá¬ážááŒá®áž á¡á áááºážáá±á¬áẠ(á¡áá±á¬ááºáž) áá¬ážááŸááºážááᯠáá±á«ááºááá¯ááºáááº-
apiVersion: v1
kind: Service
metadata:
name: awesomeapp
spec:
selector:
app: awesomeapp
version: "02"
...
Canary (áááá¹ááá®áááºáá»á¬áž)
Canary ááŒáá·áºáá»áááŸá¯áá»á¬ážááẠá
áááºážááŒá¬áá±á¬áẠááŒáá·áºáá»áááŸá¯áá»á¬ážááŸáá·áº áááºáá°áá±á¬áºáááºáž ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ ááááºážáá»á¯ááºááŸá¯ááŸáá·áº á¡áá¯á¶ážááŒá¯ááŸá¯ááŸááááºá
áá»á¬ážáá±á¬á¡á¬ážááŒáá·áº á¡ááá®áá±ážááŸááºážá áá±á¬ááºááœááºááœáẠáá¯ááºáá±á¬ááºáá»ááºá¡áá áºá¡áá»áá¯á·ááᯠá ááºážáááºááẠááá¯á¡ááºááá·áºá¡áá« á€áááºážáá»á°áá¬ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá áá»ááºážáááºááŸá¯á á¡ááŸá áºáá¬áááŸá¬ áá°áá®áá¯áá®ážáá«ážáá°áá®áá±á¬ áá¬áá¬ááŸá áºáá¯ááᯠáááºáá®ážáááºááŒá áºáááº- áá áºáá¯ááẠá¡áá¯á¶ážááŒá¯áá°á¡á¬ážáá¯á¶ážáá®ážáá«ážááᯠáá±á¬ááºááœááºáá±ážááŒá®ážá á¡ááŒá¬ážáá áºáá¯ááẠáá¯ááºáá±á¬ááºáá»ááºá¡áá áºáá»á¬ážááŒáá·áº áá¯á¶ážá áœá²áá°áá»á¬ážá á¡á¯ááºá á¯ááœá²áááºáá áºáá¯ááá¯áᬠáá¯ááºáá±á¬ááºáá±ážáááºá ááá¯á·áá±á¬áẠáááºážááá¯á·áá¡áá¯ááºáááááºáá»á¬ážááᯠááŸáá¯ááºážááŸááºáá«áááºá á¡áá¬á¡á¬ážáá¯á¶áž error áááºážááœá¬ážáá«áá áá¬ážááŸááºážá¡áá áºááẠá¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠáá áºáá¯áá¯á¶ážááá¯á· áááŒááºážááŒááºáž ááŒáá·áºáá»ááºááœá¬ážáááºááŒá áºáááºá
á€áááºážáá»á°áá¬ááᯠKubernetes áá¯á¶ážááŒá®áž áá®ážááá·áºá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºááŒá®áž á¡ááœááºáá±á¬ááºážáá»á¬ážááᯠá¡áá áºáá»á¬ážááŒáá·áº á¡á á¬ážááá¯ážááá¯ááºáá±á¬áºáááºáž Istio áá²á·ááá¯á· áááºáá±á¬ááºááŸá¯ mesh ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááẠááá¯ááá¯á¡áááºááŒá±ááŒá®áž ááá¯ááá¯ááá¯ážááŸááºážáá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºááœáẠGit ááœáẠááá°áá®áá±á¬ manifest ááŸá áºáá¯ááŸáááá¯ááºáááº- tag 0.1.0 ááŒáá·áº áá¯á¶ááŸáẠmanifest ááŸáá·áº tag 0.2.0 ááŸááá±á¬ canary manifest ááá¯á·ááŒá áºáááºá Istio virtual gateway manifest ááœáẠá¡áá±ážáá»áááºáá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážááŒáá·áºá áááºááẠá¡ááá¯áá« ááŒáá·áºáá»ááºááŸá¯ááŸá áºáá¯ááŒá¬áž áááºážááŒá±á¬ááºážááœá²áá±ááŸá¯ááᯠááááºážáá»á¯ááºááá¯ááºáááº-
Istio ááᯠá¡áá¯á¶ážááŒá¯á Canary ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠá¡ááá·áºááá·áºáááºážááœáŸááºáá»ááºááᯠááŒáá·áºáá«á
Weaveworks Flagger ááŒáá·áº Canary ááŒáá·áºáá»ááºááŸá¯áá»á¬áž
Flagger áá»á¬ážááẠáááºážááá¯á·ááŸáá·áº á¡áá¯ááºáá¯ááºáá«áááºá áááºážááẠá¡ááœá¬ážá¡áá¬áááºážááŒá±á¬ááºážááŒá±á¬ááºážááẠIstio ááá¯á·ááá¯áẠAWS App Mesh ááá¯á¡áá¯á¶ážááŒá¯áᬠááááºáá»á¬ážááá¯ááœá²ááŒááºážá áááºááŒá¬ááẠPrometheus áááºááá áºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯á·á¡ááŒááºá Canary ááŒáá·áºáá»ááºááŸá¯áá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒááºážááŒáá·áº áááºáá¶ááŸá¯á á áºáá±ážááŸá¯áá»á¬ážá load tests ááŸáá·áº á¡ááŒá¬ážá á áºáá±ážááŸá¯á¡áá»áá¯ážá¡á á¬ážáá»á¬ážááá¯áá¯ááºáá±á¬ááºááẠwebhooks áá»á¬ážááŒáá·áº ááŒáá·áºá áœááºááá¯ááºáá«áááºá
Kubernetes ááŒáá·áºáá»ááºááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á ááá¯á¡ááºáá«áá á¡áá»á¬ážááá¯áẠá¡áá»á¬ážááá¯áẠá¡ááá¯ááºážá¡áᬠ(HPA)á Flagger ááẠá¡áá¬ááá¹áá¯á¡á á¯á¶áá»á¬áž (Kubernetes ááŒáá·áºáá»ááºááŸá¯á ClusterIP áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº Istio ááá¯á·ááá¯áẠApp Mesh virtual áááºáá±á¬ááºááŸá¯áá»á¬áž) ááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž á¡áá±á¬ááºá¡áááºáá±á¬áºáááº-
ááááºážáá»á¯ááºááŸá¯ááœááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážá (ááááºážáá»á¯ááºááŸá¯ááœááºážáááº)áFlagger ááẠá¡á±á¬ááºááŒááºáá±á¬ HTTP áá±á¬ááºážááá¯ááŸá¯áá¬ááá¯ááºááŸá¯ááºážá áá»ááºážáá»áŸáá±á¬ááºážááá¯ááŸá¯ááŒá¬áá»áááºááŸáá·áº pod áá»ááºážáá¬áá±ážá
ááá·áº á¡ááá á
áœááºážáá±á¬ááºáááºáááºááá
áºáá»á¬ážááᯠáá
áºááŒáá¯ááºááẠááá¯ááºážáá¬áá±áá»áááºááœáẠáFlagger ááẠá¡ááœá¬ážá¡áá¬ááᯠCanary áá¬áá¬ááá¯á· áááŒááºážááŒááºážááŒá±á¬ááºážáá±ážáá«áááºá KPI (Key Performance Indicators) ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á Canary ááẠááŒá®ážááœá¬ážááẠááá¯á·ááá¯áẠááŒáá¯áá»ááŒá®áž ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯ááááºáá»á¬ážááᯠSlack ááœáẠáá¯ááºááŒááºáá¬ážáááºá á€áá¯ááºáááºážá
ááºá áá±á¬áºááŒáá»ááºááŸáá·áº ááá¯ááºááŒáá»ááºááᯠá¡ááŒá±á¬ááºážá¡áá¬ááœáẠááœá±á·ááá¯ááºáá«áááºá
á¡ááŸá±á¬áẠ(ááŸááºáá¬ážáááº) ááá¯á·ááá¯áẠA/B ááŒáá·áºáá»ááºááŸá¯áá»á¬áž
Stealth deployment ááẠCanary áá»á°áá¬á á¡ááŒá¬ážáá±á¬ ááœá²ááŒá¬ážááŸá¯ááŒá áºááẠ(ááá¯á·á¡áá° Flagger ááŸáá·áºáááºáž áá¯ááºáá±á¬ááºááá¯ááºáááº)á ááá¯ááºáá»á±á¬áẠááŸáá·áº áááá¹ááá® ááŒáá·áºáá»ááºááŸá¯ á¡ááŒá¬áž ááŒá¬ážáá¬ážáá»ááºááŸá¬ áááá¹ááá® ááŒáá·áºáá»ááºááŸá¯áá»á¬ážáá²á·ááá¯á· áá±á¬ááºááœááºá០ááá¯ááºáá² ááá¯ááºáá»á±á¬áẠááŒáá·áºáá»ááºááŸá¯áá»á¬ážááẠááŸá±á·áááºážááŸáá·áº áááºáá¶ááŒááºáž ááŒá áºáááºá
á€ááŒáá·áºáá»ááºááŸá¯á¡ááœáẠá¡ááŒá¬ážá¡áááºááŸá¬ A/B á ááºážáááºááŒááºáž ááŒá áºáááºá á¡áá¯á¶ážááŒá¯áá°á¡á¬ážáá¯á¶ážá¡ááœáẠáááºáá±á¬ááºááŸá¯á¡áá áºááᯠáááŸáá á±ááá·áºá¡á á¬áž áááºážááá¯á·áá²á០á¡ááá·áºá¡áááºááŸááá±á¬ á¡á áááºá¡ááá¯ááºážááá¯áᬠáááºážááŸááºážáá¬ážáááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá á€á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáááºážááá¯á·ááẠááŸá±á·áá±á¬ááºá ááºážáááºáá°áá»á¬ážááŒá áºááŒá±á¬ááºáž (ááá¯á·ááŒá±á¬áá·áº "ááá¯ááºáá»á±á¬ááºá¡áá¯á¶ážááŒá¯ááŸá¯" áá°áá±á¬á¡áá¯á¶ážá¡ááŸá¯ááºáž)á
áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááá¯ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá (á¡ááºá¹áá«áááºááŒá±á¬ááºážáááº) ááŸáá·áº á¡ááŒá¬ážáááááá¬áá»á¬áž á á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠá¡ááºá¹áá«áááºá¡áá áºááŸáá·áº áááºáá²á·ááá¯á· áá¯á¶á·ááŒááºáá¯á¶á áááºážááŸáá·áº áá»áááºáááºáá¬ážáááºááŒá áºá á± ááá¯á·ááá¯áẠá¡áá¯á¶ážááŒá¯áá° á¡ááºáá¬áá±á·á áºá¡áá áºááᯠááŸá¯ááºááœá±ážá á±ááŒááºáž ááŸááááŸá ááŸáá·áº á¡ááŒá¬ážáá±á¬ áááºááá áºá¡áá»áá¯ážá¡á á¬ážáá»á¬ážááᯠáááºá á±á¬áá·áºááŒáá·áºááá¯ááºáá«áááºá
Flagger ááŸáá·áº A/B ááŒáá·áºáá»ááºááŸá¯áá»á¬áž
á¡áá±ážáá»áááºá¡ááŒá±áá¶áááºážááŒá±á¬ááºážáááºááŸááºááŒááºážá¡ááŒááºá Flagger ááẠHTTP áá±á¬ááºáá»á¬ážááá¯á¡ááŒá±áá¶á Canary áá¬áá¬ááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážááá¯ááºáááºá A/B á ááºážáááºááŸá¯ááœááºá áááºááẠáá¯á¶ážá áœá²áá°áá»á¬ážá á¡á áááºá¡ááá¯ááºážáá áºáá¯ááᯠáá áºááŸááºáá¬ážááẠHTTP áá±á«ááºážá á®ážáá»á¬áž ááá¯á·ááá¯áẠááœááºáá®ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áá¬áá¬ááá¯á· session binding ááá¯á¡ááºáá±á¬ frontend applications áá»á¬ážááœáẠá¡áá°ážáááŒáá·áº áááºážááẠáááá±á¬ááºáááºá (áááºááŸááºáááºá ááºááŸá¯). áá±á¬ááºáááºá¡áá»ááºá¡áááºáá»á¬ážááᯠFlagger documentation ááœáẠááœá±á·ááá¯ááºáá«áááºá
á
á¬áá±ážáá°á áá»á±ážáá°ážáááºááŒá±á¬ááºáž áá±á¬áºááŒáá«áááºá
PS áá¬áá¬ááŒááºááŸ
áá»áœááºá¯ááºááá¯á·áááá±á¬á·ááºááœááºáááºážáááºáá«
- «
Kubernetes á¡ááœáẠIngress ááááºážáá»á¯ááºáááááá¬áá»á¬ážá ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºááŸáá·áº ááŸáá¯ááºážááŸááºáá»áẠ"; - «
werf - Kubernetes ááŸá CI/CD á¡ááœáẠáá»áœááºá¯ááºááá¯á·ááááááᬠ(ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºááŸáá·áº áá®áá®ááá¯á¡á á®áááºáá¶á á¬) "; - «
werf ááŸáá·áº GitLab CI ááŒáá·áº á¡áá»áá¯ážá¡á á¬ážáá° microservices áá»á¬ážááᯠáááºáá±á¬ááºááŒá®áž á¡áá¯á¶ážáá»áá«á "; - «
GitOps ááá¯áá¬áá¬áá²á "á
source: www.habr.com