ื“ืจืš ืคืฉื•ื˜ื” ื•ืžืื•ื‘ื˜ื—ืช ืœื”ืคื•ืš ืคืจื™ืกื•ืช ืงื ืจื™ื•ืช ืœืื•ื˜ื•ืžื˜ื™ื•ืช ืขื Helm

ื“ืจืš ืคืฉื•ื˜ื” ื•ืžืื•ื‘ื˜ื—ืช ืœื”ืคื•ืš ืคืจื™ืกื•ืช ืงื ืจื™ื•ืช ืœืื•ื˜ื•ืžื˜ื™ื•ืช ืขื Helm

ืคืจื™ืกื” ืงื ืจื™ืช ื”ื™ื ื“ืจืš ื™ืขื™ืœื” ืžืื•ื“ ืœื‘ื“ื•ืง ืงื•ื“ ื—ื“ืฉ ืขืœ ืชืช-ืงื‘ื•ืฆื” ืฉืœ ืžืฉืชืžืฉื™ื. ื–ื” ืžืคื—ื™ืช ื‘ืื•ืคืŸ ืžืฉืžืขื•ืชื™ ืืช ืขื•ืžืก ื”ืชืขื‘ื•ืจื” ืฉื™ื›ื•ืœ ืœื”ื™ื•ืช ื‘ืขื™ื™ืชื™ ื‘ืžื”ืœืš ืชื”ืœื™ืš ื”ืคืจื™ืกื”, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืžืชืจื—ืฉ ืจืง ื‘ืชื•ืš ืชืช-ืงื‘ื•ืฆื” ืกืคืฆื™ืคื™ืช. ื”ืขืจื” ื–ื• ืžื•ืงื“ืฉืช ื›ื™ืฆื“ ืœืืจื’ืŸ ืคืจื™ืกื” ื›ื–ื• ื‘ืืžืฆืขื•ืช Kubernetes ื•ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืคืจื™ืกื”. ืื ื• ืžื ื™ื—ื™ื ืฉืืชื” ื™ื•ื“ืข ืžืฉื”ื• ืขืœ ืžืฉืื‘ื™ Helm ื•-Kubernetes.

ื“ืจืš ืคืฉื•ื˜ื” ื•ืžืื•ื‘ื˜ื—ืช ืœื”ืคื•ืš ืคืจื™ืกื•ืช ืงื ืจื™ื•ืช ืœืื•ื˜ื•ืžื˜ื™ื•ืช ืขื Helm

ืคืจื™ืกื” ืงื ืจื™ืช ืคืฉื•ื˜ื” ืœ-Kubernetes ื›ื•ืœืœืช ืฉื ื™ ืžืฉืื‘ื™ื ืžืจื›ื–ื™ื™ื: ื”ืฉื™ืจื•ืช ืขืฆืžื• ื•ื›ืœื™ ื”ืคืจื™ืกื”. ืคืจื™ืกื” ืงื ืจื™ืช ืคื•ืขืœืช ื‘ืืžืฆืขื•ืช ืฉื™ืจื•ืช ื™ื—ื™ื“ ื”ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืฉื ื™ ืžืฉืื‘ื™ื ืฉื•ื ื™ื ื”ืžืฉืจืชื™ื ืชืขื‘ื•ืจืช ืขื“ื›ื•ื ื™ื. ืื—ื“ ื”ืžืฉืื‘ื™ื ื”ืœืœื• ื™ืขื‘ื•ื“ ืขื ื”ื’ืจืกื” "ืงื ืจื™ืช", ื•ื”ืฉื ื™ ื™ืขื‘ื•ื“ ืขื ื”ื’ืจืกื” ื”ื™ืฆื™ื‘ื”. ื‘ืžืฆื‘ ื–ื”, ื ื•ื›ืœ ืœื•ื•ืกืช ืืช ืžืกืคืจ ื”ื’ืจืกืื•ืช ื”ืงื ืจื™ื•ืช ืขืœ ืžื ืช ืœื”ืคื—ื™ืช ืืช ื›ืžื•ืช ื”ืชื ื•ืขื” ื”ื ื“ืจืฉืช ืœืฉืจืช. ืื, ืœืžืฉืœ, ืืชื” ืžืขื“ื™ืฃ ืœื”ืฉืชืžืฉ ื‘-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, ื•ื›ืŸ ื‘ ืชื™ืขื•ื“ Kubernetes ื™ืฉ ืืคื™ืœื• ื”ื“ืจื›ื” ืžืœืื” ืขืœ ืชืจื—ื™ืฉ ื–ื”. ืื‘ืœ ื”ืฉืืœื” ื”ืขื™ืงืจื™ืช ืฉืœ ื”ืคื•ืกื˜ ื”ื–ื” ื”ื™ื ืื™ืš ืื ื—ื ื• ื”ื•ืœื›ื™ื ืœื”ืคื•ืš ืืช ื”ืชื”ืœื™ืš ื”ื–ื” ืœืื•ื˜ื•ืžื˜ื™ ื‘ืืžืฆืขื•ืช Helm.

ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืคืจื™ืกืช ืงื ืจื™ืช

ืงื•ื“ื ื›ืœ, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืžืคืช ืชืจืฉื™ื Helm, ืฉื›ื•ืœืœืช ื›ื‘ืจ ืืช ื”ืžืฉืื‘ื™ื ืฉื“ื™ื‘ืจื ื• ืขืœื™ื”ื ืœืžืขืœื”. ื–ื” ืืžื•ืจ ืœื”ื™ืจืื•ืช ื‘ืขืจืš ื›ืš:

~/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

ื–ื” ื”ื›ืœ! ืื ืืชื” ืคื™ื ื’ ืœืฉื™ืจื•ืช, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืฉื”ืขื“ื›ื•ืŸ ื”ืงื ืจื™ ืžื ืชื‘ ืชื ื•ืขื” ืจืง ื—ืœืง ืžื”ื–ืžืŸ.

ืื ืืชื ืžื—ืคืฉื™ื ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืคืจื™ืกื” ื”ื›ื•ืœืœื™ื ืืช ื”ื”ื™ื’ื™ื•ืŸ ื”ืžืชื•ืืจ, ืฉื™ืžื• ืœื‘ Deliverybot ื• - ื›ืœื™ ืื•ื˜ื•ืžืฆื™ื” ืฉืœ Helm ื‘-GitHub. ืชืจืฉื™ืžื™ ื”ื”ื’ื” ื”ืžืฉืžืฉื™ื ืœื™ื™ืฉื•ื ื”ืฉื™ื˜ื” ื”ืžืชื•ืืจืช ืœืขื™ืœ ื ืžืฆืื™ื ื‘-Github, ื›ืืŸ. ื‘ืื•ืคืŸ ื›ืœืœื™, ื–ื• ื”ื™ื™ืชื” ืกืงื™ืจื” ืชื™ืื•ืจื˜ื™ืช ืฉืœ ืื™ืš ืœื™ื™ืฉื ืื•ื˜ื•ืžืฆื™ื” ืฉืœ ืคืจื™ืกื” ืฉืœ ื’ืจืกืื•ืช ืงื ืจื™ื•ืช ื‘ืคื•ืขืœ, ืขื ืžื•ืฉื’ื™ื ื•ื“ื•ื’ืžืื•ืช ืกืคืฆื™ืคื™ื•ืช.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”