ืืืื ื ืืืจ ืขื ืืขืงืจืื ืืช ืืืืืืืื ืฉื GitOps, ืืื ืื ืขื ืืืืคื ืฉืื ืืืืืื ืืื ืืืืฉืืื ืืคืืืคืืจืืช OpenShift. ืืืจืื ืืื ืืจืืงืืืื ืื ืืฉื ืื ืืืื
ืืงืฆืจื, GitOps ืืื ืงืืืฆื ืฉื ืฉืืืืช ืขืืืื ืืฉืืืืฉ ืืืงืฉืืช ืืฉืืื ืฉื Git ืื ืืืื ืชืฆืืจืืช ืชืฉืชืืช ืืืคืืืงืฆืืืช. ืืืืจ Git ื-GitOps ืืืืคื ืืืงืืจ ืืืืข ืืืื ืขื ืืฆื ืืืขืจืืช, ืืื ืฉืื ืื ืืืฆื ืื ื ืืชื ืืืขืงื ืื ืืชื ืืืืงืืจืช ืืืืคื ืืื.
ืืจืขืืื ืฉื ืืขืงื ืืืจ ืฉืื ืืืื ื-GitOps ืืื ื ืืืฉ ืืฉืื ืืืคื; ืืืฉื ืื ืืืจ ืืืื ืืฉืืืืฉ ืืืขื ืืื ืืืจืกืื ืืืฉืจ ืขืืืืื ืขื ืงืื ืืงืืจ ืฉื ืืืฉืืืื. GitOps ืคืฉืื ืืืืฉืืช ืชืืื ืืช ืืืืืช (ืืืงืืจืืช, ืืงืฉืืช ืืฉืืื, ืชืืืืช ืืื') ืื ืืืื ืชืฆืืจืช ืชืฉืชืืืช ืืืคืืืงืฆืืืช ืืืกืคืงืช ืืชืจืื ืืช ืืืืื ืืื ืืืงืจื ืฉื ื ืืืื ืงืื ืืงืืจ.
ืืื ืืืืจื ืืงืืืืช ืื ืืขืจืืช ืืืงืื ืืืืฉืจืช ืขืืืจ GitOps, ืืื ืจืง ืืขืจืืช ืขืงืจืื ืืช ืฉืขืืื ืื ืื ืืชืจืืื ืืื:
- ืืชืืืืจ ืืืฆืืจืชื ืฉื ืืืขืจืืช ืืืืืกื ืืืืืจ Git (ืืืืจืืช, ื ืืืืจ ืืื').
- ืฉืื ืืืื ืืืืื ื ื ืขืฉืื ืืืืฆืขืืช ืืงืฉืืช ืืฉืืื.
- ืืฆื ืืืขืจืืืช ืืจืฆืืช ืชืืื ืืช ืื ืชืื ืื ืืืืืจ ืืืืฆืขืืช ืืงืฉืืช ืืืืคื ืฉื Git.
ืขืงืจืื ืืช GitOps
- ืืืืจืืช ืืขืจืืช ืืชืืืจืืช ืืงืื ืืงืืจ
ืชืฆืืจืช ืืขืจืืืช ืืืืคืืช ืืงืื ืื ืฉื ืืชื ืืืืกื ืืืชื ืืืืฆืข ืืืชื ืืืืคื ืืืืืืื ืืืืืจ Git, ืืืฉืืฉ ืืืงืืจ ืืืช ืืืื. ืืืฉื ืื ืืงืื ืขื ืืฉืงื ืืืืืจื ืฉื ืฉืื ืืืื ืืืขืจืืืช.
- ืืืฆื ืืืงืื ืคืืืืจืฆืื ืืจืฆืืืื ืฉื ืืืขืจืืืช ื ืงืืขืื ืืื ืืกืืื ื-Git
ืขื ืืื ืืืกืื ืืืืจืกื ืฉื ืืฆื ืืืขืจืืืช ืืจืฆืื ื-Git, ืื ื ืืกืืืืื ืืืืื ืืงืืืช ืืืืืืจ ืฉืื ืืืื ืืืขืจืืืช ืืืืคืืืงืฆืืืช. ืื ืื ื ืืืืืื ืื ืืืฉืชืืฉ ืืื ืื ืื ื ืืืืืื ืฉื Git ืืื ืืฉืืื ืืืขืืืช ืขื ืงืื ืืืืืช ืืช ืืืืชื ืืืืช ืฉืื.
- ื ืืชื ืืืืื ืฉืื ืืื ืชืฆืืจื ืืืืคื ืืืืืืื ืืืืฆืขืืช ืืงืฉืืช ืืฉืืื
ืืืืฆืขืืช ืืงืฉืืช ืืฉืืื ืฉื Git, ืื ื ืืืืืื ืืฉืืื ืืงืืืช ืืืฆื ืฉืื ืืืื ืืืืืื ืขื ืชืฆืืจืืช ืืืืืจ. ืืืืืื, ืื ืืืืืื ืืืื ืชื ืืืืจื ืฆืืืช ืืืจืื ืืืืืงื ืื ืืจืืฅ ืืืื ื CI ืืื'.
ืืืื ืขื ืืืช, ืืื ืฆืืจื ืืืคืืฅ ืกืืืืืืช ืืืืื ืืืื ื ืืฉืืืื. ืืื ืืืฆืข ืฉืื ืืืื ืืชืฆืืจื, ืืฉืชืืฉืื ืฆืจืืืื ืจืง ืืจืฉืืืช ืืชืืืืืช ืืืืืจ Git ืฉืื ืืืืืกื ืืช ืืชืฆืืจืืช ืืืื.
- ืชืืงืื ืืืขืื ืฉื ืกืืืคื ืืืชื ืืืืงืจืช ืฉื ืชืฆืืจืืช
ืืืืจ ืฉืืืฆื ืืจืฆืื ืฉื ืืืขืจืืช ืืืืืกื ืืืืืจ Git, ืื ืฉืขืืื ื ืืขืฉืืช ืืื ืืืฆืื ืชืืื ื ืฉืชืืืื ืฉืืืฆื ืื ืืืื ืฉื ืืืขืจืืช ืืชืืื ืืืฆื ืืจืฆืื. ืื ืื ืื ืืืงืจื, ืื ืชืืื ื ืื ืฆืจืืื - ืืืชืื ืืืืืจืืช - ืืืื ืืช ืืคืขืจ ืืขืฆืื, ืื ืืืืืืข โโืื ื ืขื ืกืืืคื ืฉื ืืชืฆืืจื.
ืืืื GitOps ืขืืืจ OpenShift
ืืืืฉื ืืฉืืืื ืขื ืืฉืืื
ืืคื ืืืื ืื, ืืืฉืืื ืืฉ ืืงืจ ืฉืืืจืื ืขื ืืฉืืืืช ืืฉืืื Kubernetes (ืงืืฆื YAML) ืืืืืจ Git ืขื ืืืฉืืืื ืืืืืชืืื ืฉื ืืืฉืืื. ืื ืืชืืืื ืื ืืชืืืืช, ืืืงืจ ืฉืืื ืืืืขืืช ืืืืื ื ืืงื ืืคืขืืื ืืื ืืชืงื ืืช ืืคืขืจ. ืืืื GitOps ืื ืืฉืืฉ ื-Anthos Config Management ื-Weaveworks Flux.
ืืืืฉื ืืฉืืืื ืืืฆืื ื (ืืืืคื)
ืืืื ืื ืืืื ืืืืืฉื ืืืืจืืืฆืื ืฉื ืืงืืื, ืืืฉืจ ืืฉ ืื ื ืืงืจ ืืื ืื ืืืชืจ ืืืืจืื ืขื ืกื ืืจืื ืืฉืืืื ืืฆืืื "ืืืืจ Git - Kubernetes cluster". ืืืืื ืืื ืืื ืฉืืื ืืฉืืื ืื ืืื ืืื ืืืืจื ืืงืจ ื ืคืจื ืืฉืื. ืฆืืื ืืฉืืืืืช ืฉื Git - k8s ืืืืืจืื ืืขืชืื ืงืจืืืืช ื-CRDs (ืืืืจืืช ืืฉืืืื ืืืชืืืืช ืืืฉืืช), ืฉืืืืืื ืืชืืจ ืืืฆื ืืืงืจ ืฆืจืื ืืืฆืข ืกื ืืจืื. ืืชืื ืืืื ืื, ืืงืจืื ืืฉืืืื ืืช ืืืืจ Git ืฉืฆืืื ื-CRD ืขื ืืฉืืื ืืืฉืืืืืช ืฉื Kubernetes, ืฉืฆืืื ื ืื ื-CRD, ืืืืฆืขืื ืคืขืืืืช ืืชืืืืืช ืขื ืกืื ืชืืฆืืืช ืืืฉืืืื. ืืคืจื, ืืืื GitOps ืื ืืฉืืฉ ื- ArgoCD.
GitOps ืืคืืืคืืจืืช OpenShift
ื ืืืื ืชืฉืชืืช Kubernetes ืืจืืืช ืืฉืืืืืช
ืขื ืืชืคืฉืืืช Kubernetes ืืืคืืคืืืจืืืช ืืืืืจืช ืฉื ืืกืืจืืืืืช ืจืืืื ืขื ื ืื ืืืืฉืื ืงืฆื, ืื ืืืกืคืจ ืืืืืฆืข ืฉื ืืฉืืืืืช OpenShift ืืืงืื ืืื.
ืืืืืื, ืืขืช ืฉืืืืฉ ืืืืฉืื ืงืฆื, ื ืืชื ืืคืจืืก ืืฉืืืืืช ืฉื ืืงืื ืืื ืืืืืช ืื ืืคืืื ืืืืคืื. ืืชืืฆืื ืืื, ืืื ื ืืืฅ ืื ืื ืืกืคืจ ืืฉืืืืืช OpenShift ืขืฆืืืืื ืื ืืชืืืืื ืืขื ื ืืฆืืืืจื ืื-on-premise.
ืืืงืจื ืื, ืืฉ ืืคืชืืจ ืืจืื ืืขืืืช, ืืืืืื:
- ืืงืจืช ืฉืืืฉืืืืืช ื ืืฆืืื ืืืฆื ืืื (ืืืืจืืช, ื ืืืืจ, ืืืกืื ืืื')
- ืฆืืจ ืืืืฉ (ืื ืฉืืืจ) ืืฉืืืืืช ืขื ืกืื ืืฆื ืืืืข.
- ืฆืืจ ืืฉืืืืืช ืืืฉืื ืขื ืกืื ืืฆื ืืืืข.
- ืืฉืงืช ืฉืื ืืืื ืืืกืคืจ ืืฉืืืืืช OpenShift.
- ืืืืจ ืฉืื ืืืื ืขื ืคื ื ืืฉืืืืืช OpenShift ืืจืืืื.
- ืงืืฉืืจ ืชืฆืืจืืช ืชืื ืืืช ืืกืืืืืช ืฉืื ืืช.
ืชืฆืืจืืช ืืืฉืืืื
ืืืืื ืืืืืจ ืืืืื ืฉืืื, ืืืฉืืืื ืขืืืจืื ืืจืื ืืฉืจืฉืจืช ืฉื ืืฉืืืืืช (ืืคืชื, ืฉืื ืืื') ืืคื ื ืฉืื ืืืืขืื ืืืฉืืื ืืืฆืืจ. ืื ืืกืฃ, ืขืงื ืืจืืฉืืช ืืืื ืืช ืืกืงืืืืืืืช, ืืงืืืืช ืืจืื ืคืืจืกืื ืืืฉืืืื ืขื ืคื ื ืืกืคืจ ืืฉืืืืืช ืืงืืืืื ืื ืืืืจืื ืืจืืืื ืฉื ืคืืืคืืจืืช ืขื ื ืฆืืืืจืืช.
ืืืงืจื ืื, ืืฉ ืืคืชืืจ ืืช ืืืฉืืืืช ืืืืืช:
- ืืื ืชื ืืขื ืฉื ืืืฉืืืื (ืืื ืืจืืื, ืืืืจืืช ืืื') ืืื ืืฉืืืืืช (ืืคืชื, ืฉืื ืืื').
- ืืฉืงืช ืฉืื ืืืื ืืืืฉืืืื (ืืื ืืจืืื, ืืืืจืืช ืืื') ืืืกืคืจ ืืฉืืืืืช OpenShift.
- ืืืืจ ืฉืื ืืืื ืืืคืืืงืฆืืืช ืืืฆื ืืืืข ืงืืื.
ืืงืจื ืฉืืืืฉ ื-OpenShift GitOps
1. ืืืืช ืฉืื ืืืื ืืืืืจ Git
ืื ืื ืืฉืืื ืืืื ืืืืกื ืชืฆืืจืืช ืืฉืืืืืช OpenShift ืืืืืจ Git ืืืืืื ืืืชื ืืืืคื ืืืืืืื ืืื ืืืฆืืจ ืืฉืืืืืช ืืืฉืื ืืื ืืืืฅ ืืืืืื ืืืชื ืืืฆื ืืื ืืืฆื ืืืืืข ืืืืืืกื ืืืืืจ Git.
2. ืกื ืืจืื ืขื Secret Manager
ืืื ืื ืื ืืืื ื ืืืืืืืช ืืกื ืืจื ืืืืืืงืืื ืกืืืืื ืฉื OpenShift ืขื ืชืืื ืืช ืืชืืืืืช ืืื Vault ืขื ืื ืช ืื ืื ืืืชื ืืืืฆืขืืช ืืืื ืฉื ืืฆืจื ืืืืืื ืขืืืจ ืื.
3. ืฉืืืื ืืชืฆืืจืืช ืกืืืคื
ืืื ืื ืืืื ืืขื ืจืง ืื OpenShift GitOps ืืขืฆืื ืืืื ืืืชืจืืข ืขื ืื-ืืชืืืืช ืืื ืชืฆืืจืืช ืืืืชืืืช ืืืื ืฉืฆืืื ื ืืืืืจ, ืืื ืฉืืืืื ืืืืื ืืืืืจืืช ืืกืืฃ.
4. ืืืืขืืช ืขื ืกืืืคื ืฉื ืชืฆืืจื
ืื ืฉืืืืฉืืื ืืืงืจื ืฉืื ืืื ืื ืจืืฆื ืืืืื ืืืืืจืืช ืขื ืืงืจืื ืฉื ืกืืฃ ืชืฆืืจื ืืื ืื ืงืื ืืืืืจืืช ืืืืฆืขืื ืืชืืืืื ืืขืฆืื.
5. ืกื ืืจืื ืืื ื ืฉื ืชืฆืืจืืช ืืขืช ืืจืืคืืื ื
ืืืคืฉืจ ืืื ืื ืืืขืจืืช ืืกื ืืจื ืืช ืืฉืืื OpenShift ืขื ืืืืจ Git ืืืงืจื ืฉื ืกืืืคื ืฉื ืชืฆืืจื, ืืื ืืืืืืจ ืืืืืจืืช ืืช ืืืฉืืื ืืืฆื ืืืืข ืงืืื.
6. ืกื ืืจืื ืืืืืืื ืฉื ืชืฆืืจืืช ืืขืช ืกืืืคื
ืืื ืื ืืืื ืื ืืืืืืจ ืืช ืืืฉืืื OpenShift ืื ืฉืืกืชื ืืจื ืืืืืืืืช ืขื ืืืืืจ ืืืฉืจ ืืืืื ืกืืืคื, ืื ืฉืชืฆืืจืช ืืืฉืืื ืชืชืืื ืชืืื ืืืืืจืืช ื-Git.
7. ืืกืคืจ ืืฉืืืืืช - ืืืืจ ืืื
ืืื ืื ืืืื ืืืืกื ืชืฆืืจืืช ืฉื ืืกืคืจ ืืฉืืืืืช OpenShift ืฉืื ืื ืืืืืจ Git ืืื ืืืืืื ืืืชื ืืืืคื ืกืืงืืืื ืืคื ืืฆืืจื.
8. ืืืจืจืืื ืฉื ืชืฆืืจืืช ืืฉืืื (ืืจืืฉื)
ืืื ืื ืืืื ืืืืืืจ ืืืจืจืืื ืฉื ืชืฆืืจืืช ืืฉืืืืืช ืืืืืจ (ืฉืื, ืคืจืื, ืชืืง ืืคืืืงืฆืืืช ืืื' ืขื ืืจืืฉื). ืืืืืื ืืืจืืช, ืื ืืืื ืืงืืืข ืื ืืฉ ืืืืื ืชืฆืืจืืช ืขื ืืฉืืื ืืื ืื ืืืชืจ.
ืืืืืื, ืื ืื ืื ืืขืจืืช ืืืืืจ ืืช ืืืืจืจืืื "ืืฉืืืืืช ืืืฆืืจ (ืคืจืื) โ ืืฉืืืืืช ืฉื ืืขืจืืช X โ ืืฉืืืืืช ืืืฆืืจ ืฉื ืืขืจืืช X" ืืืืืจ Git, ืื ืฉืืืื ืฉื ืืืืืจืืช ืืืืืช ืืืื ืขื ืืฉืืืืืช ืืืืฆืืจ ืฉื ืืขืจืืช X:
- ืืืืจืืช ืืฉืืชืคืืช ืืื ืืฉืืืืืช ืืืืฆืืจ.
- ืืืืจืืช ืขืืืจ ืืฉืืื System X.
- ืืืืจืืช ืขืืืจ ืืฉืืื ืืืืฆืืจ ืฉื ืืขืจืืช X.
9. ืชืื ืืืช ืืขืงืืคืืช ืชืฆืืจื
ืืื ืื ืืืื ืืขืงืืฃ ืงืืืฆื ืฉื ืืืืจืืช ืืืจืืฉื ืืืขืจืืื ืฉืืื, ืืืฉื, ืืื ืืืืื ื ืืช ืืชืฆืืจื ืขืืืจ ืืฉืืืืืช ืกืคืฆืืคืืื ืขืืืื ืื ืืืืื.
10. ืืืื ืืื ืืืืื ืกืืงืืืื ืขืืืจ ืชืฆืืจืืช, ืชืฆืืจืืช ืืืฉืืืื
ืืื ืื ืืืื ืืืืืืจ ืืช ืืชื ืืื ืืืืฉืื ืื ืื ืืืฉืื ืฉื ืชืฆืืจืืช ืืกืืืืืช ืืืฉืืืืืช ืขื ืืืคืืื ืื ืืกืืืืื.
11. ืชืืืื ืืชืื ืืืช
ืืคืชืืื ืืืื ื ืืืืืืืช ืืืืืจ ืืืฆื ืืืืืจื ืืฉืืื ืืืคืืืงืฆืื (Helm Chart, Kubernetes yaml ืืืืจ ืืื') ืขื ืื ืช ืืืฉืชืืฉ ืืคืืจืื ืืืชืืื ืืืืชืจ ืขืืืจ ืื ืืคืืืงืฆืื ืกืคืฆืืคืืช.
ืืื GitOps ืืคืืืคืืจืืช OpenShift
ArgoCD
ArgoCD ืืืืฉืืช ืืช ืืืื External Resource Reconcile ืืืฆืืขื ืืืฉืง ืืฉืชืืฉ ืืจืืื ืืชืืืืจ ืงืฉืจืื ืฉื ืืื ืืจืืื ืืื ืืฉืืืืืช ืืืืืจื Git. ืืืกืจืื ืืช ืฉื ืชืืื ืืช ืื ืืืืืื ืืช ืืืกืจ ืืืืืืช ืื ืื ืืืฉืืืื ืืืฉืจ ArgoCD ืืื ื ืคืืขื.
ืฉืืฃ
Flux ืืืืฉืืช ืืืื On-Cluster Resource Reconcile ืืืชืืฆืื ืืื, ืืื ื ืืืื ืจืืืืื ืฉื ืืืืจ ืืืืืจืืช, ืืืืืื ื ืงืืืช ืชืืจืคื. ืืฆื ืฉื ื, ืืืืงื ืืืื ืืืกืจ ืืจืืืืืืืช, ืืืืืืช ืื ืื ืืคืืืงืฆืืืช ื ืฉืืจืช ืื ืื ืืฉืืื ืืื ื ืืฉื.
ืืชืงื ืช ArgoCD ื-OpenShift
ArgoCD ืืฆืืข ืืืฉืง ืฉืืจืช ืคืงืืื ืืขืืื ืืืกืืฃ ืืื ืืจื ื, ืื ืฉืื ื ืกืงืืจ ืืื ืืช Flux ืืืืืคืืช ืืืจืืช.
ืืื ืืคืจืืก ืืช ArgoCD ืืคืืืคืืจืืช OpenShift 4, ืืฆืข ืืช ืืฉืืืื ืืืืื ืืื ืื ืืฉืืื:
ืคืจืืกืช ืจืืืื ArgoCD ืืคืืืคืืจืืช OpenShift
# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')
ืฉืืคืืจ ืฉื ืฉืจืช ArgoCD ืื ืฉื ืืชื ืืืื ืืจืืืชื ืขื ืืื OpenShift Route
# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect
ืคืจืืกืช ืืื ArgoCD Cli
# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd
ืฉืื ืื ืกืืกืืช ืื ืืืื ืฉื ArgoCD Server
# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password
ืืืืจ ืืฉืืืช ืฉืืืื ืืื, ืชืืื ืืขืืื ืขื ืฉืจืช ArgoCD ืืจื ืืกืืฃ ืืืื ืืจื ื ArgoCD WebUI ืื ืืื ืฉืืจืช ืืคืงืืื ArgoCD Cli.
GitOps - ืืฃ ืคืขื ืื ืืืืืจ ืืื
"ืืจืืืช ืขืืื" - ืื ืื ืฉืื ืืืืจืื ืขื ืืฆื ืฉืื ืืืืืื ืืช ืืขืฉืืช ืืฉืื ืืชืคืกืคืก. ืืืงืจื ืฉื OpenShift, ืืจืฆืื ืืืชืืื ืืื ืืืฉืชืืฉ ืืคืืืคืืจืื ืืืืฉื ืืืืื ืืื ืืื ืืืฆืจ ืืจืื ืืืืืง ืืช ืืืฆื ืืื ืขื ื ืืืื ืืชืืืืงื ืฉื ืืกืืืืื, ืคืจืืกืืช ืืืืืืืงืืื ืืืจืื ืฉื OpenShift. ืืื ืืื ืืกืืืื ืชืืื ืืืื ืืืืืืื?
ืืืฉื ืกืืจืช ืืืชืืืช ืื ืืฉื
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app
ืื ืืฉ ืื ื ืืคืืืงืฆืื ืืขืืืืช ืื. ืืขืช ืืฉ ืืืขืืืจ ืืืชื ืชืืช ื ืืืื GitOps ืืื ืืืืื ืืืื ืืช. ืืงืืฆืืจ, ืื ืขืืฉื ืืช ืื:
- ืฆืืจ ืืืืจ Git ืขืืืจ ืืงืื.
- ืื ื ืืืืฆืืื ืืช ืืืืืืืงืืื ืื ืืืืืื ืฉืื ื ืืืขืืื ืืืชื ืืืืืจ Git.
- ืืืืจื ืืคืจืืกื ืฉื ืืื GitOps.
- ืื ื ืืืกืืคืื ืืช ืืืืืจ ืฉืื ื ืืขืจืืช ืืืืื ืืื.
- ืื ื ืืืืืจืื ืืช ืืืคืืืงืฆืื ืืขืจืืช ืืืืื GitOps ืฉืื ื.
- ืื ื ืืืฆืขืื ืจืืฆืช ื ืืกืืื ืฉื ืืืคืืืงืฆืื ืืืืฆืขืืช ืขืจืืช ืืืืื GitOps.
- ืื ื ืืกื ืืจื ืื ืืืืืืงืืื ืืืืฆืขืืช ืขืจืืช ืืืืื GitOps.
- ืืคืฉืจ ืืืืื ืืกื ืืจืื ืืืืืืื ืฉื ืืืืืืงืืื.
ืืคื ืฉืืืจ ืืืืืจ ืืงืืื
ืืืืืื ืฉืื ื, ื ืืฆืืจ ืืืืจ ืฆืืืืจื ืืืฉ ื- GitHub. ืืชื ืืืื ืืงืจืื ืืื ืืื ืฉืืชื ืจืืฆื, ืื ืื ื ืืฉืชืืฉืื ืืฉื ืืืืืคืืกื.
ืื ืงืืฆื ืืืืืืืงื ืฉื YAML ืื ืืืืกื ื ืืืืคื ืืงืืื ืื ื-Git, ืื ืชืฆืืจื ืืืฉืชืืฉ ืืงืืฆืื ืืืื ืืจืืื oc ืื kubectl. ืืฆืืืื ืืืกื ืืืื ืื ื ืืืงืฉืื ืืช YAML ืขืืืจ ืืจืื ืืฉืืืช, ืืคืจืืกื, ืืฉืืจืืช ืืืืกืืื ืฉืื ื. ืืคื ื ืื, ืฉืืืื ื ืืช ืืืืืจ ืืืืฉ ืฉื ืืฆืจ ืืชืงืืืืืจ ืืชืืื.
oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml
ืืขืช ื ืขืจืื ืืช ืืงืืืฅ deployment.yaml ืืื ืืืกืืจ ืืช ืืฉืื ืฉืืจืื CD ืื ืืืื ืืกื ืืจื.
sed -i '/sgeneration: .*/d' deployment.yaml
ืื ืืกืฃ, ืืฉ ืืฉื ืืช ืืช ืืืกืืื. ืชืืืื ื ืืืืจ ืืฉืชื ื ืืจืืื ืฉืืจืืช ืืืืืจ ืืื ื ืืืืฃ ืืช ingress: null ืืชืืื ืฉื ืืืชื ืืฉืชื ื.
export ROUTE=" ingress:
- conditions:
- status: 'True'
type: Admitted"
sed -i "s/ ingress: null/$ROUTE/g" route.yaml
ืื, ืกืืืจื ื ืืช ืืงืืฆืื, ืื ืื ืฉื ืืชืจ ืืื ืืฉืืืจ ืืืชื ืืืืืจ Git. ืืืืจ ืืื ืืืืจ ืื ืืืคื ืืืงืืจ ืืืืืข ืืืืื, ืืืฉ ืืืกืืจ ืืืืื ืื ืฉืื ืื ืืื ื ืืืืืืืงืืื.
git commit -am โinitial commit of objectsโ
git push origin master
ืืืืฉื ืื ื ืืืฆืืื ืืืขืืืื ืฉืืืจ ืคืจืกืช ืืช ArgoCD (ืืื ืืขืฉืืช ืืืช - ืจืื ืงืืื
argocd repo add https://github.com/cooktheryan/blogpost
ืขืืฉืื ืืืื ื ืืฆืืจ ืืช ืืืคืืืงืฆืื. ืืืคืืืงืฆืื ืืืืืจื ืขืจืืื ืื ืฉืขืจืืช ืืืืื ืฉื GitOps ืชืืื ืืืืื ืืืืจ ืื ืชืืืื ืืืฉืชืืฉ, ืืืืื OpenShift ืืฉ ืฆืืจื ืื ืืืื ืืืืืืงืืื, ืืืืื ืขื ืฃ ืกืคืฆืืคื ืฉื ืืืืืจ ื ืืืฅ, ืืืื ืืฉืืืื ืฆืจืืืื ืืกื ืืจื ืืืืืืืืช.
argocd app create --project default
--name simple-app --repo https://github.com/cooktheryan/blogpost.git
--path . --dest-server https://kubernetes.default.svc
--dest-namespace simple-app --revision master --sync-policy none
ืืจืืข ืฉืืืฉืื ืืฆืืื ืืชืงืืืืืจ Argo, ืขืจืืช ืืืืื ืืชืืืื ืืืืืง ืืืืืืงืืื ืฉืืืจ ื ืคืจืกื ืืื ืืืืืจืืช ืืืืืจ. ืืืืืื ืฉืื ื, ืกื ืืจืื ืื ืืงืื ืืืืืืื ืืืฉืืชืื, ืื ืฉืืืืื ืืื ืขืืืื ืื ืืฉืชื ืื. ืฉืืื ืื ืฉืืืืฉืง Argo CD ืืืคืืืงืฆืื ืฉืื ื ืืืื ืืกืืืืก "ืื ืืกืื ืืจื" ืืืืืื ืฉืืื ืชืืืืช ืฉ-ArgoCD ืืกืคืงืช.
ืื ืืกืืื ืฉืืืฉืจ ื ืชืืื ืืกื ืืจืื ืืขื ืืืืืจ ืืืชืจ, ืืืืืืืงืืื ืื ืืืคืจืกื ืืืืฉ.
ืืขืช ื ืขืจืื ื ืืกืื ืืื ืืืืื ืฉืืื ืฉืืืืืช ืืงืืฆืื ืฉืื ื.
argocd app sync simple-app --dry-run
ืื ืืื ืฉืืืืืช, ืืชื ืืืื ืืืืฉืื ืืกื ืืจืื.
argocd app sync simple-app
ืืืืจ ืืคืขืืช ืืคืงืืื argocd get ืืืคืืืงืฆืื ืฉืื ื, ืขืืื ื ืืจืืืช ืฉืกืืืืก ืืืคืืืงืฆืื ืืฉืชื ื ื-Brea ืื Synced. ืืืฉืืขืืช ืืื ืฉืื ืืืฉืืืื ืืืืืจ Git ืชืืืืื ืืขืช ืืืืชื ืืฉืืืื ืฉืืืจ ื ืคืจืกื.
argocd app get simple-app
Name: simple-app
Project: default
Server: https://kubernetes.default.svc
Namespace: simple-app
URL: https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo: https://github.com/cooktheryan/blogpost.git
Target: master
Path: .
Sync Policy: <none>
Sync Status: Synced to master (60e1678)
Health Status: Healthy
...
ืืขืช ืืชื ืืืื ืืืคืขืื ืกื ืืจืื ืื ืืงืื ืืืืืืื ืืื ืืืืืื ืฉืฉืื ืืืจ ืื ื ืืฆืจ ืืืืคื ืืื ื ืืฉืื ืคืขื ืฉืืืืืืงื ื ืืฆืจ ืื ืืชืขืืื ืืืืืจ, ืชืชืจืืฉ ืคืจืืกื.
argocd app set simple-app --sync-policy automated --auto-prune
ืื, ืืืื ื ืืืฆืืื ืืคืืืงืฆืื ืชืืช ืฉืืืืช GitOps ืฉืืชืืืื ืื ืืฉืชืืฉื ื-GitOps ืืฉืื ืฆืืจื.
ืืงืืจ: www.habr.com