αααααααααΎαααΉααα·ααΆαα’αααΈαααααΆααα αα·αααααΌαα GitOps ααααΌα
ααΆαααααααααααΌααΆαααααααααΌαααΆαα’αα»αααααα
ααΎαααα·ααΆ OpenShift α ααΆαααΆαααααΆαα’ααααααααααΎαααααΆαααααα
ααα»ααα GitOps ααΊααΆαααα»αααααΆαα’αα»αααααααααΆααααΆαααααΎααααΆααααααΎαααΆα Git ααΎααααΈαααααααααα αααααΆαα
ααΆαααααααα αα·αααΆαααααααα
ααΆαααααααααααααα·ααΈα ααααΆαα Git αα
αααα»α GitOps ααααΌαααΆαα
αΆαααα»αααΆααααααααα½αααααααααΆαα’αααΈααααΆαααΆααααααααααα α αΎαααΆαααααΆααααααΌαααΆαα½αα
αααααααααααααΊα’αΆα
ααΆαααΆαααΆααααααα αα·αα’αΆα
αααααααααΆαα
αααα·αααααΆαααααΆααααααΌαααΆαααΆαααΆααα
αααα»α GitOps ααΊαα·αααααΈαα αα·ααΈααΆααααααααααααΌαααΆαααααααΎααΆααΌαααα αΎαααααΎαααααΆααααα
αααααααΎααΆαααΆαα½αααΌαααααααααααα·ααΈα GitOps α’αα»αααααα»αααΆαααααααααααΆααα (ααΆααα·αα·αααα‘αΎααα·α ααΆαααααΎ ααααΆαα
αα·αααΆααα·ααααααα·ααααΆ α¬α αααΆαααααααΆαα’αα»ααααααααΆαα GitOps αα ααΆααααααα»ααααααααΆααααααααΆαα’αα»αααααααααααΌαααΆααααααΎαα‘αΎαα
- ααΆααα·αααααΆα’αααΈααααααααααααΌαααΆααααααΆαα»ααα αααα»αααααΆαα Git (ααΆαααααα ααΆααααα½ααα·αα·αααααα)α
- ααΆαααααΆααααααΌαααααααααΌαααΆαααααΎα‘αΎαααΆααααααααΎααΆαα
- ααααΆαααΆαααααααααααααααααα»αααααΎαααΆαααααΌαααΆαααΆαααααααααΆαα½αααΉααα·αααααααα αααα»αααααΆαααααααααΎααααΎααααα»α Git α
αααααΆααα GitOps
- αα·αααααααααααααααααΌαααΆααα·αααααΆααΆααΆααΌαααααα
ααΆαααααααα ααΆααααααααααααααααααααΌαααΆαα αΆαααα»αααΆααΌα ααΌα ααααααΆα’αΆα ααααΌαααΆααααααΆαα»α αα·ααααααααααααααααααααα·αα αααα»αααααΆαα Git ααααααααΎααΆααααααααα½αααααΆααα·αα αα·ααΈααΆααααααααααααΎα±ααααΆαααΆαααΆααααα½ααααα»αααΆαααΆααα αα αα·αααΆαααααΆααααααΌαα‘αΎααα·ααα αααα»αααααααααα
- ααααΆαααΆααααα ααααΆα αα·αααΆαααααααα ααΆααααααααααααααααααααααΌαααΆαααααα αα·ααααααα αααα»α Git
ααΆααααααΆααααααΆαα»α αα·αααααΎαααααααααααααααααααααα ααααΆααα αααα»α Git ααΎαα’αΆα αααα αα αα·αααααα·αααΆαααααΆααααααΌααα αααααααα αα·ααααααα·ααΈααΆααααΆαααΆααααα½αα ααΎαααα’αΆα ααααΎααααααΆααα»ααααα·ααΆααααα Git ααΎααααΈαααααααααααΆαααΆααα αΆααααΌα αα·ααααααααααΆααααΆαααααΉαααααΌαααααααΆα
- ααΆαααααΆααααααΌαααΆααααααα’αΆα ααααΌαααΆαα’αα»αααααααααααααααααααα·ααΆααααααααΎααΆα
αααααααΎααααΎαααΆα Git ααΎαα’αΆα ααααααααααααΆαααΆααααα½αααΈαααααααααΆαααααΆααααααΌαααααΌαααΆαα’αα»ααααα ααααααΆαααααααα αααα»αααααΆααα α§ααΆα ααα αα½αααα’αΆα αααααα±αααααΆαα·ααααα»αααααααααααΎααααΈαα·αα·ααα α¬ααααΎαααΆαααΆααααααΆαααααΎααααα CI ααα
α αΎααααα»ααααααΆαα½αααααΆααα αα·αα αΆαααΆα αα ααα αΆαα’αααΆα ααααααααααα ααααα αα·αααααΆαααα ααΎααααΈα’αα»ααααααΆαααααΆααααααΌαααΆαααααα α’αααααααΎααααΆααααααΆααααααααΌαααΆαααΆαα’αα»ααααΆααααααααα αααα»αααααΆαα Git αααααΆαααααααα ααΆααααααααααΆαααααααααΌαααΆααααααΆαα»αα
- αααααααΆααααα αΆααααΆαααααααα ααΆααααααααααααα·αααΆαααΆαααααααααα
αα ααααααααααΆαααΆααααα ααααΆαααααααααααααααΌαααΆααααααΆαα»ααααα»αααααΆαα Git α’αααΈααΆααα’αααααααΎαααααΌαααααΎααΊααααααααααααα·ααΈαααααΉαααΆααΆααΆααααΆαααΆααα αα α»ααααααααααααααααααααΌαααΉαααααΆαααΆααααα ααααΆαααααααΆα ααααα·αααΎααααα·ααααααΆααααΈααααα αααααα·ααΈααααα½ααα - α’αΆαααααααΎααΆαααααα - αα»αααααΆααααΆααα·αααααααααΆααααααα½αα―α α¬ααΌαααααΉααααααΎαα’αααΈααΆααααΆααααααΆαααααααα ααΆααααααααα
αααΌααα GitOps αααααΆαα OpenShift
On-Cluster Resource Reconcir
αααααΆαααααΌααα α αααααααΆαα§ααααααααααΆαααααα½ααα»αααααΌααααα»αααΆαααααααααααααΆα Kubernetes (α―αααΆα YAML) αα αααα»αααααΆαα Git ααΆαα½αααΉαααααΆααα·αααα αααααα ααααα·αααΎααΆααα·αααααααααΆααααΌαααΆαααααΎα α§ααααααααααΆααΉαααααΎααΆαααΌαααααΉα α αΎαα’αΆα α αΆαααα·ααΆαααΆαααΎααααΈαααααααΌαααΆααα·αααααααααΆα ααααΌ GitOps αααααααΌαααΆαααααΎαα αααα»αααΆαααααααααα Anthos Config αα·α Weaveworks Flux α
α’αααααααα»αααααα½αααααΆαααΆααααα (αααα»α)
ααααΌαααα’αΆα α αΆαααα»αααΆααΆαααααααα½ααααααααα»α αα ααααααααΎαααΆαα§ααααααααααΆαα½α α¬α αααΎααααααα½ααα»αααααΌααααα»αααΆαααααΎααααΆαααααααααΆααα αααα»αααΌ "ααααΆαα Git - Kubernetes cluster" α ααΆααα»αααααΆαα ααΈαααααΊααΆα ααααααααααΆααααααααααααΈαα½αααα·αα αΆαααΆα αααΆαα§ααααααααααΆααΆα ααααα‘ααααααααΆαααααα ααΌα ααααα Git - k8s ααααΌαααΆααααααααΆααΉαααΆααααΆααΆ CRDs (αα·αααααααααΆαααααΆαααααα½α) αααα’αΆα αααααΆα’αααΈαααααααα§ααααααααααΆαα½αααααΎααααΆαααααα αα αααα»αααααΌααα α§ααααααααααΆααααααααααααΆαα Git αααααΆααααααΆαααα αααα»α CRD ααΆαα½αααΉαααααΆαααα ααααα Kubernetes αααααααΌαααΆααααααΆααααααααα αααα»α CRD α αΎαα’αα»αααααααααααΆααααααααααααα’ααααΎααααααααααΆαααααααααα ααΆαα·ααααααΌααα GitOps αααααααΌαααΆαααααΎαα αααα»α ArgoCD α
GitOps αα ααΎαααα·ααΆ OpenShift
ααΆααααααααααα αααααΆαα ααΆαααααααα Kubernetes αα α»α ααααα
ααΆαα½αααΉαααΆαααΈαααΆαααΆααα Kubernetes αα·αααΆαααΎαα‘αΎαααΌααααααΆαααα·αααΆααααα»αααααΆααααααα α»ααα αα·αααΆαααααΆααα α ααα½αααααααααααα»α OpenShift αααααΆααα’αα·αα·ααααααΆααααααααα»αααΎαα‘αΎααααααα
ααΆα§ααΆα ααα αα αααααααΎ Edge Computing α αααααααααα’αα·αα·ααααααΆααα’αΆα ααααΌαααΆαααΆαααααααΆαααΆαααα α¬ααΆααααΆααα ααΆαααααα ααΆααααααΌαααΆααααααα±ααααααααααααααα»α OpenShift α―αααΆααα α¬αααααααααα½ααα½αα ααα½ααα αααα»ααααααΆααΆααα αα·ααα αααα»αααα·αααα
αααα»αααααΈααα αααα αΆααΆα αααΎαααααΌααααααααΆα ααΆαα·αααα
- αααααααααααΆα ααααααααα·ααα αααα»αααααΆαααΆαααΌα ααααΆ (ααΆαααααα ααΆααααα½ααα·αα·ααα ααΆααααα»αααα)
- αααααΎαα‘αΎααα·α (α¬ααααΆα) α ααααααααααα’ααααΎααααΆαααΆααααααααααΆααα
- αααααΎαα αααααααααΈαααααα’ααααΎαααααααααααααΆααα
- α αΆααααααΎαααΆαααααΆααααααΌααα αααα»α OpenShift α αααΎαα
- αααα‘ααβααΆαβααααΆααβααααΌβαβαα βααΌααΆααβαααα»α OpenShift α αααΎαβα
- ααααΆααβααΆαβαααααβαα ααΆααααααααβααααΌβαα βααα·ααΆααΆαβαααααβααααΆα
ααΆαααααααα ααΆαααααααααααααα·ααΈ
αααα»αα’αα‘α»ααααααααααΈαα·ααααααα½ααα αααααα·ααΈαααααααααααΆαααααααααααΆααααα ααααα (dev, stage ααα) αα»αααααααα αααα αααα»αα αααααααα·αααααα ααΎαααΈααα αααααΆαααααΆαα’αΆα ααααΆα αα·ααααααΌαααΆαααααΆαααααΎααΆαααααααΆα α’αα·αα·αααααααααΆααα±ααααααΎααααΆαααααααα·ααΈαα ααΌααΆααα ααααααααα»αααα·ααα α¬αααααααΆα αααΎααααααα·ααΆαααααΆααΆαααα
αααα»αααααΈααα αα·α αα ααΆαααΆααααααααααΌααααααααΆαα
- ααΆααΆα±ααααΆαα αααΆαααααααα·ααΈ (αααααααααααααΈα ααΆαααααααα ααΆααααααααααα) αααΆαα ααααα (dev, ααααΆααααΆαααα)α
- α αΆααααααΎαααΆαααααΆααααααΌααα αααααα·ααΈ (αααααααααααααΈα ααΆαααααααα ααΆααααααααααα) αα αααα»ααααα»α OpenShift ααΆα αααΎαα
- αααα‘ααβααΆαβααααΆααβααααΌβαβαααααα·ααΈβαα βααααΆαααΆαβαααβααΆαβααααΆααβααΈβαα»αβα
OpenShift GitOps ααααΎααααΈ
1. α’αα»ααααααΆαααααΆααααααΌαααΈααααΆαα Git
α’ααααααααααααα αααααα’αΆα αααααΆαα»αααΆαααααααα ααΆααααααααα ααααα OpenShift αα αααα»αααααΆαα Git α αΎαα’αα»αααααα½αααΆαααααααααααααααα·ααΎααααΈαααααΎαα αααααααααΈααααα·αα αΆαααΆα αααααΉαααααα α αΎαααΆααα½αααΆαα ααΆααααααΌα ααααΆααααα·ααα ααΉααααααααααααααΆααααααααααΆαα»ααααα»αααααΆαα Git α
2. ααΆαααααΎααααΆαααααααΆαα½αα’αααααααααααααααααΆαα
α’ααααααααααααααααΉαααα½αααΆαα’ααααααααααααααααααΈαααααααΆααααα»αααΆαααααΎααααΆαααααααααα»αααααΆαα OpenShift ααΆαα½αααΉααααααα·ααΈααααααααΌα ααΆ Vault ααΎααααΈααααααααααα½αααΆαααααααΎα§ααααααααααΆααααααΎαααΆαα·ααααααααΆααααΏααααα
3. ααΆααααααααααααΆαααααααα ααΆαααααααααααΆαα
α’ααααααααααααααΉααααα α·ααα αα»αααααΆαα OpenShift GitOps αααα½αααΆαααααα’ααααααααΆα αα·ααααααΆαα’αααΈααΆααα·αααααααααΆαααΆαααΆαααααααα ααΆαααααααααα·α αα·αα’αααΈαααααΆααααααΆαααα αααα»αααααΆαα ααΌα αααααα½αααα’αΆα ααααΎααααααΆααα ααα ααααααΆααααΆααα
4. ααΆαααΌαααααΉαα’αααΈααΆααααΆααααααΆαααααααα ααΆαααααααα
αα½αααΆααΆααααααααααααα»αααααΈαααα’ααααααααααααα ααααααααΆαααΆαααα ααα’αααΈααααΈααααΆαααααααα ααΆαααααααααααΆαα ααΎααααΈα αΆαααα·ααΆαααΆααααααααααΆαααΆαααα ααααααααα½αα―αα
5. ααΆαααααΎααααΆααααααααααααααΆαααααααα ααΆαααααααααα ααααααΆαα
α’αα»ααααΆαα±ααα’ααααααααααααααααΎααααΆαααααα ααααα OpenShift ααΆαα½αααααΆαα Git αα αααα»αααααΉαααα·ααΆαααααααΆαααααααα ααΆαααααααααααΆαα ααΎααααΈαααα‘ααα ααααααα ααααΆαααΆααααααΆαααααΆααααΈαα»ααααΆαααΆαααα ααα
6. ααΆαααααΎααααΆααααααααααααααααααααα·ααααΆαααααααα ααΆαααααααααα ααααααΆαα
α’ααααααααααααααα’αΆα ααααααα ααΆαααααααα OpenShift cluster ααΎααααΈααααΎααααΆααααααααααααααααααααα·ααΆαα½αααΉαααααΆαα αα ααααααααΆααααΆααααααΌαααΆαααααΎα ααΌα ααααααΆαααααααα ααΆααααααααα ααααααααααααααΌαααααΆααΉαααΆαααααααα αααα»α Git α
7. α αααααααΆα αααΎα - ααααΆαααα½αα
α’ααααααααααααα’αΆα αααααΆαα»αααΆαααααααα ααΆαααααααααααααα»α OpenShift ααααααααααΆααΆα αααΎααα αααα»αααααΆαα Git α αΎαααααΎαααΎααα½αααΆααΆααααααΌαααΆαα
8. ααΆααΆαα»ααααααααΆαααααααα ααΆααααααααα ααααα (αααα)
α’ααααααααααααα’αΆα αααααααΆααΆαα»ααααααααΆαααααααα ααΆααααααααα ααααααα αααα»αααααΆαα (ααααΆααααΆα ααα·ααα ααααααααααααα·ααΈα αααααΆααα·αααα ααΆα’αΆα αααααααΆααΎααΆαααααααα ααΆαααααααααα½αααααααΌαααΆαα’αα»ααααα ααααα ααααααα½α α¬α αααΎαα
α§ααΆα ααα ααααα·αααΎα’αααααααααααααααααααΆααΆαα»αααα βα αααααααα·ααααα (ααα·ααα) β α ααααααααααααα X β α αααααααα·ααααααααααααααα Xβ αα αααα»αααααΆαα Git αααααΆααα½ααααα αΌαααααΆααααΆααααααααΆααααααααααΌαααΆαα’αα»ααααα ααααα αααααααα·ααααααααααααααα Xα
- ααααααα ααΆααααααααααΌαα α αααααααα»αααα·αααααααΆααα’ααα
- ααααααα ααΆαααααααααααααΆααα ααααα System X α
- ααααααα ααΆαααααααααααααΆααα αααααααα·ααααααααααααα X α
9. αααα½αααΎααααΌ αα·αααΆαααααααα ααΆαααααααα
ααΆα§ααΆα ααα α’ααααααααααααα’αΆα ααα·ααααααα»αααααΆαααααααα ααΆαααααααααααααΆαααα½ααααα αα·αααααααααααα½ααα α§ααΆα ααα ααΎααααΈααααααα½αααΆαααααααα ααΆαααααααααααααΆααα αααααααΆααααΆααααααα½αααααΉαααααΌαααΆαα’αα»ααααα
10. ααααΎαααΎααα½ααααα αΌα αα·ααα·αααΆαααααα αΌααααααΆααααΆαααααααα ααΆαααααααα ααΆαααααααα ααΆαααααααααααααα·ααΈ
α’αααβαααααααααβα’αΆα βαααααβααααααααβαααααΆααβαααααα·ααΈ α¬βααΆαβαα·αβα’αα»ααααβααβααΆαβαααααβαα ααΆααααααααβααΆααααΆααβα ααααβα αααααβαααβααΆαβααααααβααΆααααΆααα
11. ααΆαααΆααααααααΌ
α’αααα’αα·ααααααααΉαααα½αααΆαα’αααααααααααααΈαααααααΆααααα»αααΆαααααΎαααΎααααααααααααΆααααααα·ααΈααΉαααααΌαααΆαααααα (Helm Chart, pure Kubernetes yaml ααα) ααΎααααΈααααΎαααααααααααααααα»ααααααΆαααααααα·ααΈααΆααααΆααααΈαα½ααα
α§ααααα GitOps αα ααΎαααα·ααΆ OpenShift
ArgoCD
ArgoCD α’αα»ααααααααΌααΆαααααααααΆααααΆαααΆααααα αα·ααααααααΌα UI αααααΆααααααΆαααααα αααααΆαααααααα½ααααααΉαα αααΎααααΆαα ααααα αα·αααααΆαα 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
# 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 α α’αααβα’αΆα βα α βααΆβααΆαβα’αααΈβαααβα’αααβα αΌαα α·ααα ααΎαβααααΎβααααα blogpost α
ααααα·αααΎα―αααΆαααααα» 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 ααΎααααΈαα»αααΆαααα Argo 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 CD ααα αααα’ααα§αααααα
αΆααααααΎααα·αα·αααααΎαααααα»αααααΆαααΆαααααααΆααα½α
α αΎααααααΆααααΉααα·ααααααα
αααα»αααααΆααα αααα»αα§ααΆα αααααααααΎα ααΆαααααΎααααΆααααααααααααααααααααα· αα·αααΆααααα’αΆαααααΌαααΆααα·α ααΌα
ααααααΆαα»αα·αααααΆααααααΌααα
α‘αΎαααα ααΌαα
αααΆαααΆαα
αααα»αα
ααα»α
αααααΆαα Argo CD αααααα·ααΈααααααΎαααΉαααΆαααααΆαααΆα "Out of Sync" ααΈααααααα·αααΆαααααΆααααααΆααα ArgoCD αααααα±αααααααα
αααβααΆβααΌαα ααα»βαααβαα
βαααβαααβααΎαβα
αΆααβααααΎαβααααΎβααααΆαααααβααααα·α
βαααααβαα ααααα»βααΉαβαα·αβααααΌαβααΆαβααΆααβα±ααβααααΎβα‘αΎααα·αβααα
α₯α‘αΌαααα α αΌαααΎαααααΎααΆαααΆααααα ααΎααααΈααααΆααααΆαα·αααΆαααα α»ααα αααα»αα―αααΆαααααααΎαα
argocd app sync simple-app --dry-run
ααααα·αααΎαα·αααΆαααα α»αααααα α’αααα’αΆα ααααααααΎααααΆαααααα
argocd app sync simple-app
αααααΆααααΈααααΎαααΆα argocd get command αα ααΎαααααα·ααΈααααααΎα ααΎααα½αααααΎαααΆααααΆαααΆααααααα·ααΈααΆαααααΆααααααΌααα ααΆ Healthy α¬ 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