Canary แแแแแแแแแ แแ แแก แซแแแแแ แแคแแฅแขแฃแ แ แแแ แแฎแแแ แแแแแก แจแแกแแแแฌแแแแแแ แแแแฎแแแ แแแแแแ แฅแแแฏแแฃแคแแ. แแก แแแแจแแแแแแแแแ แแแชแแ แแแก แขแ แแคแแแแก แแแขแแแ แแแแก, แ แแแแแแช แจแแแซแแแแ แแงแแก แแ แแแแแแฃแ แ แแแแแแแแแแก แแ แแชแแกแจแ, แ แแแแแ แแก แฎแแแแ แแฎแแแแ แแแแแ แแขแฃแ แฅแแแฏแแฃแคแจแ. แแก แจแแแแจแแแ แแซแฆแแแแแ, แแฃ แ แแแแ แฃแแแ แแแแฌแงแแ แแกแแแ แแแแแแแแแ Kubernetes-แแก แแ แแแแแแแแแแก แแแขแแแแขแแแแชแแแก แแแแแงแแแแแแ. แฉแแแ แแแแ แแฃแแแแ, แ แแ แแฅแแแ แแชแแ แ แแฆแแช Helm แแ Kubernetes แ แแกแฃแ แกแแแแก แจแแกแแฎแแ.
แแแ แขแแแ แแแแแ แแก แแแแแแแแแ Kubernetes-แจแ แแแแชแแแก แแ แซแแ แแแแ แ แแกแฃแ แกแก: แแแแแ แกแแ แแแกแก แแ แแแแแแแแแแก แฎแแแกแแฌแงแแก. Canary-แแก แแแแแแแแแ แแฃแจแแแแก แแ แแ แกแแ แแแกแแก แกแแจแฃแแแแแแ, แ แแแแแแช แฃแ แแแแ แแฅแแแแแแก แแ แแแแกแฎแแแแแแฃแ แ แแกแฃแ แกแแแ, แ แแแแแแแช แแแกแแฎแฃแ แแแ แแแแแฎแแแแแก แขแ แแคแแแก. แแ แ แแกแฃแ แกแแแแแแ แแ แแ แแแฃแจแแแแแก โแแแแแ แแกโ แแแ แกแแแ, แฎแแแ แแแแ แ แแแฃแจแแแแแก แกแขแแแแแฃแ แแแ แกแแแกแแแ. แแ แกแแขแฃแแชแแแจแ, แฉแแแ แจแแแแแซแแแ แแแแแ แแแฃแแแ แแ แแแแแ แแก แแแ แกแแแแแก แ แแแแแแแแ, แ แแแ แจแแแแแชแแ แแ แแแแกแแฎแฃแ แแแแกแแแแก แกแแญแแ แ แขแ แแคแแแแก แ แแแแแแแแ. แแฃ, แแแแแแแแแ, แแแ แฉแแแแแแ Yaml-แแก แแแแแงแแแแแ, แแแจแแ 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.
แแแแแ แฃแคแ แ แแแแแแแ แแ แแแ แแแแขแแก แฌแแ แแแแแแแ kubectl-แแก แแแแแงแแแแแแ แแ in
แแแแแ แแก แแแแแแแแแแก แแแขแแแแขแแแแชแแ
แฃแแแ แแแแแก แงแแแแแกแ, แฉแแแ แแแญแแ แแแแ Helm chart แ แฃแแ, แ แแแแแแช แฃแแแ แแแแชแแแก แแ แ แแกแฃแ แกแแแก, แ แแแแแแแช แแแแแ แแแแแแฎแแแแ. แแก แฃแแแ แแแแแแงแฃแ แแแแแแก แแแแฎแแแแแแ แแกแ:
~/charts/app
โโโ Chart.yaml
โโโ README.md
โโโ templates
โ โโโ NOTES.txt
โ โโโ _helpers.tpl
โ โโโ deployment.yaml
โ โโโ service.yaml
โโโ values.yaml
Helm แแแแชแแคแชแแแก แกแแคแฃแซแแแแแ แแ แแแแ แแแ แกแแแก แแแแแจแแแแแก แแแ แแแ. แกแขแแแแแฃแ แ แแแ แกแแ แแ แแก แแ แแแฅแขแแก แแแแแก แฉแแแแ แแแแแแ แ แกแขแแแแแฃแ แ แคแแแแแแ. แแแแ แแ Helm-แแ แฉแแแ แจแแแแแซแแแ แแแแแแแงแแแแ แแแแแ แแก แแแแแจแแแแ แฉแแแแ แแฅแกแแแ แแแแแขแฃแแ แแแแแ. แแแแแแ แแ, แจแแแแ แฉแฃแแแแก แขแ แแคแแแแก แแแชแแแ แกแขแแแแแฃแ แแแ แกแแแกแ แแ แแแแแ แแก แแแแแจแแแแแก แจแแ แแก. แฉแแแ แแแแแฎแแ แฎแแแ แแ แงแแแแแคแแ แก แกแแแชแแแแฃแ แ แกแแแแฅแขแแ แแก แแแแแงแแแแแแ:
selector:
app.kubernetes.io/name: myapp
แฉแแแแ "แแแแแ แแก" แแ แกแขแแแแแฃแ แ แแแแแแแแแแก แ แแกแฃแ แกแแแ แแแฃแแแแแแก แแ แแขแแแแขแแ แแแแฃแแแแแ. แแฃ แงแแแแแคแแ แ แกแฌแแ แแ แแ แแก แแแแคแแแฃแ แแ แแแฃแแ, แแแจแแ แฉแแแแ Helm แกแฅแแแแก แ แฃแฅแแก แแแแแ แแก แแแ แกแแแก แแแแแแแแแแกแแก แแแแแแแฎแแแ, แ แแ แแแซแ แแแแ แแแแแ แแฃแแ แแฅแแแแ แแฎแแแ แแแแแแแแแฃแ แแแแฃแแแแแ. แแ แแ แซแแแแแแก แกแขแแแแแฃแ แ แแแ แกแแ แแกแ แแแแแแงแฃแ แแแ:
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
แแฎแแ แแแแแ แจแแแแแแฌแแแ แฉแแแแ แแแแแ แแก แแแแแจแแแแ. แแแแแ แแก แแแ แกแแแก แแแแแกแแงแแแแแแแ, แแ แ แ แแ แฃแแแ แแแแฎแกแแแแแก. แแแแแจแแแแแก แกแแฎแแแ แฃแแแ แแงแแก แแแแกแฎแแแแแแฃแแ, แ แแแ แแ แแแแแแแฅแแแงแแแ แแแแแฎแแแแ แแแแแแแแ แ แกแขแแแแแฃแ แแแ แกแแแแ. แแแ แกแแ แแ แขแแแ แแกแแแ แฃแแแ แแงแแก แแแแกแฎแแแแแแฃแแ, แ แแแ แฉแแแ แจแแแแแซแแแ แแแแแแแแแกแแ แกแฎแแ แแแแ แแ แแแแแแแแแแ แแแแกแฎแแแแแแแแ แ แแกแฃแ แกแแก แขแแแแแแ.
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
แฒกแฃแ แแก แแ แแก! แแฃ แกแแ แแแกแก แแแแแก แแแฃแแแแแแ, แฎแแแแแ, แ แแ แแแแแ แแก แแแแแฎแแแแ แแแ แจแ แฃแขแแแก แแฎแแแแ แแ แแแก แแแฌแแแ แแฎแแ แชแแแแแแก.
แแฃ แแซแแแ แแแแแแแแแแก แแแขแแแแขแแแแชแแแก แแแกแขแ แฃแแแแขแแแก, แ แแแแแแแช แจแแแชแแแก แแฆแฌแแ แแ แแแแแแแก, แแแจแแ แงแฃแ แแแฆแแแ แแแแฅแชแแแ
แฌแงแแ แ: www.habr.com