เจนเฉˆเจฒเจฎ เจจเจพเจฒ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจคเจฐเฉ€เจ•เจพ

เจนเฉˆเจฒเจฎ เจจเจพเจฒ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจคเจฐเฉ€เจ•เจพ

เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจ‰เจชเจญเฉ‹เจ—เจคเจพเจตเจพเจ‚ เจฆเฉ‡ เจธเจฌเจธเฉˆเฉฑเจŸ 'เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจ•เฉ‹เจก เจฆเฉ€ เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจฌเจนเฉเจค เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจคเจฐเฉ€เจ•เจพ เจนเฉˆเฅค เจ‡เจน เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจคเฉŒเจฐ 'เจคเฉ‡ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจœเฉ‹ เจ•เจฟ เจคเฉˆเจจเจพเจคเฉ€ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉŒเจฐเจพเจจ เจธเจฎเฉฑเจธเจฟเจ† เจตเจพเจฒเจพ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เจน เจธเจฟเจฐเจซ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเจฌเจธเฉˆเฉฑเจŸ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจจเฉ‹เจŸ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจ…เจคเฉ‡ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ…เจœเจฟเจนเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเฉฐเจ—เจ เจฟเจค เจ•เจฐเจจเจพ เจนเฉˆ เจ‡เจธ เจฒเจˆ เจธเจฎเจฐเจชเจฟเจค เจนเฉˆเฅค เจ…เจธเฉ€เจ‚ เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจนเฉˆเจฒเจฎ เจ…เจคเฉ‡ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจธเจฐเฉ‹เจคเจพเจ‚ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹.

เจนเฉˆเจฒเจฎ เจจเจพเจฒ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ…เจคเฉ‡ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจคเจฐเฉ€เจ•เจพ

เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฒเจˆ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจตเจฟเฉฑเจš เจฆเฉ‹ เจฎเฉเฉฑเจ– เจธเจฐเฉ‹เจค เจธเจผเจพเจฎเจฒ เจนเจจ: เจธเฉ‡เจตเจพ เจ–เฉเจฆ เจ…เจคเฉ‡ เจคเฉˆเจจเจพเจคเฉ€ เจŸเฉ‚เจฒเฅค เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจธเฉ‡เจตเจพ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจœเฉ‹ เจ…เฉฑเจชเจกเฉ‡เจŸ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเฉ€ เจธเฉ‡เจตเจพ เจ•เจฐเจจ เจตเจพเจฒเฉ‡ เจฆเฉ‹ เจตเฉฑเจ–-เจตเฉฑเจ– เจธเจฐเฉ‹เจคเจพเจ‚ เจจเจพเจฒ เจ‡เฉฐเจŸเจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจธเจฐเฉ‹เจคเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• "เจ•เฉˆเจจเจฐเฉ€" เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพ, เจ…เจคเฉ‡ เจฆเฉ‚เจœเจพ เจธเจฅเจฟเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ‡ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ…เจธเฉ€เจ‚ เจธเฉ‡เจตเจพ เจฒเจˆ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ€ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจฆเฉ€ เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃ เจฒเจˆ เจ•เฉˆเจจเจฐเฉ€ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจจเฉ‚เฉฐ เจจเจฟเจฏเฉฐเจคเฉเจฐเจฟเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจœเฉ‡, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจธเฉ€เจ‚ Yaml เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจชเจธเฉฐเจฆ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจตเจฟเฉฑเจš เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ:

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 เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธ เจตเจฟเจ•เจฒเจช เจฆเฉ€ เจ•เจฒเจชเจจเจพ เจ•เจฐเจจเจพ เจนเฉ‹เจฐ เจตเฉ€ เจ†เจธเจพเจจ เจนเฉˆ เจ•เฉเจฌเจฐเจจเฉ‡เจŸเจธ เจฆเจธเจคเจพเจตเฉ‡เจœเจผ เจ‡เจธ เจฆเฉเจฐเจฟเจธเจผ 'เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉ‚เจฐเจพ เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจตเฉ€ เจนเฉˆเฅค เจชเจฐ เจ‡เจธ เจชเฉ‹เจธเจŸ เจฆเจพ เจฎเฉเฉฑเจ– เจธเจตเจพเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ…เจธเฉ€เจ‚ เจนเฉˆเจฒเจฎ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจธเจตเฉˆเจšเจพเจฒเจค เจ•เจฐเจจ เจœเจพ เจฐเจนเฉ‡ เจนเจพเจ‚.

เจ•เฉˆเจจเจฐเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจฆเจพ เจธเจตเฉˆเจšเจพเจฒเจจ

เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚, เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจนเฉˆเจฒเจฎ เจšเจพเจฐเจŸ เจจเจ•เจธเจผเฉ‡ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ‰เจน เจธเจฐเฉ‹เจค เจธเจผเจพเจฎเจฒ เจนเจจ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจนเจจเฅค เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

~/charts/app
โ”œโ”€โ”€ Chart.yaml
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ templates
โ”‚   โ”œโ”€โ”€ NOTES.txt
โ”‚   โ”œโ”€โ”€ _helpers.tpl
โ”‚   โ”œโ”€โ”€ deployment.yaml
โ”‚   โ””โ”€โ”€ service.yaml
โ””โ”€โ”€ values.yaml

