ืืขืจื. ืชืจืืื: ืืืืืฅ Kubernetes ื-GitLab ื ืืฉื ืืืื ืืฉื ื ืืืืจืืื ืืขืืงืจืืื ืืชืืจืืื ืืฆืืืืช ืืืืจื. ืขื ืืืช, ืขื ืืืืจืื ื, ืืชืฉืชืืช ืฉื ืฉืืจืืช ืืืงืืื GitLab.com ื ืื ืชื ืขื ืืื ืืืื ืืช ืืืจืืืืืืืช, ืืจืง ืืคื ื ืืฉื ื ืืืื ืืืืืจื ืฉืื ื-K8s, ืฉืขืืืื ืื ืืืฉืืื. ืื ื ืฉืืืื ืืืฆืื ืชืจืืื ืฉื ืืืืจ ืขืืื ื ืืืช ืืื ืืก GitLab SRE ืขื ืืื ืื ืงืืจื ืืื ืืืกืงื ืืช ืฉื ืืืื ืืกืื ืืืฉืชืชืคืื ืืคืจืืืงื.
ืืื ืืฉื ื, ืืืืืช ืืชืฉืชืืืช ืฉืื ื ืืขืืืจื ืืช ืื ืืฉืืจืืชืื ืืคืืขืืื ื-GitLab.com ืื Kubernetes. ืืืืื ืชืงืืคื ืื, ื ืชืงืื ื ืืืชืืจืื ืืงืฉืืจืื ืื ืจืง ืืืขืืจืช ืฉืืจืืชืื ื-Kubernetes, ืืื ืื ืื ืืืื ืืคืจืืกื ืืืืืจืืืืช ืืืืื ืืืขืืจ. ืืืงืืื ืืืฉืืืื ืฉืืืื ื ืืืืื ื ืืืืืจ ืื.
ืืืืชืืื ืฉื GitLab.com, ืืฉืจืชืื ืฉืื ืจืฆื ืืขื ื ืืืืื ืืช ืืืจืืืืืืืช. ืืืื ืืช ืืืจืืืืืืืช ืืื ืื ืืืืืช ืขื ืืื Chef ืืืืชืงื ืืช ืืืืฆืขืืช ืฉืื ื
ืื ื ืืฉืชืืฉืื ืืฉืืื ืื ืืืืืื ืฉืืฉืื ืืืืชืจ ืืืืืช ืืช ืื ืืฆืขืจ ืืืฉืืืืช ืฉืืืืื ืืืจื ืืงืืืื ืืคืฉืืืื ืืขืช ืืชืงื ื ืืืืืจืช ืืขืืชืงืื ืฉื GitLab. ืืืฉื ืื ืขืืื ืืืื ืืืฉื ืืื ืื, ืืื ืืฉืืกืคืจ ืืคืจืืืงืืื ื-GitLab ืขืื ืขื 10 ืืืืืื, ืืื ื ืฉืืื ืืืจ ืื ืขืื ื ืขื ืืฆืจืืื ืฉืื ื ืืงื ื ืืืื ืืคืจืืกื.
ืฆืขืืื ืจืืฉืื ืื ื-Kubernetes ืื-GitLab ืืืืืกืก ืขื ืขื ื
ืืคืจืืืงื ื ืืฆืจ ืืฉื ืช 2017
ืืืืืคื ืืขืืจ ืืงืืจื ืขื ื ื-Kubernetes ืืคืฉืจื ืืืื ืืกืื ืฉืื ื ืืชืื ื ืืขืืจ ืืืจืืชื, ืฉืืืืืื ื ืืฉื ื ืืืง ืืืชืืืช ืฉื ืืืคืืืงืฆืื ืืืืกืื ืจืฉืช ืชืื ืืืฉื ืคืืชืื ืคืืฆ'ืจืื ืืืฉืื. ืืื ืฉืืชืืื ื ืืชืื ื ืืช ืืืืืจื ืืงืืฅ 2019, ืจืืืช ืืืืืืืืช ืืืื ื ืคืชืจื, ืืชืืืื ืืืขืืจ ืฉื GitLab.com ื-Kubernetes ื ืืฆื ืืขืช ืืขืืฆืืื!
ืชืืื ืืช ืฉื GitLab.com ื-Kubernetes
ืขืืืจ GitLab.com, ืื ื ืืฉืชืืฉืื ืืืฉืืื GKE ืืืืจื ืืืื ืฉืืืคื ืืื ืชืขืืืจืช ืืืืฉืืืื. ืืื ืืืืขืจ ืืช ืืืืจืืืืช ืฉื ืืืืืจื (ืฉืืืจ ืืกืืื), ืื ื ืืชืืงืืื ืืฉืืจืืชืื ืฉืืื ื ืืกืชืืืื ืขื ืืืกืื ืืงืืื ืื NFS. GitLab.com ืืฉืชืืฉ ืืืกืืก ืงืื Rails ืืื ืืืืื, ืืื ื ืื ืชืืื ืชืขืืืจื ืขื ืกืื ืืืคืืื ื ืขืืืก ืขืืืื ืื ืงืืืืช ืงืฆื ืฉืื ืืช ืืืืืืืืช ืืชืื ืืืืจ ืืฆืืชืื ืฉืืื.
ืืืงืจื ืฉื ื-frontend, ืืกืืืื ืืืื ืืืืืงืื ืืืงืฉืืช ืืืื ืืจื ื, API, Git SSH/HTTPS ื-Registry. ืืืงืจื ืฉื ื-backend, ืื ื ืืคืฆืืื ืืช ืืขืืืืืช ืืชืืจ ืืคื ืืืคืืื ืื ืฉืื ืื ืืืชืื
ืื ืฉืืจืืชื GitLab.com ืืืื ืืืืืจืื ืืืืฆืขืืช ืชืจืฉืื GitLab Helm ืืื ืฉืื ืื. ืืชืฆืืจื ืืชืืฆืขืช ืืชืจืฉืืืื, ืฉื ืืชื ืืืคืขืืื ืืืืคื ืกืืงืืืื ืืื ืฉืื ื ืืขืืืจืื ืฉืืจืืชืื ืืืืจืื ืืืฉืืื. ืืืจืืช ืฉืืืืื ื ืื ืืืืื ืืืง ืืืฉืืจืืชืื ืืืืืืชืืื ืฉืื ื ืืืขืืจื, ืืื Redis, Postgres, GitLab Pages ื-Gitaly, ืืฉืืืืฉ ื-Kubernetes ืืืคืฉืจ ืื ื ืืฆืืฆื ืืืืคื ืงืืฆืื ื ืืช ืืกืคืจ ื-VMs ืฉืฉืฃ ืื ืื ืืืื.
ื ืจืืืช ืื ืืืื ืฉื ืชืฆืืจืช Kubernetes
ืื ืืืืืจืืช ืื ืืืืืช ืขื ืืื GitLab ืขืฆืื. ืืฉื ืื, ื ืขืฉื ืฉืืืืฉ ืืฉืืืฉื ืคืจืืืงืื ืชืฆืืจื ืืืืืกืกืื ืขื Terraform ื- Helm. ืื ืื ื ืื ืกืื ืืืฉืชืืฉ ื-GitLab ืขืฆืื ืืื ืคืขื ืฉืืคืฉืจ ืืื ืืืคืขืื ืืช GitLab, ืืื ืืืฉืืืืช ืชืคืขืืืืืช ืืฉ ืื ื ืืชืงื ื ื ืคืจืืช ืฉื GitLab. ืื ื ืืืฅ ืืื ืืืืืื ืฉืืื ื ืชืืื ืืืืื ืืช ืฉื GitLab.com ืืขืช ืืืฆืืข ืคืจืืกืืช ืืขืืืื ืื ืฉื GitLab.com.
ืืืจืืช ืฉืืฆืื ืืจืืช ืฉืื ื ืขืืืจ ืืฉืืื Kubernetes ืคืืขืืื ืขื ืืชืงื ืช GitLab ื ืคืจืืช, ืืฉ ืฉืืงืืคืื ืฉื ืืืืจื ืืงืื ืืืืื ืื ืืฆืืืืจ ืืืชืืืืช ืืืืืช:
-
k8s-workloads/gitlab-com - ืืกืืจืช ืืชืฆืืจื ืฉื GitLab.com ืขืืืจ ืชืจืฉืื GitLab Helm; -
k8s-workloads/gitlab-helmfiles - ืืืื ืชืฆืืจืืช ืืฉืืจืืชืื ืฉืืื ื ืืฉืืืืื ืืฉืืจืืช ืืืคืืืงืฆืืืช GitLab. ืืื ืืืืืื ืชืฆืืจืืช ืืจืืฉืื ืื ืืืืจ ืืฉืืืืืช, ืืื ืื ืืืื ืืฉืืืืื ืืื PlantUML; -
Gitlab-com-infrastructure - ืชืฆืืจืช Terraform ืขืืืจ Kubernetes ืืชืฉืชืืช VM ืืืืจ ืงืืื. ืืื ืืชื ืืืืืจ ืืช ืื ืืืฉืืืื ืืืจืืฉืื ืืืคืขืืช ืืืฉืืื, ืืืื ืืืฉืืื ืขืฆืื, ืืืืจื ืฆืืชืื, ืืฉืืื ืืช ืฉืืจืืช ืืืืื ืืช IP.
ืชืฆืืื ืฆืืืืจืืช ืืืฆืืช ืืืฉืจ ืืชืืฆืขืื ืฉืื ืืืื.
ืขืืืจ SRE, ืืงืืฉืืจ ืืืืื ืืืคืจืฉ ืืคืืจื ืืืชืงื ืช GitLab, ืืืฉืืฉืช ืืืืฆืืจ ืืืืืฉื ืืืื ืืืืืืช. ืื ืืืคืฉืจ ืืขืืืืื ืืืงืืืื, ืืื ืืืฉื ืืคืจืืืงื ืืชืคืขืืื (ืฉืคืชืื ืจืง ื-SREs), ืืฆืคืืช ืืฉืื ืืื ืชืฆืืจื ืืืฆืขืื. ืขื ืืื ืฉืืืื ืฉื ืืืคืข GitLab ืฆืืืืจื ืขืืืจ ืงืื ืขื ืืืคืข ืคืจืื ืขืืืจ ืฆืื ืืจืืช CI, ืื ื ืฉืืืจืื ืขื ืืจืืืช ืขืืืื ืืืช ืชืื ืืืืืช ืขืฆืืืืช ื-GitLab.com ืขืืืจ ืขืืืื ื ืชืฆืืจื.
ืื ืืืืื ื ืืืืื ืืืืืจื
ืืืืื ืืืืื, ื ืฆืืจ ื ืืกืืื ืฉืื ื ืืืืฉืืื ืขื ืืขืืจืืช ืืคืจืืกืืช ืืืฉืืช ื-Kubernetes.
1. ืขืืืืืช ืืืืืจืืช ืขืงื ืชื ืืขื ืืื ืืืืจื ืืืื ืืช
ืกืืืืกืืืงืืช ืืฆืืื ืืืืืืช (ืืชืื ืืืื) ืขืืืจ ืฆื ืืืืจ Git ื-GitLab.com
ืืืื ืืืืงืช ืืช ืืจืฉืช ืฉืื ืืืืืจืื. ืืื, ืืชืืจื, ืืืืืงืื ืืืืืจื ื ืืืฉืืช (AZ). ืืืจืื Git ืืฉืืื ืืืืืืืช ืืืืืืช ืฉื ื ืชืื ืื, ืืืื ืืฉืื ืื ื ืืฉืืื ืืืฆืืืช ืืจืฉืช. ืขืืืจ ืชืขืืืจื ืคื ืืืืช, ืืืฆืืื ืืื ืืืื ื ืจืง ืื ืืื ื ืฉืืจืช ืืืืชื ืืืืจ ืืืื ืืช. ื ืืื ืืืชืืืช ืฉืืจืืช ืืื, ืื ื ืืืืฉืื ื-100 TB ืฉื ื ืชืื ืื ืืืื ืขืืืื ืืืคืืกื (ืืื ืจืง ืขืืืจ ืืืืจื Git). ืฉืืจืืชืื ืฉืฉืื ื ืืืืชื ืืืื ืืช ืืืจืืืืืืืช ืืืืคืืืืืื ืืืฉื ื ืฉืื ื ืืืืกืกืช VM ืคืืขืืื ืืขืช ืืชืจืืืืื ืฉืื ืื ืฉื Kubernetes. ืืืฉืืขืืช ืืื ืฉืืืง ืืืชื ืืขื ืฉืืืืชื ืืขืืจ ืืงืืืืช ื-VM ืขืฉืืื ืื ืกืืข ืืืืฅ ืืืืืจื ืืืื ืืช.
ืืฉืืืืืช GKE ืืืืจืืื ืืืคืฉืจืื ืื ืืืฉืชืจืข ืขื ืืกืคืจ ืืืืจื ืืืื ืืช ืืฆืืจื ืืชืืจืืช. ืื ืื ื ืฉืืงืืื ืืช ืืืคืฉืจืืช
2. ืืืืืืช, ืืงืฉืืช ืืฉืืืื ืืงื ื ืืืื
ืืกืคืจ ืืขืชืงืื ืืืขืืืื ืชืขืืืจืช ืืืฆืืจ ื-registry.gitlab.com. ืฉืื ืืชื ืืขื ื-~15:00 UTC.
ืกืืคืืจ ืืืืืจื ืฉืื ื ืืชืืื ืืืืืืกื 2019, ืืืฉืจ ืืขืืจื ื ืืช ืืฉืืจืืช ืืจืืฉืื ืฉืื ื, GitLab Container Registry, ื-Kubernetes. ืฉืืจืืช ืงืจืืื ืืืฉืืื, ืืขื ืชืขืืืจื ืืืืื, ืืื ืืืืจื ืืืื ืขืืืจ ืืืืืจื ืืจืืฉืื ื ืืืืืื ืฉืืื ืืืฉืื ืืกืจ ืืืื ื ืขื ืืขื ืชืืืช ืืืฆืื ืืช. ืืืขืื ืืจืืฉืื ื ืฉื ืชืงืื ื ืื ืืืืชื ืืกืคืจ ืจื ืฉื ืชืจืืืืื ืฉืคืื ื ืขืงื ืืืกืจ ืืืืจืื ืืฆืืชืื. ืืืื ืื, ื ืืืฆื ื ืืฉื ืืช ืืงืฉืืช ืืืืืืืช.
ืืชืืื ืฉืืืงืจื ืฉื ืืคืืืงืฆืื ืฉืื ืฆืจืืืช ืืืืืจืื ืขืืื ืขื ืืืื, ืขืจืืื ื ืืืืื ืืืงืฉืืช (ืฉืืืืจ ืืืืจืื ืืื ืคืื) ืืื ืขื ืืืืื ืงืฉื "ื ืืืื" ืขื ืืฉืืืืฉ ืืืืืื ืืจืืืื (ืจึดืึผืึผื) ืฆืืชืื ืืจืื ืืืืื ืฉื ืคืื ืืืื. ืืื ืืืชืืืื ืขื ืืืขืื ืืืืช, ืื ืืื
3. ืืืืื ืืืืื ืื
ืืืืืช ืืชืฉืชืืืช ืืชืืงืืช ืืืฉืืื, ืฉืืขืืจื ืฉืืืืืช ืืจืืืื ืขื ืืชืงื ื
ืืืืื ืืฉื ื ืืืืจืื ื, ืืื ืืืืจืืขืื ืืืจืืืืื ืืืืืืช ืืชืฉืชืืืช ืืื ืฉืืคืืจืื ืื ืืืืจ ืืขืืืื ืขื SLOs. SLOs ืืคืฉืจื ืื ื ืืืืืืจ ืืขืืื ืขืืืจ ืฉืืจืืชืื ืืืืืื ืฉืขืืืื ืขืงืื ื ืืงืจืื ืืืืื ืืืืืจื. ืืื ืื ืขื ืืืืืช ืฆืคืืื ืืฉืืคืจืช ืื, ืื ืชืืื ื ืืชื ืืจืืืช ืืื ืืขืืืช ืืฉืืืืฉ ืืืืืื ืืืชืจืืืช. ืืืืืื, ืขื ืืื ืืชืืงืืืช ืืืฉืืืื ืืืฉืืขืืจื ืฉืืืืืช, ืืื ื ื ืืืกืื ืืืืคื ืืื ืืช ืื ืืงืจื ืืฉืืืืฉ ืืฉืืจืืช ืฉืขืืืจ ืืขืืจื.
ืืขืื ืื ืืชืืืชื ืืืขื ืืื ืืืืจ ืืขืืจืช ืขืืืกื ืขืืืื ืืกืืืืื ืืืฉืืื. ืื ื ืขืฉื ืืจืืฃ ืืืืืื ืืฉืืืื ื ืฆืจืืืื ืืืืืง ืคืื ืงืฆืืืช ืฉืืกืคืจ ืืืงืฉืืช ืฉืืื ืืื ืงืื, ืืื ืฉืืื ืืื ืชืืืช ืชืฆืืจื ืืืื ืกืคืฆืืคืืช. ืืื ืืืงืืื ืืืจืืืืื ืืืืืืจื ืืื ืืฆืืจื ืืงืืช ืืืฉืืื ืื ืจืง ืืืืื ืืขืช ืื ืืืืจ, ืืื ืื ืืืื ืื ื"ืื ื ืืจืื" (ืื ืขื
ืืืฉืช ืืืชื ืืงืฉืืช ืืืงืืื ืืชืฉืชืืช ื-VM ืืืฉื ื ืืืชืฉืชืืช ืืืืฉื ืืืืกืกืช Kubernetes ืืฆืืื ืืชืืจ ืืืืืื. ืื ืืืื ืืืืืจื ืฉื ืืจืื ืืืืืื (ืืขืืจื ืืืืจื ืฉื ืืืฉืืืื "ืืืืช ืฉืื" ืืชืฉืชืืช ืืืฉื; ืคืจืืื ื ืืกืคืื ื ืืชื ืืงืจืื, ืืืฉื,
4. ืืขืืจืช ืชืขืืืจื ืืืฉืืื ืืืฉ
ืขืืืจ GitLab.com, ืืืง ืืืฉืจืชืื ืืืงืืฉ
ืืืงืจื ืฉื ืืืืจืฆืื, ืืืฉืืขืืช ืืื ืฉืืงืฉืืช ืืคืจืืืงืืื ืคื ืืืืื ื ืฉืืืืช ืชืืืื ื-Kubernetes, ืืืืืจ ืืื ืื ื ืืขืืืจืื ืืืืจืื ืืช ืฉืืจ ืืชืขืืืจื ืืืฉืืื ืขื ืืื ืฉืื ืื ืืืฉืงื ืฉื ื-backend ืืจื HAProxy. ืืืืื ืืืขืืจื ื-VM ื-Kubernetes, ืืชืืจืจ ืฉืืืขืื ืืืื ืืงืื ืืจื ืงืื ืืืคื ืืช ืืช ืืชืขืืืจื ืืื ืืชืฉืชืืช ืืืฉื ื ืืืืฉื ืืืืชืื, ืืฉืืืจ ืขื ืืชืฉืชืืช ืืืฉื ื ืืืื ื ืืืืืจื ืืืืื ืืจืืฉืื ืื ืืืืจ ืืืขืืจื.
5. ืืืืืืช ืืืืืืื ืฉื ืชืจืืืืื ืืืฉืืืืฉ ืืื
ืืืขื ืืื ืืืืชื ืืืขืื ืืืื: pods ืขืืืจ ืฉืืจืืช ืืจืืฉืื ืืชืืืื ืืืืืจืืช, ืืื ืืฉืงืช pods ืขืืืจ Sidekiq ืืจืื ืขื
ืืืงืจื ืื, ืืืงื ืืื ืฉืืขืื ืฉื-HPA (Horizontal Pod Autoscaler) ืฉื Kubernetes ืืชืืืื ืืืื ืขื ืืืืื ืืชืขืืืจื, ืืฉืื ืืืชืืฉื ืืืืคืืื ืื ืฉื ืขืืืกื ืืขืืืื ืืืืงืฆืืช ืงืืืืืช ืคื ืืื ืืชืจืืืืื (ืืืืืื ืืืฉืจ ืืืืงืืฉ ืืชืืืง ืืฆืืจื ืื ืฉืืื). ืืืงืจื ืฉืื ื, ืืื ืขืืืื ืคืชืืืืืช ืืขืืืืืช, ืฉืืืืืื ืืืจืืื ืืืืจื, ืฉืืืืืื ืืจืืืื ืฉื ืืฉืืื ื-CPU ืืคื ื ืฉืืกืคืงื ื ืืืืืื ืืช ืืืืจ ืืฆืืชืื.
ืชืืื ืืฉ ืคืืชืื ืืกืืื ืืื ืฉืืืชืจ ืืืฉืืื, ืืืื ืืืืจ ืฉื ืชืงืื ื ืืชืืืื ืืืขืืืช ืืืฆืืขืื, ืื ื ืืชืืืืื ืืขืช ืขื ืชืงืฆืื ืคืื ื ืืื ืืืฆืืฆืืื ืืืชื ืืืืืจ ืืืชืจ, ืชืื ืืขืงื ืงืคืื ื ืืืจ SLOs. ืืฉืงืช ืืคืืืื ืืฉืืจืืช Sidekiq ืืืืฆื ืืฉืืขืืชืืช ืื ืืฉืืช ืืขืช ื-40 ืฉื ืืืช ืืืืืฆืข.
ืืกืงื ื
ืืืืจ ืืืืจื ืฉื ืื ืฉืืจืืช, ืฉืืื ื ืขื ืืืชืจืื ืืช ืฉื ืืฉืืืืฉ ื-Kubernetes ืืืืฆืืจ: ืคืจืืกืช ืืืฉืืืื ืืืืจื ืืืืืื ืืืชืจ, ืงื ื ืืืื ืืืงืฆืืช ืืฉืืืื ืืขืืื ืืืชืจ. ืืชืจื ืืื, ืืืชืจืื ืืช ืฉื ืืืืจื ืืืจืืื ืืฉืืจืืช GitLab.com. ืื ืฉืืคืืจ ืืชืจืฉืื Helm ืืจืฉืื ืืืขืื ืืืฉืชืืฉืื ืฉืื.
ืื ื ืืงืืื ืฉื ืื ืืช ืืืกืืคืืจ ืฉื ืืจืคืชืงืืืช ืืืืืจื ืฉื Kubernetes ืฉืื ื. ืื ื ืืืฉืืืื ืืืขืืืจ ืืช ืื ืืฉืืจืืชืื ืืืืฉืื ืืืฉืืื. ืืืืข ื ืืกืฃ ื ืืชื ืืืฆืื ืืคืจืกืืืื ืืืืื:
- ยซ
ืืื ืื ืื ื ืขืืืจืื ื- Kubernetes? "; - ยซ
GitLab.com ืขื Kubernetes "; -
ืืคื ืขื ืืขืืจืช GitLab.com ื-Kubernetes .
ื .ื ืืืืชืจืื
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
3 ืฉื ืื ืขื Kubernetes ืืืืฆืืจ: ืื ื ืื ืฉืื ืื ื ืืืื ืื "; - ยซ
10 ืืขืืืืช ื ืคืืฆืืช ืืฉืืืืฉ ื-Kubernetes "; - ยซ
ืกืืคืืจื ืืฆืืื ืฉื Kubernetes ืืืคืงื. ืืืง 3: GitHub "; - ยซ
ืืขืืจ ืืื ืืจ ื-Kubernetes ".
ืืงืืจ: www.habr.com