ืื ื ื-True Engineering ืืงืื ื ืชืืืื ืืืกืคืงื โโืจืฆืืคื ืฉื ืขืืืื ืื ืืฉืจืชืื ืฉื ืืงืืืืช ืืจืืฆืื ืืืืืง ืืช ืืืืืื ืืื.
ืืืืชืืืื, ืคืืชืื ื ืืขืจืืช ืืงืืื ืช ืขืืืจ ืืืงืื ืืคืจืกื ื ืืืชื ืืืฉืืื Kubernetes ืืฉืื ื. ืืขืช ืคืชืจืื ืืขืืืก ืืืืื ืฉืื ื ืขืืจ ืืคืืืคืืจืื ืฉื ืืืงืื, ืขืืืจื ืืืืจื ื ืชืืืื ืคืจืืกื ืจืฆืืคื ืืืืืืืืช ืืืืืืื. ืืืืืช ืืื, ืืืฆื ื ืืช ืืื ืืืฆืืื ืืฉืืง โ ืืกืืจืช ืฉืื ืืืื ืืกืืืืช ืืืืฆืจ.
ืืืืืจ ืื ื ืืืจ ืขื ืื ืฉืืื ืชืืืื ื-Continuous Deployment (CD) ืื ืืฉืืื ืขืืืื ืื ืืคืืืคืืจืืช ืืืงืื:
- ืืื ืืชืืื ืืชืืืื ืืื?
- ืกื ืืจืื ืขื ืืืืจ Git ืฉื ืืืงืื,
- ืืจืืื ืฉื backend ื-frontend,
- ืคืจืืกื ืืืืืืืืช ืฉื ืืืฉืืืื ืืกืืืืช ืืืืงื,
- ืคืจืืกื ืืืืืืืืช ื-Prod.
ื ืฉืชืฃ ืืช ืคืจืื ืืืืืจื ืืืืจื ืืืจื.
1. ืืชืื ืชืงืืืืืจ
ืคืจืืกื ืจืฆืืคื ืืชืืืื ืืื ืฉืืืคืชื ืืืืฃ ืฉืื ืืืื ืืขื ืฃ ืืฉืืจืืจ ืฉื ืืืืจ Git ืฉืื ื.
ืืืคืืืงืฆืื ืฉืื ื ืคืืขืืช ืขื ืืจืืืืงืืืจืช ืฉืืจืืช ืืืงืจื ืืื ืืจืืืืื ืฉืื ืืืืืกื ืื ืืืืืจ ืืื. ืืืืืช ืืื, ืื ืฉืืจืืชื ืืืืงืจื ื ืืกืคืื ืืืืชืงื ืื, ืื ืื ืืื ืืื ืืฉืชื ื.
ืืจืื ื ืขืืืื ืืจื ืืืืจ ืืื ืืืื ืกืืืืช:
- ืงืืืช ืคืืชืื - ืืืคืืืงืฆืื ืืชืคืชืืช ืืืืคื ืคืขืื, ืื ืฉื ืืชื ืืขืืื ืขื ืื ืืงืื ืืืช ืืืช.
- ืฆืื ืืจ CI/CD ืืืื ืืืืืื ืฉืืืคืืืงืฆืื ืืืขืจืืช ืืืช ืขืืืจืช ืืช ืื ืืืืืงืืช ืืืืขืืจืช ืืกืืืืช ืืืืฆืืจ ืฉื ืืืงืื.
- ืื ื ืืืืืื ืืืืื ืืืจืกืืืช - ืืื ื ื ืฆืจืืืื ืืืืกื ืืคื ืฉื ืืจืกืืืช ืืืงืจื-ืฉืืจืืช ืืืชืืจ ืืช ืืชืฆืืจื ืฉืื ืขืืืจ ืื ืืืงืจื-ืฉืืจืืช ืืกืงืจืืคืืื ืฉื Helm.
2. ืกื ืืจืื ืขื ืืืืจ Git ืฉื ืงืื ืืืงืืจ ืฉื ืืืงืื
ืฉืื ืืืื ืฉืืืฆืขื ืืกืื ืืจื ืื ืืืืืืืืช ืขื ืืืืจ Git ืฉื ืืืงืื. ืฉื ืืืืืจ ืืืืื ืืืคืืืงืฆืืืช, ืืืืคืขื ืืืืจ ืขืืืื ืืกื ืืฃ, ืืคืจืืกื ืืืืฉื. ืฉื ื ืืชืืืืืื ืืงืืจื ืืกืืืืชื ืืืืืจ Git.
ืืื ื ื ืืืืืื ืืขืืื ืืฉืืจืืช ืขื ืืืืืจ ืฉื ืืืงืื ืืืืืื ืฉืื ื ืืงืืงืื ืืกืืืืืช ืืฉืื ื ืืฆืืจื ืคืืชืื ืืืืืงื. ืื ื ืืฉืชืืฉืื ืืืืืจ Git ืฉืื ื ืืืืจืืช ืืื - ืืื ืืกืื ืืจื ืขื ืืืืจ Git ืฉืืื. ืืจืืข ืฉืืคืชื ืืคืจืกื ืฉืื ืืืื ืืกื ืืฃ ืืืชืืื ืฉื ืืืืืจ ืฉืื ื, GitLab ืืื ืืืืคืช ืืช ืืฉืื ืืืื ืืืื ืืืงืื.
ืืืจื ืื ืืชื ืฆืจืื ืืขืฉืืช ืืช ืืืจืืื. ืื ืืืจืื ืืืกืคืจ ืฉืืืื: ืืจืืื ืขืืจืคืืช ืืืืืชืืช, ืืืืงื ืืืกืคืงื โโืืืืฆืืจ.
3. ืืจืืืช ืืงืฆื ืืืืืจื ืืืืืืชื
ืื ืืืช ื-backend ืื-frontend ืื ืฉืชื ืืฉืืืืช ืืงืืืืืช ืืืืืฆืขืืช ืืืขืจืืช GitLab Runner. ืชืฆืืจืช ืืืจืืื ืืืงืืจืืช ืฉืื ืืืืงืืช ืืืืชื ืืืืจ.
GitLab Runner ืืืงื ืืช ืืงืื ืืืืืืจ ืื ืืจืฉ, ืืจืืื ืืืชื ืขื ืคืงืืืช ืืื ืืื ืฉื ืืืฉืื Java ืืฉืืื ืืืชื ื-Docker Registry. ืืื ืื ื ืืจืืืืื ืืช ื-backend ืื-frontend, ืืฉืืืื ืชืืื ืืช Docker, ืืืชื ืืื ืกื ื ืืืืืจ ืืฆื ืืืงืื. ืืื ืื ืื ืชืืื ืืช Docker ืฉืื ื ืืฉืชืืฉืื ืืื
ืื ื ืืกื ืืจื ืื ืืช ืืจืกืืืช ืืชืืื ืืช ืฉืื ื ืขื ืืจืกืช ืืฉืืจืืจ ืฉืชืคืืจืกื ื-Docker. ืืืคืขืื ืืืงื ืืืฆืขื ื ืืกืคืจ ืืชืืืืช:
1. ืืืืืืช ืืื ื ื ืื ืืช ืืืืฉ ืืื ืกืืืืช ืืืืืงื ืืกืืืืช ืืืืฆืืจ. ืขืฉืื ื ืคืจืืืจืื ืื ืฉืืืชื ืงืื ืืืื ืจ ืืืื ืืขืืื ืขื ืื ืืืืืจืืช, ืืฉืชื ื ืืกืืืื ืืืฉืืจืืชืื ืื ืืกืืืืช ืืืืืงื ืืื ืืืืฆืืจ ืืื ืื ืืื ืืืืฉ.
2. ืืื ืืขืืื ืืคืืืงืฆืื ืืจื Helm, ืืฉ ืืฆืืื ืืช ืืืจืกื ืฉืื. ืื ื ืืื ืื ืืช ื-backend, frontend ืืืขืืื ืื ืืช ืืืคืืืงืฆืื โ ืืื ืฉืืืฉ ืืฉืืืืช ืฉืื ืืช, ืืืื ืืฉืื ืืืฉืชืืฉ ืืืืชื ืืจืกื ืฉื ืืืคืืืงืฆืื ืืื ืืงืื. ืขืืืจ ืืฉืืื ืื, ืื ื ืืฉืชืืฉืื ืื ืชืื ืื ืืืืกืืืจืืืช Git, ืืืืืื ืฉืชืฆืืจืช ืืฉืืื ื-K8S ืืืืคืืืงืฆืืืช ืฉืื ื ื ืืฆืืื ืืืืชื ืืืืจ Git.
ืื ื ืืงืืืื ืืช ืืจืกืช ืืืืฉืื ืืชืืฆืืืช ืืืฆืืข ืืคืงืืื
git describe --tags --abbrev=7
.
4. ืคืจืืกื ืืืืืืืืช ืฉื ืื ืืฉืื ืืืื ืืกืืืืช ืืืืืงื (UAT)
ืืฉืื ืืื ืืกืงืจืืคื ืืื ืืื ืืื ืืื ืขืืืื ืืืืืืื ืฉื ืืฉืืื K8S. ืื ืงืืจื ืืชื ืื ืฉืืืคืืืงืฆืื ืืืื ื ืื ืชื ืืื ืืืคืฆืื ืคืืจืกืื ื-Docker Registry. ืืืืจ ืืื, ืขืืืื ืกืืืืช ืืืืืงื ืืชืืื.
ืขืืืื ืืืฉืืื ืืชืืื ืืืฉืชืืฉ
ืื ื ืืกืคืงืื ืืช ืชืฆืืจืช ืืฉืืื K8S ืืื ืขื ืืืืืื. ืืื, ืืฉืื ืืื ืืื ืืขืืื ืืืชื: configMaps, ืคืจืืกืืช, ืฉืืจืืชืื, ืกืืืืช ืืื ืชืฆืืจืืช K8S ืืืจืืช ืฉืฉืื ืื ื.
ืืืืจ ืืื, ืืื ืืจืืฅ ืขืืืื RollOut ืฉื ืืืคืืืงืฆืื ืขืฆืื ืืกืืืืช ืืืืืงื. ืืคื ื ืคืจืืกืช ืืืคืืืงืฆืื ืืืืฆืืจ. ืื ื ืขืฉื ืืื ืฉืืฉืชืืฉืื ืืืืื ืืืืืง ืืืืคื ืืื ื ืืช ืืชืืื ืืช ืืขืกืงืืืช ืฉืืื ืกื ื ืืกืืืืช ืืืืืงื.
5. ืคืจืืกื ืืืืืืืืช ืฉื ืื ืืฉืื ืืืื ื-Prod
ืืื ืืคืจืืก ืขืืืื ืืกืืืืช ืืืืฆืืจ, ืจืง ืฆืจืื ืืืืืฅ ืขื ืืคืชืืจ ืืื ื-GitLab - ืืืืืืืื ื ืืกืจืื ืืื ืืกืืืืช ืืืืฆืืจ.
ืืืชื ืืคืืืงืฆืื ืืืืื ืืขืืื ืืกืืืืืช ืฉืื ืืช - ืืืืงื ืืืืฆืืจ - ืืื ืื ืืื ืืืืฉ. ืื ื ืืฉืชืืฉืื ืืืืชื ืืคืฆืื ืืืื ืืฉื ืืช ืืืจ ืืืคืืืงืฆืื, ืืื ืื ื ืืืืืจืื ืืช ืืคืจืืืจืื ืืืฆืื ืืช.
ืคืจืืืจืืืฆืื ืืืืฉื ืฉื ืืืืจืืช ืืืคืืืงืฆืื ืชืืืื ืืกืืืื ืฉืื ืืืคืืืงืฆืื ืชืืืฆืข. ืืขืืจื ื ืืช ืื ืืืืจืืช ืืกืืืื ืืืคื ืืืฅ: ืืื ืขืืืจ ืคืจืืืจืื ืืจื ืชืฆืืจืช K8S ืืคืจืืืจืื Helm. ืืืฉืจ Helm ืคืืจืก assembly ืืกืืืืช ืืืืืงื, ืืืืจืืช ืืืืืงื ืืืืืืช ืขืืื, ืืืืืจืืช ืืืืฆืจ ืืืืืืช ืขื ืกืืืืช ืืืืฆืืจ.
ืืืืจ ืืงืฉื ืืืืชืจ ืืื ืืืืืืจ ืคืจืืืจืื ืืื ืืฉืืจืืชืื ืืืืฉืชื ืื ืืืฉืชื ืื ืืชืืืืื ืืกืืืื, ืืืชืจืื ืืืชื ืืืฉืชื ื ืกืืืื ืืชืฆืืจืืช ืชืืืืจ ืฉื ืคืจืืืจื ืกืืืื ืขืืืจ Helm.
ืืืืจืืช ืืืคืืืงืฆืื ืืฉืชืืฉืืช ืืืฉืชื ื ืกืืืื. ืืขืจืืื ืฉืืื ืืืืืจืื ืืงืื ืืืื ืจืื ืืืืฆืขืืช K8S configmap, ืืฉืจ ืืขืืฆืืช ืืืืฆืขืืช ืชืื ืืืช Go. ืืืืืื, ืืืืจืช ืืฉืชื ื ืกืืืื ืืฉื ืืืืืืื ืืืืื ืืืชืืฆืข ืื:
APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}
.Values.global.env โ ืืฉืชื ื ืื ืืืืกื ืืช ืฉื ืืกืืืื (ืคืจืื, ืฉืื, UAT).
.Values.app.properties.app_external_domain โ ืืืฉืชื ื ืื ืื ื ืืืืืจืื ืืช ืืชืืื ืืจืฆืื ืืงืืืฅ .Values.yaml
ืืขืช ืขืืืื ืืคืืืงืฆืื, Helm ืืืฆืจ ืงืืืฅ configmap.yaml ืืชืื ืืืช ืืืืื ืืช ืืขืจื APP_EXTERNAL_DOMAIN ืืขืจื ืืจืฆืื ืืืชืื ืืกืืืื ืฉืื ืขืืืื ืืืคืืืงืฆืื ืืชืืื. ืืฉืชื ื ืื ืืืจ ืืืืืจ ืืืืื. ื ืืชื ืืืฉืช ืืืื ืืืืคืืืงืฆืื, ืื ืฉืืื ืกืืืืช ืืคืืืงืฆืื ืืืื ืขืจื ืฉืื ื ืขืืืจ ืืฉืชื ื ืื.
ืืืืจืื ื ืืืกืืช, ืชืืืื ื-K8S ืืืคืืขื ื-Spring Cloud, ืืืื ืขืืืื ืขื configMaps:
ืืกื ืืื
ืื, ืคืจืืกื ืจืฆืืคื ืืืืืจืช ืืคืืขืืช. ืื ืืขืืืื ืื ืืชืจืืฉืื ืขื ืืงืฉื ืืืช. ืืกืืจืช ืืฉืื ืืืื ืืกืืืืช ืืืืฆืจ ืืื ืืืืืืืืช. ืืืฉืื ืืื, ืขืืืื ืื ืื ืขืืฆืจืื ืืช ืืืขืจืืช.
ืชืืื ืืืช ืขืชืืืืืช: ืืืืจื ืืืืืืืืช ืฉื ืืกืื ื ืชืื ืื
ืืฉืื ื ืขื ืฉืืจืื ืืกื ืื ืชืื ืื ืืขื ืืืคืฉืจืืช ืืืื ืฉืื ืืืื ืืื. ืืืจื ืืื, ืฉืชื ืืจืกืืืช ืฉืื ืืช ืฉื ืืืคืืืงืฆืื ืคืืขืืืช ืื-ืืื ืืช: ืืืฉื ื ืคืืขืืช, ืืืืืฉื ืคืืขืืช. ืืืช ืืืฉื ื ื ืืื ืจืง ืืฉื ืืื ืืืืืื ืฉืืืจืกื ืืืืฉื ืขืืืืช. ืืขืืจืช ืืกื ืื ืชืื ืื ืืืืจื ืืืคืฉืจ ืื ืืขืืื ืขื ืฉืชื ืืืจืกืืืช ืฉื ืืืืฉืื.
ืืื, ืื ืื ื ืื ืืืืืื ืคืฉืื ืืฉื ืืช ืืช ืฉื ืืขืืืื ืื ื ืชืื ืื ืืืจืื. ืืื ืื ืื ื ืืืืืื ืืืฆืืจ ืขืืืื ืืืฉื, ืืืขืชืืง ืืชืืื ื ืชืื ืื ืืืขืืืื ืืืฉื ื ืืืืชืื ืืจืืืจืื ืฉืืืื ืขืืืื ืื ืชืื ืื ืืขืชืืงื ืืืขืืื ื ืืืชื ืืืงืืื ืืขืืืื ืืืจืช. ืืืืืจ ืคืจืืกื ืืืฆืืืช ืฉื ืืืจืกื ืืืืฉื ืฉื ืืืคืืืงืฆืื, ืืืืจ ืชืงืืคืช ืืชืืืื ืฉืืืืจ ืืืฉืงื, ื ืืื ืืืืืง ืืช ืืขืืืื ืืืฉื ื ืืืช ืืืจืืืจ ืฉืืคื ืืืืืชืจ.
ืื ืืืจืกื ืืืืฉื ืฉื ืืืคืืืงืฆืื ืืื ื ืคืืขืืช ืืืืื, ื ืืื ืืืืืจ ืืืจืกื ืืงืืืืช, ืืืื ืืืจืกื ืืงืืืืช ืฉื ืืกื ืื ืชืื ืื. ืืงืืฆืืจ, ืืฉืื ืืืื ืฉืื ื ืืืคืฉืจื ืื ืืขืืื ืืืงืืื ืขื ืืกืคืจ ืืจืกืืืช ืฉื ืืืคืืืงืฆืื.
ืื ื ืืชืื ื ืื ืืืคืื ืืช ืืขืืจืช ืืกืื ืื ืชืื ืื ืืืืืืืืืื ืืืืฆืขืืช ืขืืืืช K8S, ืืืฉืื ืืืชื ืืชืืืื ืืชืงืืืืืจ. ืืืืืื ื ืฉืชืฃ ืืช ืืืืืื ืืื ื-Habrรฉ.
ืืงืืจ: www.habr.com