เจนเฉˆเจฒเจฎ เจธเฉฐเจ•เจฒเจช เจฆเจพ เจ†เจงเจพเจฐ เจฎเจฒเจŸเฉ€-เจตเจฐเจœเจจ เจฐเฉ€เจฒเฉ€เจœเจผเจพเจ‚ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจนเฉˆ. เจธเจฅเจฟเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจ•เฉ‹เจก เจฆเฉ€ เจธเจพเจกเฉ€ เจฎเฉเฉฑเจ– เจธเจฅเจฟเจฐ เจธเจผเจพเจ–เจพ เจนเฉˆเฅค เจชเจฐ เจนเฉˆเจฒเจฎ เจฆเฉ‡ เจจเจพเจฒ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ—เจพเจคเจฎเจ• เจ•เฉ‹เจก เจจเจพเจฒ เจ‡เฉฑเจ• เจ•เฉˆเจจเจฐเฉ€ เจฐเฉ€เจฒเฉ€เจœเจผ เจจเฉ‚เฉฐ เจคเฉˆเจจเจพเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค เจฎเฉเฉฑเจ– เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจธเจฅเจฟเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจ…เจคเฉ‡ เจ•เฉˆเจจเจฐเฉ€ เจฐเฉ€เจฒเฉ€เจœเจผ เจฆเฉ‡ เจตเจฟเจšเจ•เจพเจฐ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจเจ•เจธเจšเฉ‡เจ‚เจœ เจจเฉ‚เฉฐ เจ•เจพเจ‡เจฎ เจฐเฉฑเจ–เจฃเจพ. เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผ เจšเฉ‹เจฃเจ•เจพเจฐ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจธ เจธเจญ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจพเจ‚เจ—เฉ‡:

selector:
  app.kubernetes.io/name: myapp

เจธเจพเจกเฉ‡ "เจ•เฉˆเจจเจฐเฉ€" เจ…เจคเฉ‡ เจธเจฅเจฟเจฐ เจคเฉˆเจจเจพเจคเฉ€ เจธเจฐเฉ‹เจค เจฎเฉ‹เจกเจฟเจŠเจฒเจพเจ‚ 'เจคเฉ‡ เจ‡เจธ เจฒเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃเจ—เฉ‡เฅค เจœเฉ‡เจ•เจฐ เจธเจญ เจ•เฉเจ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเจพเจ‚ เจธเจพเจกเฉ‡ เจนเฉˆเจฒเจฎ เจšเจพเจฐเจŸ เจจเจ•เจธเจผเฉ‡ เจฆเฉ‡ เจ•เฉˆเจจเจฐเฉ€ เจธเฉฐเจธเจ•เจฐเจฃ เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉŒเจฐเจพเจจ เจ…เจธเฉ€เจ‚ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจ•เจฟ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจคเฉˆเจจเจพเจค เจฎเฉ‹เจกเฉ€เจŠเจฒเจพเจ‚ เจตเฉฑเจฒ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจฟเจค เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเจพ เจธเจฅเจฟเจฐ เจธเฉฐเจธเจ•เจฐเจฃ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจตเฉ‡เจ—เจพ:

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

เจ‡เจน เจธเจญ เจนเฉˆ! เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจชเจฟเฉฐเจ— เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจฆเฉ‡เจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ•เจฟ เจ•เฉˆเจจเจฐเฉ€ เจ…เฉฑเจชเจกเฉ‡เจŸ เจฐเฉ‚เจŸ เจŸเฉเจฐเฉˆเจซเจฟเจ• เจจเฉ‚เฉฐ เจธเจฟเจฐเจซ เจธเจฎเฉ‡เจ‚ เจฆเจพ เจนเจฟเฉฑเจธเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจกเจฟเจชเจฒเจพเจ‡เจฎเฉˆเจ‚เจŸ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจŸเฉ‚เจฒเจธ เจฆเฉ€ เจคเจฒเจพเจธเจผ เจ•เจฐ เจฐเจนเฉ‡ เจนเฉ‹ เจœเจฟเจธ เจตเจฟเฉฑเจš เจตเจฐเจฃเจฟเจค เจคเจฐเจ• เจธเจผเจพเจฎเจฒ เจนเฉˆ, เจคเจพเจ‚ เจงเจฟเจ†เจจ เจฆเจฟเจ“ เจกเจฟเจฒเฉ€เจตเจฐเฉ€เจฌเฉ‹เจŸ เจ…เจคเฉ‡ เจ‰เฉฑเจคเฉ‡ GitHub 'เจคเฉ‡ เจนเฉˆเจฒเจฎ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจŸเฉ‚เจฒ. เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ‡ เจขเฉฐเจ— เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจตเจฐเจคเฉ‡ เจ—เจ เจนเฉˆเจฒเจฎ เจšเจพเจฐเจŸ เจ—เจฟเจฅเจฌ 'เจคเฉ‡ เจนเจจ, เจ‡เฉฑเจฅเฉ‡ เจนเฉ€. เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจตเจฟเจธเจผเฉ‡เจธเจผ เจธเฉฐเจ•เจฒเจชเจพเจ‚ เจ…เจคเฉ‡ เจ‰เจฆเจพเจนเจฐเจฃเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจ…เจญเจฟเจ†เจธ เจตเจฟเฉฑเจš เจ•เฉˆเจจเจฐเฉ€ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจฆเฉ€ เจคเฉˆเจจเจพเจคเฉ€ เจฆเฉ‡ เจ†เจŸเฉ‹เจฎเฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ เจนเฉˆ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจ‡เฉฑเจ• เจธเจฟเจงเจพเจ‚เจคเจ• เจธเฉฐเจ–เฉ‡เจช เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเฉ€เฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