ื ืชืืื ืืช ืืืืื ืฉืื ื ืขื ืคืจืกืืืื ืืืืืกืกืื ืขื ืื ืืืืื ืืืืจืื ืื ืฉื ืืื ืื ืืืื ื ืฉืื ื
31 ืืืื ืืื ืก
ืื ืืฉ ืื ืืืืื ืืช ืืืืืช ืฉืขื
ืืฉืืื ืจืฆืืฃ ืขื Docker
ืชืืช ืืฉืืื ืจืฆืืฃ ืื ื ืืืื ืื ืืช ืฉืจืฉืจืช ืืืืจืืขืื ืฉืืชืืฆืื ืืื ื ืงืื ืืืคืืืงืฆืื ืืืืืจ Git ืืืืข ืืจืืฉืื ื ืืืืฆืืจ, ืืืืืจ ืืื ืืืืข ืืืจืืืื. ืืื ื ืจืืืช ืื: Git โ Build โ Test โ Release โ Operate.
ืจืื ืืื"ื ืืืงืืฉ ืืฉืื ืืื ืืื (ืืจืืืช ืืคืืืงืฆืื), ืืื ืืฉืืื ืืืฉืืืจืจืื ืืืืคืขืื ื ืืขืื ืืงืฆืจื. ื ืืืจ ืขื ืืขืืืช ืืืคืืกืื ืืืืคืฉืจืื ืื ืืคืชืืจ ืืืชื, ืืืืืฉืื ืืกืคืฆืืคื ืฉื ืืคืืกืื ืืื ืขืฉืืืื ืืืืืช ืฉืื ืื.
ืืื ืฆืจืื ืืืงืจ ืืื ืืืื? ืื ืืืื ืืืืื ื ืืืืจ ืขื ื ืืืื ืืฉืืื ืืชืืฉื ืืืงืฉืจ ืฉื ืืื ืืงืื ืืคืชืื ืืื. ืืืจืืช ืฉืืืื ืืืื ืืืงืืฉ ืืฉืืืืฉ ืื, ืกืืืืช ืจืืืช ื ืืฉืคืืช ืืืฉืจ ืืืื ืื ืืช ืืืคืืก ืืขืืงืจื ืฉื ืืฉืงืช ืงืื ืืืฉืืืื.
ืืคืืก ืคืจืืกื ืจืืฉื
ืืื, ืืืฉืจ ืื ื ืืืฆืืืื ืืจืกืืืช ืืืฉืืช ืฉื ืืืคืืืงืฆืื, ืื ื ืืืืื ืืชืืืืืื ืขื ืืขืื ืืืื ืืฉืืชื, ืฉื ืืฆืจ ืืืืื ืืืขืืจ ืฉื ืฉืจืช ืืืืฆืืจ. ืชื ืืขื ืืืืจืกื ืืืฉื ื ืฉื ืืืคืืืงืฆืื ืืืจืกื ืืืืฉื ืืื ื ืืืืื ืืขืืืจ ืืืืคื ืืืืื: ืจืืฉืืช ืขืืื ื ืืืืื ืฉืืืจืกื ืืืืฉื ืื ืจืง ืืืจืื ืืืฆืืื, ืืื ืื "ืืชืืืืช" (ืืืืืจ, ืืืื ื ืืืืืืื ืืืืฉืช ืืงืฉืืช).
ืืคืืื, ืืืฉื ืืื ืื ืฉืชื ืืืจืกืืืช ืฉื ืืืคืืืงืฆืื (ืืฉื ืืช ืืืืฉืืช) ืืคืขืื ืื ืืื ืืช. ืื ืฉืืืืื ืืืืืืืืช ื ืืชื ืืฉืืช ืืฉืืืื ืืฉืืชืคืื: ืจืฉืช, ืืขืจืืช ืงืืฆืื, IPC ืืื'. ืขื Docker, ืืขืื ืื ื ืคืชืจืช ืืงืืืช ืขื ืืื ืืคืขืืช ืืจืกืืืช ืฉืื ืืช ืฉื ืืืคืืืงืฆืื ืืงืื ืืืื ืจืื ื ืคืจืืื, ืฉืขืืืจื ืืืืื ืืืืื ืืฉืืืื ืืชืื ืืืชื ืืืจื (ืฉืจืช/ืืืื ื ืืืจืืืืืืช). ืืืืื ืฉืืคืฉืจ ืืืกืชืืจ ืขื ืืื ืืจืืงืื ืืื ืืืืื ืืืื, ืืื ืื ืืฉ ืืื ืืืื ืื ืื, ืื ืืฉ ืกืืื ืืคืืื - ืื ืืืื ืื ืืืชื.
ืืืืืืืช ืืกืคืงืช ืืชืจืื ืืช ืจืืื ืืืจืื ืืขืช ืคืจืืกื. ืื ืืืฉืื ืชืืื ืืจืกื ืกืคืฆืืคืืช (ืื ืืืื ืืจืกืืืช) ืึฐืชืึผืจืึฐืึธื, ืืืื ืืช ืืืืืืื/ืืจืืืืช ืืื', ืืื ืื ืืจืกืืืชืืื. ืืื ืื ืื ืจืง ืขื ืกืืืืช ืืืคืขืื ืืืืืืืช, ืืื ืื ืขื ืืกืืืื ืืืื, ืืืื ืชืืื ืช ืืขืจืืช ืืืืจืกื ืฉืื (ืขื ืืคืฆืช ืืื ืืงืก ืืฉืืืืฉ). ืืฉื ืืขืืืื ืฉืืืืืืช ืืืืืืช ืื ืจืง ืงืื ืืืฉืื, ืืื ืื ืืขืจืืช ืืชืืื ืช ืืืฉืื ืืืชืงื ืืช ืืจืืฉ ืฉื ืืืจืกืืืช ืื ืืจืฉืืช, ืืชื ืืืื ืืฉืืื ืืืขืืืช ืขื ืชืืืช.
ืืืื ื ืขืฉื ืืืืื ืืคืืก ืืืฉืงื ืืจืืฉื ืืจืกืืืช ืืืฉืืช ืชืื ืืชืืฉืืืช ืืืืจืืื ืืืืื:
- ืืืชืืื, ืืืจืกื ืืืฉื ื ืฉื ืืืคืืืงืฆืื ืคืืขืืช ืืืืื ืืจืืฉืื.
- ืืืืจ ืืื ืืืืืืื ืืช ืืืจืกื ืืืืฉื ื"ืืชืืืืื" ืืืืื ืฉื ื. ืจืืื ืืฆืืื ืื ืืจืกื ืืืฉื ืื ืขืฆืื ืขืฉืืื ืืฉืืช ืื ืจืง ืงืื ืืืฉืื ืืขืืืื, ืืื ืื ืื ืืชืืืช ืฉืื, ืืื ืื ืจืืืื ืืขืจืืช (ืืืืืื, ืืจืกื ืืืฉื ืฉื OpenSSL ืื ืืืคืฆื ืืืื).
- ืืืฉืจ ืืืจืกื ืืืืฉื ืืืื ื ืืืืืื ืืฉืจืช ืืงืฉืืช, ืืชืขืืืจื ืขืืืจืช ืืืืื ืืจืืฉืื ืืฉื ื.
- ืืขืช ื ืืชื ืืขืฆืืจ ืืช ืืืจืกื ืืืฉื ื.
ืืืฉื ืื ืฉื ืคืจืืกืช ืืจืกืืืช ืฉืื ืืช ืฉื ืืืคืืืงืฆืื ืืืืืืืช ื ืคืจืืืช ืืกืคืงืช ื ืืืืช ื ืืกืคืช - ืืืืจื ืืืืจื ืืืืืจ ืืืจืกื ืืืฉื ื (ืืืจื ืืื, ืื ืืกืคืืง ืืื ืืืขืืืจ ืืช ืืชืขืืืจื ืืืืื ืืจืฆืื).
ืืืืืฆื ืืจืืฉืื ื ืืกืืคืืช ื ืฉืืขืช ืืื ืืฉืื ืฉืืคืืื ืืงืคืื ืื ืืฆืืื ืืืฆืื ืื ืคืื: "[ืืขืช ืืจืืื ืืฉืืื ืจืฆืืฃ ืขื Docker] ืืฉืชืืฉ ื-Docker [ืืชืืื ืื ืื ื ืืชื]" ืืืจื, ืื ืืืืืจ ืืืืืจ ืืกืฃ ืฉืืคืชืืจ ืื ืืขืื, ืืื ืืืื ืืืกืคืง ืืกืืก ื ืคืื.
ืืืืืช ืฉืืืืจ
ื"ืืคืฉืจืืช ืืฉืืืืจ" ืื ื ืืชืืืื ืื ืืงืืืฆื ืืืืืช ืฉื ืืขืืืช ืฉื ืชืงืืืช ืืื ืืขืช โโืืคืขืืช ืืืฉืืืื. ืื ืื ื ืืืืจืื ืขื ืืงืจืื ืืืื:
- ืกืงืจืืคืืื ืฉื ืืืงื ืขื ืืื ืืืืงืช ืืืืืืช ืืฆืืจื ืืืื ืืืืืื ืืืืืช ืืฉืืืคืืื ืืืืืืง ืืืคืงื.
- ืืคืืืงืฆืืืช ืืชืคืจืกืืืช ืืฉืจืชืื ืฉืืืืืื ืืงืื ืืืืืืช ืืืจืืืช ืืืืจ ืฉืื ืืช (ืขื ืืืื ืื ืืชืขืืื ืืช, ืืืืชื ืื ืืจืกืืืช ืืืคืืืงืฆืืืช ืืืืชืงื ืืช).
- "ืืื ืขืืื ืืฉืืืื ืืงืืืืช!" (...ืืืคืชืืื ืืื ื ืืืจืฉืื ืืืืื ืก ืืืืฆืืจ.)
- ืืชื ืฆืจืื ืืืืืง ืืฉืื ืืืจืกื ืืืฉื ื (ืืืจืืืื).
- ...
ืืืืืช ืืืืืืช ืฉืืื ืืกืชืืืช ืืขืืืื ืฉืืฉ ืฆืืจื ืืืชืืื ืืืื ืฉื ืืกืืืืืช ืืืฉืืฉืืช (ืืื ืื ืืืขืืจ ืืืืจื ืืื ืืฉื). ืืืฆื ื ืืื ืืืืืื ืฉืืืืจ? ืฆืืจ ืชืืื ืืช Docker ืืืืกืก ืขื ืงืื ื-Git, ืืืืืจ ืืื ืืืฉืชืืฉ ืืื ืืื ืืฉืืื: ืืืชืจื ืืืืงื, ืืืืฆืืจ, ืืืืื ืืช ืืงืืืืืช ืฉื ืืชืื ืชืื... ืืื ืขื ืืืช, ืืฉืื ืืืืขืจ ืืช ืืคืขืืืืช ืฉืืชืืฆืขืืช ืืืืจ ืืจืืืช ืืชืืื ื: ืืื ืฉืืื ืคืฉืืื ืืืชืจ, ืื ืคืืืช ืืกืืืื ืฉืืืื ืฉืืืืืช.
ืชืฉืชืืช ืืื ืงืื
ืื ืืจืืฉืืช ืืชืฉืชืืช (ืืืื ืืช ืชืืื ืช ืืฉืจืช, ืืจืกืชื ืืื') ืืื ื ืคืืจืืืืืช ื"ืืชืืื ืชืืช", ืืื ืืฉืงืช ืื ืขืืืื ืืคืืืงืฆืื ืขืืืื ืืืจืื ืืชืืฆืืืช ืืจืืช ืืกืื. ืืืืืื, ืืกืืืื'ืื ื ืืืจ ืขืืจืชื ื-PHP 7.0 ืืฉืืชืืชื ืืช ืืงืื ืืืชืื - ืื ืืืคืขืชื ืืืคืงื ืขื ืืืื PHP ืืฉื (5.5) ืืืืื ืชืคืชืืข ืืืฉืื. ืืืื ืื ืชืฉืืื ืืฉืื ืื ืืืื ืืืจืกืช ืืืชืืจืืื, ืืื "ืืฉืื ื ืืฆื ืืคืจืืื ืืงืื ืื": ืืืคืชืขื ืขืฉืืื ืืืืืช ืืขืืืื ืืื ืืจื ืฉื ืื ืชืืืช.
ืืืฉื ืืคืชืจืื ืืขืื ืื ืืืืขื ืืฉื IaC (ืชืฉืชืืช ืืงืื, "ืชืฉืชืืช ืืงืื") ืืืจืื ืืืืกืื ืืจืืฉืืช ืชืฉืชืืช ืืื ืขื ืงืื ืืืคืืืงืฆืื. ืืืืฆืขืืชื, ืืคืชืืื ืืืืืื DevOps ืืืืืื ืืขืืื ืขื ืืืชื ืืืืจ ืืืฉืืื Git, ืื ืขื ืืืงืื ืฉืื ืื ืฉืื. ืืงืื ืื ื ืืฆืจืช ืชืืื ืช Docker ื-Git, ืื ืืืคืืืงืฆืื ื ืคืจืกืช ืชืื ืืชืืฉืืืช ืืื ืืคืจืืื ืฉื ืืชืฉืชืืช. ืืืืืื ืคืฉืืืืช, ืืกืงืจืืคืืื (ืืืืืื) ืืืจืืืช ืชืืื ืืช ืฆืจืืืื ืืืืืช ืืืืชื ืืืืจ ืขื ืงืื ืืืงืืจ ืืืืชืืื ืืื.
ืืืงืจื ืฉื ืืจืืืืงืืืจืช ืืคืืืงืฆืื ืืจืืืช ืฉืืืืช โ ืืืฉื, ืืฉ nginx, ืฉืขืืื ืืื ืืคืืืงืฆืื ืฉืืืจ ืคืืขืืช ืืชืื ืงืื ืืืื ืจ Docker โ ืืฉ ืืืฆืืจ ืชืืื ืืช Docker ืืงืื ื-Git ืขืืืจ ืื ืฉืืื. ืื ืืชืืื ื ืืจืืฉืื ื ืชืืื ืืคืืืงืฆืื ืขื ืืชืืจืืื ืืชืืืช "ืงืจืืืืช" ืืืจืืช, ืืืชืืื ื ืืฉื ืืื ืชืืื ืืช ื-nginx ืืืขืื ืืืจื.
ืชืืื ืืช ืืืงืจ, ืชืงืฉืืจืช ืขื Git
ืื ื ืืืืงืื ืืช ืื ืืชืืื ืืช ืฉื Docker ืฉื ืืกืคื ื-Git ืืฉืชื ืงืืืืจืืืช: ืืื ืืืช ืืฉืืจืืจ. ืชืืื ืืช ืืื ืืืช ืืชืืืืื ืขื ืืื ืฉื ืืกื ืืฃ ื-Git, ื ืืชื ืื ืืืืืคื ืขื ืืื ื-commit ืืื ืืื ืืชืืืืืื ืจืง ืืชืฆืืื ืืงืืืื (ืื ืืืคืงื). ืื ืืืืื ืืขืืงืจื ืฉืืื ืืืื ืฉื ืฉืืจืืจ: ืืชื ืืฃ ืคืขื ืื ืืืืข ืืืื ืืืืืืืช ืกืคืฆืืคืืช ืืฉ ืืื.
ืื ืืืืื ื ืืืกืืฃ ืืชืืื ืืช ืืื ืืืช: ืกื ืืฃ ืืืืกืืจ (ืืชื ืืืื ืืืืื ืืืชื ืืืืืืืืช ืืืชืจ ื ืคืจื ืืื ืืจืืืช ืื ืืืื ืืช ืืืจืกื ืื ืืืืืช ืฉื ืืืืกืืจ), ืกื ืืคืื ืขื ืืืืืจืืช, ืกื ืืคืื ืฉื ืืืืืฉืื ืกืคืฆืืคืืื.
ืืืืจ ืฉืืชืฆืืื ืืืงืืืื ืฉื ืชืืื ืืช ืืื ืืืช ืืืืขื ืืฆืืจื ืืชืจืืื ืืืืฆืืจ, ืืืคืชืืื ืฉืื ืชื ืืกืืื. ื ืืกืฃ ืืืืืืืืช ืขื ืืื ืชื ืฉืืจืจ ืชืืื ื (ืืชืืืช ืฉืื ืืชืืืื ืืชื ื-Git) ืืืชืืืืืช ื-Staging. ืื ืื ืืืืืช ืืืฆืืื ืขื ืืื ืืืืงืช ืืืืืืช, ืื ืขืืืจ ืืืืฆืืจ.
ืืค
ื ืืชื ืืืืฉื ืืช ืื ืืืชืืืจ (ืืฉืงื, ืืจืืืช ืชืืื ืืช, ืชืืืืงื ืืืืจ ืืื) ืืืืคื ืขืฆืืื ืืืืฆืขืืช ืกืงืจืืคืืื ืฉื Bash ืืืืื "ืืืืืชืจืื" ืืืจืื. ืืื ืื ืชืขืฉื ืืืช, ืื ืืฉืื ืืกืืื ืืืืฉืื ืืืืื ืืืืจืืืืช ืจืื ืืืืืืืช ืฉืืืื ืืงืืื. ืืชืื ืืื ื ืื, ืืื ื ืืืฆืืจ ืืื ืขืืืื ืืืืื ืืฉืื ื ืืื ืืืช CI/CD - ืืค.
ืงืื ืืืงืืจ ืฉืื ืืชืื ืืจืืื, ืงืื ืคืชืื ืืืชืคืจืกื ื
ืขืืืื ื-13 ืืืืืืกื 2019: ืืจืืข ืคืจืืืงื ืืค ืฉืื ื ืฉื ื
ืงืืืจื ื
ืขืื ืืื ืงืื ืคืชืื ืืืื ืฉืืืจ ืืื ืืืืจื ืืฉืืขืืชืืช ืืกืืืื ืืืงืฆืืขืืช ืืื ืงืืืจื ื,ืืฉืืื ื ืืืื Docker. ื ืืฉื ืืฉืืืืฉ ืื ืืชืคืขืื ืคืจืืืงืืื ืฉื ืื ื ืขื Docker ืืื ืืขืืจ ืืืืงืฃ ืืืื, ืื ืฉืืืฆืืช ืืืืืืช ืืกืงืืจื ืืืืืช ืฉื ืืื ืชืืื ืืช ืืขื ืืื ืืช.
ืืฆืืจื ืืฉืงื, Kubernetes ืืฆืืข:
- ืืืืงืช ืืืื ืืช - ืืืืงืช ืืืืื ืืช ืฉื ืืจืกื ืืืฉื ืฉื ืืืคืืืงืฆืื (ืืื ืืืขืืืจ ืืืื ืชืขืืืจื);
- ืขืืืื ืืชืืืื - ืขืืืื ืชืืื ื ืจืฆืืฃ ืืืฉืืื ืงืื ืืืื ืจืื (ืืืืื, ืขืืืื, ืืื ื ืืืฉืงื, ืืืชืื ืชืขืืืจื);
- ืขืืืื ืกืื ืืจืื ื - ืขืืืื ืชืืื ื ืืืฉืืื ืืืืฉื ืืืจืช: ืชืืืื ืขื ืืฆื ืืืืืืืืช, ืืื ืขื ืืฉืืจ;
- canary releases - ืืฉืงืช ืชืืื ื ืืืฉื ืขื ืืกืคืจ ืืืืื (ืงืื) ืฉื ืืืืืืช ืื ืืืืจ ืืจืืืืช.
ืืืืืื ืฉ-Continuous Delivery ืืื ืื ืจืง ืฉืืจืืจ ืฉื ืืจืกื ืืืฉื, ื-Kubernetes ืืฉ ืืกืคืจ ืืืืืืช ืืชืืืืงืช ืชืฉืชืืช ืืืืฉื: ื ืืืืจ ืืจืืฉืื ืืืื ื ืขืืืจ ืื ืืืืืืืช, ืงื ื ืืืื ืืืืืืื ืืื'. ืื ืื ืืืจ ืขืืื ืืจืง ืืืื ืืชืงืื ืืช. ืืืฉืื ืืชืืืืืื ืฉืื.
ืืืืฆืืช ืกืืคืืืช
- ืืฉืชืืฉ ื-Docker.
- ืฆืืจ ืชืืื ืืช Docker ืฉื ืืืฉืืืื ืืื ืืฆืจืืื ืฉืื.
- ืคืขื ืืคื ืืขืืงืจืื "ืชืฉืชืืช ืืื ืงืื."
- ืงืืฉืืจ Git ื-Docker.
- ืงืืข ืืช ืกืืจ ืืืฉืงื.
- ืืฉืชืืฉื ืืคืืืคืืจืื ืืืื ื (Kubernetes ืื ืืืจืช).
ืกืจืืื ืื ืืฉืงืืคืืืช
ืกืจืืื ืืืืืคืขื (ืืฉืขื)
ืืฆืืช ืืื"ื:
ื .ื.
ืืืืืืื ื ืืกืคืื ืื ืืฉื ืืืืื ืฉืื ื:
- ยซ
werf - ืืืื ืฉืื ื ืขืืืจ CI / CD ื-Kubernetes (ืกืงืืจื ืืืืืช ืืืื ืืืืื) ยป (Dmitry Stolyarov; 27 ืืืื 2019 ื-DevOpsConf); - ยซ
ืืกืื ื ืชืื ืื ื-Kubernetes ยป (ืืืืืจื ืกืืืืืืจืื; 8 ืื ืืืืืจ 2018 ื-HighLoad++); - ยซ
ืฉืืืืช ืขืืืื ืืืืืฆืืช ื-CI/CD ืขื Kubernetes ื-GitLab ยป (ืืืืืจื ืกืืืืืืจืื; 7 ืื ืืืืืจ 2017 ื-HighLoad++); - ยซ
ืื ืืกืืื ืฉืื ื ืขื Kubernetes ืืคืจืืืงืืื ืงืื ืื ยป (ืืืืืจื ืกืืืืืืจืื; 6 ืืืื ื 2017 ื-RootConf).
ืืงืืจ: www.habr.com