ืืขืจื. ืชืจืืื: ืืืืจ ืคืจืกืื ืืืจืื
ืืคื ื ืฉื ื ืคืจืกืื ื
ืืืืืจ ืืชืืจืจ ืืคืืคืืืจื. ืื ืฉืื ืืืจืื ืืชืืืื ืืืืจ ืขื GitOps ืืืืื ืืคืจืกื ืืืื ืืืฉืื ืขืืืจ
ืขื ืืืจื ืืื ื ืฉืืฉ ืฆืืจื ืืชืืืืจ ืืืฉ ืืืฆืืข:
- ืืกืคืจ ืจื ืฉื ืืืืืืืช ืืกืืคืืจืื;
- ืืืืจื ืกืคืฆืืคืืช ืฉื GitOps;
- ืืฉืืืื ืืืกืคืงื โโืจืฆืืคื ืืกืืจืชืืช.
ืืืืืจ ืื ื ืืกืื ื ืืืกืืช ืืช ืื ืื ืืฉืืื ืืืื. ืืื ืืกืคืง ืืืื ืืขืืืื ื-GitOps ืื ืงืืืช ืืื ืฉื ืืคืชืืื ื-CI/CD. ืื ื ืืชืืงืืื ืืขืืงืจ ื- Kubernetes, ืื ืื ื ืืชื ืืืืืื ืืช ืืืืื.
ืืืืจื ืืช GitOps
ืืืืื ื ืืช ืืืืก. ืืื ืื ืืืช ืืช Family Insurance, ืฉืืฆืืขื ืืืืื ืืจืืืืช, ืจืื, ืืืจื ืื ืกืืขืืช ืืื ืฉืื ืฉืขืกืืงืื ืืืื ืืืืื ืืขืฆืื ืืช ืืคืจืืื ืืงืื ืื ืฉื ืืืืื. ืืขืกืง ืฉืื ืืชืืื ืืคืจืืืงื ืฆืืื ืืืฉืจ ืืืืก ืขืืื ืืื ืง ืืืืขื ื ืชืื ืื. ืืื ืืื ืืื ืืืื ื ืฉืืื ืืืืื ืืืฉืชืืฉ ืืืืืืจืืชืืื ืืืืืฉืืื ืืชืงืืืื ืืื ืื ืชื ื ืชืื ืื ืืฆืืจื ืืขืืื ืืืชืจ ืืืืืฉ ืืืืืืช ืืืืื. ืืืฉืงืืขืื ืืืื ื ืืช ืืคืจืืืงื, ืืืขืช ืืืืจื ืฉืื ืืื ืืกื ืืืชืจ ื-20 ืืืืืื ืืืืจ ืืฉื ื ืืฆืืืืช ืืืืืจืืช. ืืืื ืืื ืืขืกืืงื 180 ืขืืืืื ืืชืคืงืืืื ืฉืื ืื. ืื ืืืื ืฆืืืช ืืื ืืืืื ืฉืืคืชื, ืืชืืืง ืืช ืืืชืจ, ืืกื ืื ืชืื ืื ืืื ืชื ืืช ืืกืืก ืืืงืืืืช. ืืช ืืฆืืืช ืืืื ื 60 ืื ืฉืื ืืืืื ืืื, ืืื ืื ืืืื ื ืฉื ืืืืจื.
ืืฆืืืช ืฉื ืืื ืคืืจืก ืืขืจืืืช ืืืฆืืจ ืืขื ื. ืืืฉืืื ืืืืื ืฉืืื ืคืืขืืื ืขื GKE, ืชืื ื ืืฆืื ืืืชืจืื ืฉื Kubernetes ื-Google Cloud. ืื ืืกืฃ, ืื ืืฉืชืืฉืื ืืืื ื ืชืื ืื ืื ืืชืื ืฉืื ืื ืืขืืืืชื.
ืืืืื ืืฉืคืื ืื ืืฆื ืืืฉืชืืฉ ืืืืืืืช, ืืื ื ืงืืข ืืืชืืืืืช ืฉื ืืืงืจ. ืขื ืืืจื ืืืืชื ืืืืจื ืฉ-GKE ืืงืื ืขื ืคืจืืกืช ืืฉืืืืืช ืืื ืืืืืง ืชืืื ืืช ืืืฉืืช. Jenkins for CI ื-Quy ื ืืกืคื ืืื ืืืจืื ืืช ืจืืฉืื ืืงืื ืืืื ืจืื, ืกืงืจืืคืืื ื ืืชืื ืขืืืจ Jenkins ืฉืืืคื ืงืื ืืืื ืจืื ืืชืฆืืจืืช ืืืฉืืช ื-GKE.
ืขืืจ ืืื ืื. ืืืืก ืืืื ืืื ืืืืืืืื ืืืืืฆืืขืื ืฉื ืืืืฉื ืฉืืืจื ืืืืฉืคืขืชื ืขื ืืขืกืง. ืืื ืกืช ืืืืืืช ืื ืฉืืคืจื ืืช ืืชืคืืงื ืืคื ืฉืืฆืืืช ืงืืืืชื. ืืคืขืืื ืคืจืืกืืช ืืื ื ืฉืืจืืช, ืืื ืืื ืืจืืจ ืื ืฉืื ืืืื ืืงืื ืื ืืืฉืืื. ืืชืืจืจ ืื ืฉืงืฉื ืืขืงืื ืืืจ ืฉืื ืืืื ืืชืฆืืจื. ืืขืชืื ืงืจืืืืช ืืื ืฆืืจื ืืืฆืืจ ืืฉืืื ืืืฉ ืืืืขืืืจ ืืืื ืืืฉืืืื, ืืืืืื ืฉืื ืืืืชื ืืืจื ืืงืื ืืืืชืจ ืืืกื ืืช ืืืืื ืฉืืืขืจืืช ืืคืื ืืืืืช. ืืืืก ืืฉืฉื ืฉืืืฆื ืืืืืจ ืืื ืฉืืืคืืืงืฆืื ืชืชืคืชื (ืื ืืกืฃ, ืืชืืฉื ืคืจืืืงื ืืืฉ ืืืืืกืก ืขื ืืืืืช ืืืื ื). ืืื ืืืฆืข ืืืืืืืืช ืืช ืจืื ืืขืืืื ืืื ืืืื ืืืืข ืืฆืื ืืจ ืขืืืื ืื ืืฆืื, ืื ืงื ื ืืืื ืืื ืืืจืฉ ืืชืขืจืืืช ืืื ืืช ืืขืช ืืขืช?
ืืื ืื ืืืื ืขื GitOps. ืืืืืื ืืื ืืชืืจืจื ืืืืืง ืื ืฉืื ืฆืจืืืื ืืื ืืืชืงืื ืืืืืืื.
ืืืืก ืืืื ืฉืืืขืื ืขื Git, DevOps ืืชืฉืชืืช ืืืจืืืืช ืขืืืื ืฉื ืงืื ืืืจ ืฉื ืื. ืื ืฉืืืืื ืืช GitOps ืืื ืฉืืื ืืืืื ืงืืืฆื ืฉื ืฉืืืืช ืขืืืื ืืืืืฆืืช - ืื ืกืืคืืืช ืืื ื ืืจืืืืืืืช - ืืืืฉืื ืจืขืืื ืืช ืืื ืืืงืฉืจ ืฉื Kubernetes. ืื ืืฉื ืืื
ืืืืื ืืืฉืคืื ืืืืื ืืืืฉื ืืช GitOps. ืืืืจื ืืฉ ืืขืช ืืืื ืชืคืขืื ืืืืืืื ืืชืืื ืขื Kubernetes ืืืฉืืืื ืืืืจืืช ืขื ืึทืฆึดืืืึผืชืืืื ืฉืื:
- ืืืื ืฉืืชืคืืงื ืฉื ืืฆืืืช ืืืืคืื ืืืื ืฉืืฃ ืืื ืืฉืชืืข;
- ืืคืกืืง ืืืืืฉ ืกืงืจืืคืืื. ืืืงืื ืืืช, ืื ืืืืืื ืืขืช ืืืชืืงื ืืชืืื ืืช ืืืฉืืช ืืืฉืคืจ ืฉืืืืช ืื ืืกืืืช - ืืืฉื, ืืฆืืช ืืฉืงืืช ืงื ืจืืืช ืืฉืืคืืจ ืืืืืงืืช;
- ืฉืืคืจื ื ืืช ืชืืืื ืืคืจืืกื ืื ืฉืืื ืืชืงืืงื ืืขืชืื ื ืืืจืืช;
- ืงืืื ืืช ืืืืืื ืืช ืืฉืืืจ ืคืจืืกืืช ืืืืจ ืืฉืืื ืืืงืืื ืืื ืืชืขืจืืืช ืืื ืืช;
- ื ืจืืฉ ืืฉืืืฉะพืืืื ืจื ืืืชืจ ืืืขืจืืืช ืืกืืจื. ืืืืก ืืืื ืืืื ืฉืื ืืืืืื ืืคืฆื ืืช ืืฆืืืช ืืฆืืืชื ืืืงืจื-ืฉืืจืืช ืืคืืขืืื ืืืงืืื;
- ืืืื ืืืฆืข 30-50 ืฉืื ืืืื ืืคืจืืืงื ืืื ืืื ืืืืฆืขืืช ืืืืืฆืื ืฉื ืื ืงืืืฆื ืืื ืกืืช ืืื ืืงืืช ืืืฉืืช;
- ืงื ืืืฉืื ืืคืชืืื ืืืฉืื ืืคืจืืืงื, ืฉืืฉ ืืื ืืืืื ืืช ืืืคืืฅ ืขืืืื ืื ืืืืฆืืจ ืืืืฆืขืืช ืืงืฉืืช ืืฉืืื ืืชืื ืืื ืฉืขืืช;
- ืืขืืืจ ืืืงืืจืช ืืงืืืช ืืืกืืจืช SOC2 (ืืขืืืื ืฉื ืกืคืงื ืฉืืจืืชืื ืืืจืืฉืืช ืื ืืืื ื ืชืื ืื ืืืืืื; ืงืจื ืขืื, ืืืฉื,
ืืื - ืืฉืืขืจ. ืชืจืืื).
ืื ืงืจื?
GitOps ืื ืฉื ื ืืืจืื:
- ืืืื ืชืคืขืืื ืขืืืจ Kubernetes ืืืงืืจื ืขื ื. ืืื ืืกืคืง ืงืืืฆื ืฉื ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืคืจืืกื, ื ืืืื ืื ืืืืจ ืืฉืืืืืช ืืืืฉืืืื ืืืืืื. ืืืืจื ืืืื ืืืช ืืฆืืจื
ืืืืฉื ืืืช ืืืืืืก ืคืืกืืืจื : - ืืืจื ืืืฆืืจืช ืกืืืืช ื ืืืื ืืืฉืืืื ืืืืืงืืช ืืืคืชืืื. ืื ื ืืืืฉืืื ืืช ืืจืืืช ืืขืืืื ืฉื Git ืื ืืชืคืขืื ืืื ืืคืืชืื. ืฉืืื ืื ืฉืื ืื ืจืง ืขื Git push, ืืื ืขื ืืจืืื ืื ืืกื ืฉื ืืื CI/CD ื-UI/UX.
ืืื ืืืืื ืขื Git
ืื ืืื ื ืืืืจ ืืขืจืืืช ืืงืจืช ืืจืกืืืช ืืืจืืืช ืขืืืื ืืืืกืกืช Git, ืื ื ืืืืืฆืื ืืืื ืืืืื ืขืืืื. ืขืืืื ืขื ืขื ืคืื ืืืงืฉืืช ืืฉืืื ืืืื ื ืจืื ืืืชืืื ืืื ืงืกื ืฉืืืจ, ืืื ืืืชืจืื ืืช ืฉืืืื ืืช ืืืืืฅ. ืืื
ืืื Kubernetes ืขืืื
ืืกืืคืืจ ืฉืื ื, ืืืืก ืืืื ืคื ื ื-GitOps ืืืืจ ืฉืขืืื ืขื Kubernetes ืืืฉื ืืื ืื. ืืืื, GitOps ืงืฉืืจื ืงืฉืจ ืืืืง ื-Kubernetes - ืืื ืืืื ืชืคืขืืื ืืชืฉืชืืืช ืืืคืืืงืฆืืืช ืืืืืกืกืืช ืขื Kubernetes.
ืื Kubernetes ื ืืชื ืืืฉืชืืฉืื?
ืืืื ืืื ืชืืื ืืช ืขืืงืจืืืช:
- ืืืืื Kubernetes ื ืืชื ืืชืืจ ืืื ืืฆืืจื ืืฆืืจืชืืช.
- ืฉืจืช ื-API ืฉื Kubernetes ืืืงื ืืช ืืืฆืืจื ืืื ืืงืื ืืืืืจ ืืื ืื ืกื ืืื ืืจืฃ ืืืืื ืืช ืืืฉืืื ืืืฆื ืืืชืืืจ ืืืฆืืจื.
- ืื ืืืฆืืจืืช ืืื ืืชืืจ ืืื ืื ืืืืื ืจืื ืฉื ืขืืืกื ืขืืืื - "ืืืฉืืืื".
- ืืชืืฆืื ืืื, ืฉืื ืืืื ืืืคืืืงืฆืื ืืืืฉืืื ืืชืจืืฉืื ืขืงื:
- ืฉืื ืืืื ืืชืืื ืืช ืืืื;
- ืฉืื ืืืื ืืืคืจื ืืืฆืืจืชื;
- ืฉืืืืืช ืืกืืืื - ืืืฉื ืงืจืืกืืช ืงืื ืืืื ืจ.
ืืืืืืช ืืืชืื ืกืืช ืืืืืืืช ืฉื Kubernetes
ืืืฉืจ ืื ืื ืืขืจืืช ืืืฆืข ืฉืื ืืืื ืืชืฆืืจื, ืืชืืืจ Kubernetes ืืืื ืืืชื ืขื ืืืฉืืื ืื ืขืื ืืืฆื ืฉืื ืื ืืชืงืจื ืืชืฆืืจื ืืืืฉื. ืืืื ืื ืขืืื ืขืืืจ ืื ืืฉืื Kubernetes ืื ืืชื ืืืจืืื ืขื ืืืืจืืช ืืฉืืืื ืืืชืืืืช ืืืฉืืช (CRDs). ืืื, ืืคืจืืกืืช Kubernetes ืืฉ ืืช ืืืืคืืื ืื ืื ืคืืืื ืืืืื:
- ืืืืืืฆืื: ืขืืืื ื Kubernetes ืืกืคืงืื ืื ืื ืื ืืืืืืืื ืฉื ืชืืืื ืืืืช ืฉืื ืืืื ืืื ืืืืื.
- ืึดืชืึผึทื ึฐืกืึผืช: Kubernetes ืืืฉืื ืื ืกืืช ืขืืืื ืื ืขื ืฉืชืฆืืื.
- ืืืืืื ืืืืช: ืืืฉืืืื ืืืืจืื ืื ืฉื ืื ืฉื ืืชืื ืกืืช ืืืืืืื ืืืืชื ืชืืฆืื.
- ืืืจืืื ืืื: ืืืฉืจ ืืืฉืืืื ืืกืคืืงืื, ืืืฆื ืฉื ืืืฉืืื ืืืขืืืื ืชืืื ืจืง ืืืฆื ืืจืฆืื.
ืืื GitOps ืขืืื
ืืืื ื ืืกืคืืง ืขื Kubernetes ืืื ืืืกืืืจ ืืื GitOps ืขืืื.
ืืืื ื ืืืืจ ืืฆืืืชื ืืืืงืจื-ืฉืืจืืชืื ืฉื ืืืืื ืืฉืคืื. ืื ืื ืฆืจืืืื ืืขืฉืืช ืืืจื ืืื? ืชืกืชืื ืขื ืืจืฉืืื ืืืื (ืื ืคืจืืืื ืืืฉืื ืื ื ืจืืื ืืืืจืื ืื ืื ืืืืจืื, ื ื ืืืืชืื ืขื ืืืงืืจืช ืืืืืฉืืจ ืืืชื ื). ืืื ืื ืจืง ืืืืืืืช ืืืจืืืืช ืขืืืื ืืืืกืกืืช ื'ื ืงืื ืก. ืืฉื ื ืชืืืืืื ืจืืื ืืืจืื ืืืฉืจ ืขืืืืื ืขื ืืืื ืืืจืื.
ืืขืืงืจ ืฉืื ืื ื ืจืืืื ืฉืื ืขืืืื ืืกืชืืื ืืฉืื ืืืื ืืงืืฆื ืืชืฆืืจื ืืืืืืจื Git. ืฉืื ืืืื ืืื ื-Git ืืืจืืื ืืืืคืจืืืจ GitOps ืืขืืื ืืช ืืืฉืืื:
1. ืชืืืื ืขืืืื: "ื'ื ืงืื ืก ืืื ืืช - ืกื ืืฃ ืืืกืืจ".
ืจืฉืืืช ืืืืืช:
- ื'ื ืงืื ืก ืืืืฃ ืชืืื ืืช ืืชืืืืืช ื- Quay;
- ื'ื ืงืื ืก ืืืืฃ ืชืจืฉืืื ืืืืจืืช ื-Helm ืืืื ืืืืกืื ืืจืืฉื;
- ืคืื ืงืฆืืืช ืืขื ื ืืขืชืืงื ืืช ืืชืฆืืจื ืืืชืจืฉืืืื ืืืื ืืืืกืื ืืจืืฉื ืืืืืจ Git ืืจืืฉื;
- ืืืืคืจืืืจ GitOps ืืขืืื ืืช ืืืฉืืื.
2. Jenkins build - ืกื ืืฃ ืฉืืจืืจ ืื ืชืืงืื ืื:
- ื'ื ืงืื ืก ืืืืฃ ืชืืื ืืช ืื ืืชืืืืืช ืืงืืืื;
- ื'ื ืงืื ืก ืืืืฃ ืชืจืฉืืื ืืืืจืืช ื-Helm ืืืื ืืืืกืื;
- ืคืื ืงืฆืืืช ืืขื ื ืืขืชืืงื ืืช ืืชืฆืืจื ืืืชืจืฉืืืื ืืืื ืืืกืื ื-Staging ืื ืืืืจ Git ื-Staging;
- ืืืืคืจืืืจ GitOps ืืขืืื ืืช ืืืฉืืื.
3. ื'ื ืงืื ืก ืืื ืืช - ืืคืชื ืื ืืืืืืจ ืขื ืฃ:
- ื'ื ืงืื ืก ืืืืฃ ืชืืื ืืช ืื ืืชืืืืืช ืืงืืืื;
- ื'ื ืงืื ืก ืืืืฃ ืชืจืฉืืื ืืืืจืืช ื-Helm ืืชืื ืืื ืืืกืื ืืคืืชืื;
- ืคืื ืงืฆืืืช ืืขื ื ืืขืชืืงื ืืช ืืชืฆืืจื ืืืชืจืฉืืืื ืืืื ืืืืกืื ืฉื ืคืืชืื ืืืืืจ Git ืฉื ืคืืชืื;
- ืืืืคืจืืืจ GitOps ืืขืืื ืืช ืืืฉืืื.
4. ืืืกืคืช ืืงืื ืืืฉ:
- ืืื ืื ืื ืืื ืื (LCM/ops) ืงืืจื ื- Gradle ืืคืจืืก ืืืืืืืจ ืชืืืื ืืืื ื ืขืืืกืื ืืจืฉืช (NLBs);
- LCM/ops ืืืฆืข ืชืฆืืจื ืืืฉื ืืื ืืืืื ืืช ืืคืจืืกื ืืขืืืื ืื;
- ืืืืคืจืืืจ GitOps ืืขืืื ืืช ืืืฉืืื.
ืชืืืืจ ืงืฆืจ ืฉื GitOps
- ืชืืจ ืืช ืืืฆื ืืจืฆืื ืฉื ืืืขืจืืช ืืืื ืืืืฆืขืืช ืืคืจืืื ืืฆืืจืชืืื ืืื ืกืืืื (ืืกืืคืืจ ืฉืื ื, ืืฆืืืช ืฉื ืืื ืืืืืจ ืืช ืื ืชืฆืืจืช ืืืขืจืืช ื-Git).
- ืืืืจ Git ืืื ืืงืืจ ืืืืช ืืืืื ืืืื ืืืฆื ืืจืฆืื ืฉื ืืืขืจืืช ืืืื.
- ืื ืืฉืื ืืืื ืืืฆื ืืจืฆืื ืืชืืฆืขืื ืืืืฆืขืืช commits ื-Git.
- ืื ืคืจืืืจื ืืืฉืืื ืืจืฆืืืื ื ืืชื ืื ืืฆืคืืื ืื ืืืฉืืื ืขืฆืื. ืืืจื ืื ื ืืื ืืงืืืข ืื ืื ืืืคืคืื (ืืชืื ืกืื, ืึฐืึดืชึฐืึผึทื ึตืก) ืื ืืืืืื (ืืืชืคืฆื, ืึดืกึฐืืึนืช) ืืฆืืื ืจืฆืืืื ืื ืฆืคืืื.
- ืื ืืืฆืืื ืืจืฆืืืื ืืื ืฆืคืื ืฉืื ืื, ืื:
- ืงืืื ืื ืื ืื ืืชืื ืกืืช ืฉืืืืงืื ืื ืืืืืืจ ืืกื ืืจื ืืืืืืืืช ืืช ืืืขื ืืืืฆืืื ืื ืฆืคืื. ืืชืื ืืืฉืืื, Kubernetes ืขืืฉื ืืืช.
- ืืชืืืื ืืชืืื ืืื ืขื ืืชืจืืช "ืชืืฆืข ืฉืื ืื".
- ืืืืจ ืคืจืง ืืื ืืกืืื ืฉื ืืชื ืืืืืจื, ื ืืชื ืืฉืืื ืืชืจืื "ืืืื" ืื ืืืฆืืื ืฉืื ืื.
- ืืืจื ืื, ืื ืืืชืืืืืืืืช ื-Git ืืืจืืืช ืืขืืืื ืื ื ืืชื ืื ืืืืืืช ืืืกืจื ืืื ืืืฉืืื.
- ืืืืจื ืืืืืจ ืืื ืืชืื ืกืืช ืืืฆื ืจืฆืื ืืขืืจ.
- ืืืชืื ืกืืช ืืื ืกืืคืืช. ืืชืจืืฉืืชื ืืกืืื ืช ืขื ืืื:
- ืืื ืืชืจืืืช ืขื ืืืื ืืคืจืง ืืื ืืกืืื.
- ืืชืจืื "ืืชืื ืกืช" (ืืืฉื webhook, ืืืจืืข ืืชืืื ืฉื Git).
ืืื ืกืืืื?
ืืืื ื ืืืืจ ืฉืื: ืื ืืืคืืื ื ืืืฉืืื ืืจืฆืืืื ืืืืืื ืืืืืช ื ืืชื ืื ืืฆืคืืื ืืืฉืืื ืขืฆืื.
ืืื ืืืืืืืช ืืกืืืื:
- ืฉืื ืื ืืงืืืฅ ืืชืฆืืจื ืขืงื ืืืืื ืกื ืืคืื ื-Git.
- ืฉืื ืื ืืงืืืฅ ืืชืฆืืจื ืขืงื ืืชืืืืืืช Git ืฉื ืขืฉืชื ืขื ืืื ืืงืื ื-GUI.
- ืฉืื ืืืื ืืจืืืื ืืืฆื ืืจืฆืื ืขืงื PR ื-Git ืืืืืจ ืืื ืื ืืืช ืชืืื ืช ืืงืื ืืืื ืจ ืืฉืื ืืื ืืชืฆืืจื.
- ืฉืื ืื ืืืฆื ืืืฉืืื ืขืงื ืฉืืืื, ืืชื ืืฉืืช ืืฉืืืื ืฉืืจืื ื"ืืชื ืืืืช ืจืขื", ืื ืคืฉืื ืกืืืื ืืงืจืืืช ืืืืฆื ืืืงืืจื.
ืืื ืื ืื ืื ืืืชืื ืกืืช?
ืื ื ืืื ืืืืืืืช:
- ืขืืืจ ืืืืืืช ืืืฉืืืืืช, ืื ืื ืื ืืืชืื ืกืืช ืืกืืคืง ืขื ืืื Kubernetes.
- ื ืืชื ืืืฉืชืืฉ ืืืืชื ืื ืื ืื ืื ืืืื ืืืฉืืืื ืืขืืฆืืืื ืืืืกืกื Kubernetes (ืืืื Istio ื-Kubeflow).
- ืื ืื ืื ืื ืืืื ืืืื ืืจืืงืฆืื ืืชืคืขืืืืช ืืื Kubernetes, ืืืืจื ืชืืื ืืช ื-Git ืืกืคืง
ืืคืขืื GitOps Weave Flux , ืฉืืื ืืืงWeave Cloud . - ืขืืืจ ืืืื ืืช ืืกืืก, ืื ืื ืื ืืืชืื ืกืืช ืืืื ืืืืืช ืืฆืืจืชื ืืืืืื ืืื. ืืื ืืกืืื ืฉืื ื ืื ืื ื ืืืืืื ืืืืจ ืืืช
Terraform ืืื ืงืจืื ืืืืืจื ืื, ืืื ืขืืืื ืืืจืฉ ืฉืืืื ืื ืืฉืืช. ืืืืื ืื, GitOps ืืจืืืื ืืช ืืกืืจืช ืืชืฉืชืืช ืืงืื.
GitOps ืืฉืื ืืช Git ืขื ืื ืืข ืืืชืื ืกืืช ืืืฆืืื ืฉื Kubernetes ืืื ืืกืคืง ืืืื ืื ืืฆืื.
GitOps ืืืคืฉืจ ืื ื ืืืืจ: ืจืง ืืืชื ืืขืจืืืช ืฉื ืืชื ืืชืืจ ืืืืชืืื ื ืืื ืืืืืืช ืืืืืช ืืืืืืืืืช ืืืงืจื.
GitOps ืืืืขื ืืื ืืืกื ืืช ืืืงืืจ ืฉื ืืขื ื (ืืืืืื, Terraform ืืื')
GitOps ืื ืื ืจืง Kubernetes. ืื ืื ื ืจืืฆืื ืฉืืืขืจืืช ืืืื ืชืืื ืืื ืขืช ืืืืคื ืืฆืืจืชื ืืชืฉืชืืฉ ืืืชืื ืกืืช. ืืืขืจืืช ืืืื ืื ื ืืชืืืื ืื ืืืืกืฃ ืฉื ืกืืืืืช ืฉืขืืืืืช ืขื Kubernetes - ืืืฉื, "ืืฉืืื ืืคืชื 1", "ืืืฆืืจ" ืืื'. ืื ืกืืืื ืืืืืช ืืืื ืืช, ืืฉืืืืืช, ืืืฉืืืื, ืืื ืืืฉืงืื ืืฉืืจืืชืื ืืืฆืื ืืื ืืืกืคืงืื ื ืชืื ืื, ื ืืืืจ ืืื'.
ืฉืืื ืื ืืื ืืฉืืื Terraform ืืืขืืืช ื-bootstrapping ืืืงืจื ืื. ืืฉ ืืคืจืืก ืืช Kubernetes ืืืคืฉืื, ืืฉืืืืฉ ื- Terraform ืืืืจ ืฉื ืืื ืืืืื ืืช ืืืชื ืืจืืืืช ืขืืืื ืฉื GitOps ืืื ืืืฆืืจ ืืช ืฉืืืช ืืืงืจื ืฉืขืืืืช ืืืกืืก Kubernetes ืืืืฉืืืื. ืืืื ืฉืืื ืืืืืฆืช ืฉืืืืฉืืช.
ืืฉ ืืชืืงืืืช ืืืงื ืืืืฉืื ืืืฉืื GitOps ืขื ืฉืืืืช ืขื ืืื Kubernetes. ืืจืืข ืงืืืืื ืคืชืจืื ืืช ืืกืื GitOps ืขืืืจ Istio, Helm, Ksonnet, OpenFaaS ื-Kubeflow, ืืื ืืืฉื ืขืืืจ Pulumi ืฉืืืฆืจืื ืฉืืื ืืคืืชืื ืืคืืืงืฆืืืช ื-Cloud Native.
Kubernetes CI/CD: ืืฉืืืืช GitOps ืขื ืืืฉืืช ืืืจืืช
ืืืืืจ, GitOps ืื ืฉื ื ืืืจืื:
- ืืืื ืืืคืขืื ืฉื Kubernetes ืืืงืืจื ืขื ื ืฉืชืืืจ ืืขืื.
- ืืืจื ืืกืืืืช ื ืืืื ืืืฉืืืื ืืืืืงืืช ืืืคืชืืื.
ืขืืืจ ืจืืื, GitOps ืืื ืืขืืงืจ ืืจืืืช ืขืืืื ืืืืืกืกืช ืขื ืืืืคืืช ืฉื Git. ืื ืื ืื ื ืืืืืื ืืืชื. ืืื ืื ืื ืืื: ืืืื ื ืกืชืื ืืขืช ืขื ืฆืื ืืจืืช CI/CD.
GitOps ืืืคืฉืจ ืคืจืืกื ืจืฆืืคื (CD) ืขืืืจ Kubernetes
GitOps ืืฆืืขื ืื ืื ืื ืคืจืืกื ืจืฆืืคื ืฉืืืื ืืช ืืฆืืจื ื"ืืขืจืืืช ื ืืืื ืคืจืืกื" ื ืคืจืืืช. Kubernetes ืขืืฉื ืืช ืื ืืขืืืื ืืฉืืืื.
- ืขืืืื ืืืคืืืงืฆืื ืืืจืฉ ืขืืืื ื-Git. ืืื ืขืืืื ืขืกืงื ืืืฆื ืืจืฆืื. ืืืืจ ืืื "ืคืจืืกื" ืืชืืฆืขืช ืืชืื ืืืฉืืื ืขื ืืื Kubernetes ืขืฆืื ืืืชืืกืก ืขื ืืชืืืืจ ืืืขืืืื.
- ืืฉื ืืืืคื ืฉื ืืืคื ืืคืขืืื ืฉื Kubernetes, ืขืืืื ืื ืืื ืืชืื ืกืื. ืื ืืกืคืง ืื ืื ืื ืืคืจืืกื ืจืฆืืคื ืฉืื ืื ืืขืืืื ืื ืื ืืืืืืื.
- ืืขืจื:
Weave Cloud ืืฆืืขื ืืืคืจืืืจ GitOps ืืืฉืื ืืช Git ื-Kubernetes ืืืืคืฉืจ ืืืฆืืข CD ืขื ืืื ืืชืืื ืืื ืืืฆื ืืจืฆืื ืืื ืืืื ืฉื ืืืฉืืื.
ืืื kubectl ืืชืกืจืืืื
ืขืืื ืืืืื ืข ืืฉืืืืฉ ื-Kubectl ืืื ืืขืืื ืืช ืืืฉืืื ืฉืื, ืืืืืืื ืืืืื ืข ืืฉืืืืฉ ืืกืงืจืืคืืื ืืงืืืืฅ ืคืงืืืืช kubectl. ืืืงืื ืืืช, ืขื ืฆืื ืืจ GitOps, ืืฉืชืืฉ ืืืื ืืขืืื ืืช ืืฉืืื Kubernetes ืฉืื ืืจื Git.
ืืืืืืช ืืืืืืช:
- ืืืื. ื ืืชื ืืืืฉื ืงืืืฆื ืฉื ืขืืืื ืื, ืืืชืื ืก ืืืืกืืฃ ืืืืช, ืืืงืจื ืืืชื ื ืืืขื ืฉื ืคืจืืกื ืืืืืืช. ืืขืืืช ืืืช, ืฉืืืืฉ ืืกืงืจืืคืืื ืืื ื ืืกืคืง ืื ืขืจืืื ืืืชืื ืกืืช (ืขืื ืขื ืื ืืืืฉื).
- ืืืืื.
ืืฆืื Kelsey Hightower: "ืืืืืช ืืช ืืืืฉื ืืืฉืืื Kubernetes ืฉืื ืืืื ืืืืืืฆืื ืืื ืืื ืืขืจืืช ืฉืืืจืืื ืขื ืืืชืืจ ืืืืื ืื ืชืืืืงื ืฉืื." ืจืื ืืืืคืจืกืื ืฉืื ืืืื ืืืืืืช ืืขืืืื ืืืคืจืืื ืืื ืืื, ืืื ืืืืืืจ ืขื ืคืจืืฆืช Homebrew ืขื ืืื ืื ืืืช ืืืฉืืจืื ืืชืกืจืื ืฉื ื'ื ืงืื ืก ืฉื ืืชื ืืจืืฉืื. - ืืืืืืช ืืฉืชืืฉ. Kubectl ืืืฉืฃ ืืช ืืืื ืืงื ืฉื ืืืื ืืืืืืืงืืื ืฉื Kubernetes, ืฉืื ืื ืืืจืืืื. ืืืืคื ืืืืืืื, ืืฉืชืืฉืื ืฆืจืืืื ืืงืืื ืืื ืืจืืงืฆืื ืขื ืืืขืจืืช ืืจืืช ืืคืฉืื ืืืืื ืืืชืจ. ืืื ืืชืืืืก ืฉืื ืืงืืกื ืืืืืืฅ ืืฆืคืืช
ืงืืจืืช ืืืื ืืืื .
ืืืืื ืืื CI ื-CD
GitOps ืืฉืคืจ ืืืื CI/CD ืงืืืืื.
ืฉืจืช CI ืืืืจื ื ืืื ืืื ืชืืืืจ. ืืคืจื, ืืื ืืื ืืชืืืืจ ืฆืื ืืจืืช CI. ืืื ืืืืืื ืื ืืื, ืืืืงื, ืืืืื ืืืจืื ืง ืืื'. ืฉืจืชื CI ืืืคืืื ืืช ืื ืืืื ืืืืืืืื ืฉื ืฆืื ืืจืืช ืืืจืืืื ืืจืืื-ืฉืืืื. ืคืืชืื ื ืคืืฅ ืืื ืืกืงืจืืคื ืงืืืฆื ืฉื ืขืืืื ื Kubernetes ืืืืคืขืื ืืืชื ืืืืง ืืฆืื ืืจ ืืื ืืืืืฃ ืฉืื ืืืื ืืืฉืืื. ืืื, ืื ืื ืฉืขืืฉืื ืืืืืื ืจืืื. ืขื ืืืช, ืื ืื ืืืคืืืืื, ืืื ื ืืกืืื.
ืืฉ ืืืฉืชืืฉ ื-CI ืืื ืืืืืฃ ืขืืืื ืื ืืืจืื ืง, ืืืฉืืื Kubernetes ืฆืจืื ืืฉื ืืช ืืช ืขืฆืื ืืืชืืกืก ืขื ืืืชื ืขืืืื ืื ืืื ืื ืื ืืช ืืชืงืืืืืจ ืืืืคื ืคื ืืื. ืื ืื ื ืงืืจืืื ืืื
ืืืืข ืฉืจืชื CI ืื ืฆืจืืืื ืืขืฉืืช ืชืงืืืืืจืื ืืืืฆืขืืช ืขืืืื ืื ืืฉืืจืื ื-Kubernetes
ืื ืชืฉืชืืฉ ืืฉืจืช CI ืืื ืืชืืื ืขืืืื ืื ืืฉืืจืื ื-Kubernetes ืืงืืืฆื ืฉื ืืฉืืืืช CI. ืื ืืื ืื-ืืคืืก ืฉืื ืื ื ืืืืจืื ืขืืื
ืืื ื ืืืืจ ืืืืืก ืืืื.
ืขื ืืืื ืืขืืืช ืื ืืชืืืืื? ืฉืจืช ื-CI ืฉื ืืื ืืืื ืืช ืืฉืื ืืืื ืขื ืืืฉืืื, ืื ืื ืืื ืงืืจืก ืืชืืืื, ืืื ืื ืืืืข ืืืืื ืืฆื ื ืืฆื (ืื ืืืืจ ืืืืืช) ืืืฉืืื ืื ืืืฆื ืืชืงื ืืืช. ืืืืจ ื ืืื ืื ืืืงืจื ืฉื ืืฆืืื.
ืืื ื ื ืื ืฉืืฆืืืช ืฉื ืืื ืื ื ืชืืื ื ืืืฉื ืืืืืจ ืืื ืชืืงื ืืช ืืคืจืืกื ืฉืืื ืืื ืืคืจืืก ืืช ืืชืืื ื (ืืื ืืฆืื ืืจ ื-CI).
ืื ืืชืืื ื ื ืื ืืช ืืจืืื, ืื ืืฆืื ืืจ ื ืืฉื, ืืฆืืืช ืืฆืืจื ืืืืื:
- ืืื ืืขืืืื ืืฆื?
- ืื ืื ื ืืฉืืงืื ืืื ื ืืืฉ? ืืื ืื ืืืืื ืืชืืคืขืืช ืืืืื ืืืืชืจืืช - ืขื ืืคืฉืจืืช ืืฉืชื ืื ืืื ืฉื ืืืชื ืชืืื ื ืืืชื ื ืืชื ืช ืืฉืื ืื?
- ืืื ืขืืื ื ืืืืืช ืืขืืืื ืืื ืืคื ื ืืคืขืืช ื-build?
- ืื ืืืืืง ืืฉืชืืฉ? ืขื ืืืื ืฉืืืื ืืฉ ืืืืืจ (ืืขื ืืืื ืืื ืืืื ืืืืืจ)?
ืืงืืช ืืจืืืช ืขืืืื ืืืืกืกืช Git ืืื ื ืืืืืื ืฉืืฆืืืช ืฉื ืืื ืื ืืชืงื ืืืขืืืช ืืื. ืื ืขืืืื ืืืืืื ืืืขืืช ืขื ื-commit push, ืืชื ืื ืคืจืืืจ ืืืจ; ืขื ืืืช, ืืืฉื ืื ืขืืืื ืงืจืืื ืืจืื ืืืชืจ ืืืืฉื ืืคืืจืฉืช ืฉื ืืื ืื ืืืื.
ืืกืืืื, ืื ื ืืกืืื ืฉืฉืจืชื CI ืื ืฆืจืืืื ืืืชืืืื ืขื CD:
- ืกืงืจืืคืืื ืืขืืืื ืืื ื ืชืืื ืืืจืืื ืืกืืืื; ืงื ืืขืฉืืช ืืื ืืขืืืืช.
- ืฉืจืชื CI ืืื ื ืืชืื ืกืื ืืืืื ืืืฉืืื ืืืฆืืจืชื.
- ืงืฉื ืืืืืื ืืืกืจ ืืื ืืช. ืขื ืืืฉืชืืฉืื ืืืืื ืืช ืืกืื ืืืงื ืืขืืืงื ืฉื ืืืขืจืืช.
- ืงืฉื ืืืชืจ ืืืชืืืฉืฉ ืืืืฉืืื ืืืงื.
ืืขืจื ืืืื Helm: ืื ืืจืฆืื ื ืืืฉืชืืฉ ืืืื, ืื ื ืืืืืฆืื ืืฉืื ืืืชื ืขื ืืืคืจืืืจ GitOps ืืืื
GitOps ืืืจื ืืืืื ืืืืชืจ ืืืืฉื ืืฉืืื ืจืฆืืฃ ืขืืืจ Kubernetes
ืืฆืืืช ืฉื ืืืืก ืืืื ืืืืฉื ืืช GitOps ืืืืื ืฉืืคื ืืืจืื ืืืชืจ ืงื ืืขืืื ืขื ืืืฆืจื ืชืืื ื, ืืฉืืืจ ืขื ืืืฆืืขืื ืืืืืื ืืืฆืืืืช. ืืืื ื ืกืืื ืืืืจ ืื ืืืืืจ ืฉืืจืื ืืืฆื ื ืจืืืช ืืืืฉื ืืืืฉื ืฉืืื. ืืืืจ ืื ืื ื ืืืืจืื ืืขืืงืจ ืขื ืืืฉืืืื ืืฉืืจืืชืื, ืื ื ืืชื ืืืฉืชืืฉ ื-GitOps ืื ืืืื ืคืืืคืืจืื ืฉืืื.
ืืืื ืืคืขืื ืขืืืจ Kubernetes
ืืชืืื ื ืืชืจืฉืื ืืื. ืืื ืืฆืื ืืช Git ืืืช ืืืืจ ืืชืืื ืืช ืืืืื ืืืฉืืืื ืืฉืืชืคืื ืขืืืจ ืฉื ื ืืืืืจื ืืืื ืืชืืืืจืื:
- ืฆืื ืืจ ืืื ืืืจืฆืื ืจืฆืืฃ ืฉืงืืจื ืืืืชื ืงืืฆืื ื-Git ืืืืื ืืขืืื ืืืืจ ืฉื ืชืืื ืืช ืืืื.
- ืฆืื ืืจ Runtime GitOps ืืืฉืื ืคืจืืกื ืขื ื ืืืื ืืฆืคืืื. ืื ืงืืจื ืืืืชื ืงืืฆืื ื-Git ืืืืื ืืืืจืื ืชืืื ืืช ืืืื.
ืืื ืืืืฆืืื ืืขืืงืจืืื?
- ืืคืจืืช ืืฉืฉืืช: ืฉืืื ืื ืฉืฉื ื ืืฆืื ืืจืืช ืืืืืื ืืชืงืฉืจ ืจืง ืขื ืืื ืขืืืื Git ืื ืืืืจ ืืชืืื ืืช. ืืืืืื ืืืจืืช, ืืฉ ืืืืช ืืฉ ืืื CI ืืืื ืกืืืืช ืืื ืืจืืฆื. ืื ื ืงืืจืืื ืืื "ืืืืช ืืืฉ ืืื ืฉืื ืื" (ืืืืช ืืฉ ืืืชื ื ืืชื ืช ืืฉืื ืื), ืืืืืื ืฉืื ืขืืืื ื ืืืืืจ ืืืฆืจืื ืืจืกืืืช ืืืฉืืช. ืืืืืข ื ืืกืฃ ืขื ื ืืฉื ืื, ืขืืื ืืฉืงืคืื 72-87
ืืืฆืืช ืืื . - ืืชื ืืืื ืืืฉืชืืฉ ืืื ืฉืจืช CI ื-Git: GitOps ืขืืื ืขื ืื ืจืืื. ืืชื ืืืื ืืืืฉืื ืืืฉืชืืฉ ืืฉืจืชื CI ื-Git ืืืืขืืคืื ืขืืื, ืืืืจื ืชืืื ืืช ืืืืืืืช ืืืืงื. ืืืขื ืื ืฉืืจ ืืื ืืืกืืจื ืืจืฆืืคื ืืฉืืง ืืืจืฉืื ืฉืจืช CI/Git ืื ืืืืจ ืชืืื ืืช ืืฉืืื. ืื ืขืฉืื ืืืคืื ืืืืจื ืืืืื ืืคืืชืื ืฉื native ืืขื ื. ืขื GitOps, ืืชื ืืืื ืืืฉืชืืฉ ืืืืื ืืืืจืื.
- ืืืจืืขืื ืืืื ืืื ืืืจืฆืื: ืืจืืข ืฉืื ืชืื ืื ื-Git ืืชืขืืื ืื, Weave Flux (ืื ืืืคืขืื ืฉื Weave Cloud) ืืืืืข ืขื ืืื ืจืืฆื. ืืื ืคืขื ืฉ-Kubernetes ืืงืื ืขืจืืช ืฉืื ืืืื, Git ืืชืขืืื. ืื ืืกืคืง ืืืื ืืื ืืืจืฆืื ืคืฉืื ืืืจืืื ืืจืืืืช ืขืืืื ืขืืืจ GitOps, ืืคื ืฉืืืฆื ืืืื.
ืืกืงื ื
GitOps ืืกืคืง ืืช ืขืจืืืืืช ืืขืืืื ืืืืงืืช ืื ืืจืฉืืช ืขื ืืื ืื ืืื CI/CD ืืืืจื ื:
- ืืืืืืฆืื;
- ืึดืชืึผึทื ึฐืกืึผืช;
- ืืืืคืืื ืฆืื;
- ืืืจืืื ืืื.
ืื ืืฉืื ืืืืืื ืฉืืื ืืฆืืข ืืืื ืชืคืขืืื ืืืคืชืืื ืืงืืจืืื ืืขื ื.
- ืืืื ืืกืืจืชืืื ืื ืืืื ืื ืืืืจ ืืขืจืืืช ืืฉืืืืื ืืฆืืืชื ืชืคืขืื ืืคืืขืืื ืืชืื ืคื ืงืก ืืคืขืื (ืืขืจืืช ืฉื ื ืืืื ืืคืขืืืืช ืฉืืจืชืืืช - ืชืจืืื ืืงืืจืื), ืงืฉืืจ ืืคืจืืกื ืกืคืฆืืคืืช.
- ืื ืืืื ืืงืืจื ืืขื ื, ืืื ืฆืคืืื ืื ืืืจื ืืืืื ืืืืชืจ ืืืืื ืืช ืืชืืฆืืืช ืฉื ืคืจืืกืืช ืื ืฉืฆืืืช ืืคืืชืื ืืืื ืืืืื ืืืืืจืืช.
ืืืืื ื ืืขืฆืืื ืืฉืืืืืช ืจืืื ืืคืืืจืื ืขื ืคื ื ืขื ื ืื ืฉืื ืื ืืฉืืจืืชืื ืจืืื ืขื ืฆืืืชืื ืืชืืื ืืืช ืคืจืืกื ืืฉืืื. GitOps ืืฆืืขื ืืืื ืืืชื ืืฉืชื ื ืืงื ื ืืืื ืื ืืืื ืื ืืฉืคืข ืืื.
ื .ื ืืืืชืจืื
ืงืจื ืื ืืืืื ืฉืื ื:
- ยซ
GitOps: ืืฉืืืื ืฉื ืฉืืืืช ืืฉืืื ืืืืืคื "; - ยซ
ืืืืจื ืืช kubedog, ืกืคืจืืื ืืืขืงื ืืืจ ืืฉืืื Kubernetes "; - ยซ
ืืจืืืช ืืืฉืืื ืฉื Kubernetes (ืกืงืืจื ืืืืืช ืืืื ืืืืื) ".
ืจืง ืืฉืชืืฉืื ืจืฉืืืื ืืืืืื ืืืฉืชืชืฃ ืืกืงืจ.
ืืื ืืืขืช ืขื GitOps ืืคื ื ืฉืฉื ื ืืชืจืืืืื ืืืื ืืืคืืขื ื-Habrรฉ?
-
ืื, ืืืขืชื ืืื
-
ืจืง ืืฆืืจื ืฉืืืืช
-
ืื
35 ืืฉืชืืฉืื ืืฆืืืขื. 10 ืืฉืชืืฉืื ื ืื ืขื.
ืืงืืจ: www.habr.com