#Headline
ãã®ç« ã§ã¯ãKubernetesäžã§GitOpsãå¯èœãšããCDããŒã«ã§ããArgo CDã«ã€ããŠçŽ¹ä»ããå°å ¥ããŸãã
CI/CDã¯ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒãšç¶ç¶çããªããªãŒ/ãããã€ã¡ã³ãïŒCDïŒãå®çŸããããã®ææ³ã§ãã CIã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãã«ãããã¹ããããã³ã³ãŒãã®çµ±åãèªååããããã»ã¹ CDã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããèªååããããã»ã¹ã§ãã ãã¹ãããããã€ãèªååããããšã§ããªããã¹ãäœæ¥éãæžããããšã§äœã£ããªãœãŒã¹ã§ã¢ãªã±ãŒã·ã§ã³ããœãããŠã§ã¢ã®å質ãé«ãããããªãœãŒã¹ãµã€ã¯ã«ãæ©ããããšãç®çãšããŠããã
GitOpsã¯ãCI/CDãå®çŸããããã®ææ³ã®äžã€ã§ãGitã®ãªããžããªã®å€æŽãããªã¬ãŒã«CI/CDãå®è¡ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããèªååããããã»ã¹ã§ãã
Kubrnetesçšã®GitOpsããŒã«ã§ãGitãªããžããªã«æ ŒçŽããããããã§ã¹ãããããã€ããããšãã§ããŸããWEB GUIãšCLIã®äž¡æ¹ã§æäœããããšãã§ããã¢ããªã±ãŒã·ã§ã³ãKuberenetesã®ãªãœãŒã¹ã®ç¶æ ãå¯èŠåãç°¡åã«ç®¡çããäºãå¯èœã«ãªã£ãŠããŸãã ArgoCDã¯GitHubçããã®WebhookãåãåããGitãªããžããªã«æ ŒçŽããããããã§ã¹ãããããã€ããããšãã§ãããããéçºè ã®ã³ãŒãPushãPRãããªã¬ãŒã«ãããã€ãŸã§å®è¡ããããšãã§ããŸãã
Argo CDã¯äžã€ã®ã³ã¢ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- API Server
- Repository Server
- Application Controller
ã¢ããªã±ãŒã·ã§ã³ãGitãªããžããªã®å®çŸ©ãšèšå®ãšäžèŽããŠãããã©ããã瀺ãã¹ããŒã¿ã¹ã§ãã
Gitãªããžããªãšã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäžèŽãããã¢ããªã±ãŒã·ã§ã³ã«å€æŽããã£ãããåæãšã©ãŒãçºçããããšã瀺ããŸãã
Gitãªããžããªãšã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäžèŽããã¢ããªã±ãŒã·ã§ã³ãæåŸ ã©ããã«æ©èœããŠããããšã瀺ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã瀺ãç°ãªãã¹ããŒã¿ã¹ã§ãã¢ããªã±ãŒã·ã§ã³ã®å¥å šæ§ãåäœç¶æ ã瀺ãã¹ããŒã¿ã¹ã§ãã
ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããŒãã³ãããµãŒããŒãæåŸ ã©ããã«å¿çãããšã©ãŒãé害ããªãç¶æ ã§ãã
ã¢ããªã±ãŒã·ã§ã³ãå®å šã«åæ¢ããŠããªãããäžéšã®åé¡ãååšããç¶æ ã§ãã
ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãçŸåšãæ°ãããªã¯ãšã¹ãããããã€ã¡ã³ããªã©ã®æäœãåŠçããŠããããšã瀺ã"Healthy" ãŸã㯠"Degraded" ã®ç¶æ ã«å€ãããŸãã
ãããã®äžã€ã®åŠçã¯ãGitã¬ããžããªãšArgo CDã®ç¶æ ãåæãããããã®åŠçã§ãã现ããªéããååšããŸãã
ææ°ã®Gitäžã®ãããã§ã¹ããšRepository Serverå ã«ãããããã§ã¹ããæ¯èŒããå·®åãåæ ããŸãã éåžžã®æŽæ°ã¯ããã©ã«ãã§3åããšã«è¡ãããŸãã
HelmãKustomizeãªã©ã®ã³ãŒãããçæããããããã§ã¹ãããã£ãã·ã¥ããŠãããããã§ã¹ããã£ãã·ã¥ãã¯ãªã¢ããæ°ãã«RefreshåŠçãè¡ãæäœã§ããããã«ããããããã§ã¹ãã®å€æŽã®æç¡ã«ãããããããããã§ã¹ããåçæã§ããŸãã ããã©ã«ãã§24æéããšã«ããããã§ã¹ããã£ãã·ã¥ã®æå¹æéãåãããšãã«è¡ãããŸãã
Kubernetes clusterãGitã®ç¶æ ã«åæãããããããããã§ã¹ãã®åæ ïŒãããã€ïŒãããŸãã
Argo CDãå©çšããäžã§ã¯ãGitHubãžã®Pushçã®å€æŽãå¿ èŠäžå¯æ¬ ã«ãªããŸãããã®ããããã®ãã³ãºãªã³ã®ãªããžããªãforkããŠæäœããçºã®æºåãããŸãã
ãã®ãã³ãºãªã³ã«ã¢ã¯ã»ã¹ããforkãã¯ãªãã¯ããŸã
Create fork ãã¯ãªãã¯ããŸã
èªèº«ã®ã¢ã«ãŠã³ãã§forkãããŠããããšã確èªã§ããŸã
GitHubã®ãªããžããªã®ç»é²ãPushã¯forkããèªèº«ã®ãªããžããªãå©çšããŠäžãã
helmãã¡ã€ã«ãå©çšããŠArgo CDãã€ã³ã¹ããŒã«ããŸãã
helmfile sync -f helm/helmfile.yaml
äœæããããªãœãŒã¹ã¯äžèšã®éãã§ãã
kubectl get service,deployment -n argo-cd
# å®è¡çµæ
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argo-cd-argocd-applicationset-controller ClusterIP 10.96.209.173 <none> 7000/TCP 26d
service/argo-cd-argocd-dex-server ClusterIP 10.96.116.27 <none> 5556/TCP,5557/TCP 26d
service/argo-cd-argocd-redis ClusterIP 10.96.28.90 <none> 6379/TCP 26d
service/argo-cd-argocd-repo-server ClusterIP 10.96.249.188 <none> 8081/TCP 26d
service/argo-cd-argocd-server ClusterIP 10.96.152.238 <none> 80/TCP,443/TCP 26d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/argo-cd-argocd-applicationset-controller 1/1 1 1 26d
deployment.apps/argo-cd-argocd-dex-server 1/1 1 1 26d
deployment.apps/argo-cd-argocd-notifications-controller 1/1 1 1 26d
deployment.apps/argo-cd-argocd-redis 1/1 1 1 26d
deployment.apps/argo-cd-argocd-repo-server 1/1 1 1 26d
deployment.apps/argo-cd-argocd-server 1/1 1 1 26d
ingressãäœæããArgo CDã®WEB UIã«ã¢ã¯ã»ã¹åºæ¥ãããã«ããŸãã
kubectl apply -f ingress/ingress.yaml
http://argocd.vmXX.handson.cloudnativedays.jp/ ãžã¢ã¯ã»ã¹ããŸããäžèšã®ããŒãžã«ã¢ã¯ã»ã¹åºæ¥ãã確èªããŠäžããã
- ãŠãŒã¶å: admin
- ãã¹ã¯ãŒã: 以äžã®ã³ãã³ãããµãŒãäžã§å®è¡ããå€
kubectl -n argo-cd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d ; echo
åæãããGitã®ã¬ããžããªãç»é²ããŸãã
Settings - > Repositories ãšé²ã¿ CONEECT REPOãã¯ãªãã¯ããŸãã äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®
Choose your connection method: VIA HTTPS
Type: git
Project: default
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
CONNECTãã¯ãªãã¯ããŠãäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã
è©Šãã«ãã¢ã¢ããªã®ãããã€ãè¡ããArgo CDã®äžé£ã®æäœãè¡ããŸãã
Argo CDã«åæãããGitãªããžããªããæºåããŸãã
git clone https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson.git
Applicationsã®ç»é¢ã«ãã㊠+ NEW APPãã¯ãªãã¯ããŸã äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®ããŸãã
GENERAL
Application Name: argocd-demo
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO CREATE NAMESPACE [v]
SOURCE
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
Revision: main
Path: chapter05_argocd/app/default
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace: argocd-demo
èšå®ã§ããããCREATEãã¯ãªãã¯ããŠãäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã
ããŒãžäžéšã«ããSYNCãã¯ãªãã¯ããŠãç¡äºãããã€ããããšäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã
ãã©ãŠã¶ãã http://app.argocd.vmXX.handson.cloudnativedays.jp ãžã¢ã¯ã»ã¹ããŠç¢ºèªããŠã¿ãŠãã ãããã¢ããªã±ãŒã·ã§ã³ã衚瀺ããéãè²ã®ã¿ã€ã«ãåºãŠããã®ã確èªã§ããŸãã
äžèšã®æé ã§Gitã«ä¿åããŠãããããã§ã¹ããåç §ããŠãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãè¡ããŸããã次ã«Gitã®å€æŽã«Kubernetes ClusterãåæãããŸãã
app/default/deployment.yamlã®ç·šéãè¡ããŸãã imageã®tagãblueããgreenã«å€æŽããŸãã
image: argoproj/rollouts-demo:green
å·®åãforkããmainãã©ã³ãïŒArgo CDã®appãäœæããéã«æå®ãããã©ã³ãïŒã«åã蟌ã¿ãŸãã
git push origin main
Argo CDã¯ããã©ã«ãã§ã¯3åã«äžåã®é »åºŠã§ãã©ã³ãã確èªããå·®åãæ€åºããŠããŸãã 3ååŸ ãŠãªãå Žåã«ã¯ãããŒãžäžéšã«ãã [REFRESH]ãã¯ãªãã¯ããŸããäžèšã®ããã«deploymentã«ãããŠå·®åãæ€åºãããŸããïŒé»è²ã§è¡šç€ºãããŠããOutOfSyncãå·®åãããããšã瀺ããŠããŸãïŒ ã¡ãªã¿ã«Appã®èšå®ã«ãããŠãSYNC POLICYãManualã§ãªãAutoã«ããŠããå Žåã«ã¯ãããã§OutOfSyncãæ€ç¥ãããšèªåã§ArgoCDãSyncãå®è¡ããŸãã Gitã®å€æŽãKubernetes Clusterã«åæ ãããããã«ããŒãžäžéšã«ããSYNCãã¯ãªãã¯ããŠãäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã http://app.argocd.vmXX.handson.cloudnativedays.jp ãžã¢ã¯ã»ã¹ããŠç¢ºèªãããšã¿ã€ã«ãéããç·ã«å€ãã£ãããšã確èªã§ããŸãã
ArgoCDäžã§ãããã§ã¹ãã®ç®¡çããŒã«ã§ãããKustomizeããå©çšãããéçºç°å¢ãšæ¬çªç°å¢ã®2ã€ã®ãããã§ã¹ã管çãè¡ããŸãã
Applicationsã®ç»é¢ã«ãã㊠+ NEW APPãã¯ãªãã¯ããæ¬çªç°å¢ã»éçºç°å¢ããããã®ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã Applications äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®ããŸãã(éçºç°å¢ãšæ¬çªç°å¢ã§åããŠè¡šç€ºããŠããé ç®ã¯ãããããèšå®ããŠãã ãã)
GENERAL
Application Name:
éçºç°å¢: argocd-kustomize-dev
æ¬çªç°å¢: argocd-kustomize-prd
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO CREATE NAMESPACE [v]
SOURCE
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
Revision: main
Path:
éçºç°å¢: chapter05_argocd/app/Kustomize/overlays/dev
æ¬çªç°å¢: chapter05_argocd/app/Kustomize/overlays/prd
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace:
éçºç°å¢: argocd-kustomize-dev
æ¬çªç°å¢: argocd-kustomize-prd
èšå®ã§ããããCREATEãã¯ãªãã¯ããŸã
ããŒãžäžéšã«ãã SYNCãã¯ãªãã¯ããŸã(éçºç°å¢ã®å Žåã¯podã1åãæ¬çªç°å¢ã®å Žåã¯podã2ååºæ¥ãã®ã確èªã§ããŸãã)
ãã©ãŠã¶ã§åç°å¢ãžã¢ã¯ã»ã¹ããŠç¢ºèªããŠã¿ãŠãã ãããã¿ã€ã«ã®è²ãéçºç°å¢ãšæ¬çªç°å¢ã§éãäºã確èªã§ããŸãã
- éçºç°å¢: dev.kustomize.argocd.vmXX.handson.cloudnativedays.jp
- æ¬çªç°å¢: prd.kustomize.argocd.vmXX.handson.cloudnativedays.jp
Kubernetesã®ããã±ãŒãžãããŒãžã£ãŒã®Helmãå©çšãããããã€ãè¡ããŸãã
Applicationsã®ç»é¢ã«ãã㊠+ NEW APPãã¯ãªãã¯ããŸã äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®ããŸãã
GENERAL
Application Name: argocd-helm
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO CREATE NAMESPACE [v]
SOURCE
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
Revision: main
Path: chapter05_argocd/app/Helm/rollouts-demo
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace: argocd-helm
èšå®ã§ããããCREATEãã¯ãªãã¯ããŸã ããŒãžäžéšã«ãã SYNCãã¯ãªãã¯ããŸãïŒç¡äºãããã€ããããšäžèšã®ããã«ãªããŸãïŒ ãã©ãŠã¶ã§ helm.argocd.vmXX.handson.cloudnativedays.jp ã¢ã¯ã»ã¹ããŠç¢ºèªããŠã¿ãŠãã ãããHelmã䜿ã£ãŠãããã€ãåºæ¥ãŠããäºã確èªã§ããŸãã
åã¢ããªã®DELETEãã¯ãªãã¯ããŸã
Applicationsç»é¢ã®å Žåã¯ãäžçªå³äžã®ç«¯ã«ã
詳现ç»é¢ã®å Žåã¯ãå³äžã®2çªç®ã«ãããŸãã
åé€ããéã«ã¢ããªã±ãŒã·ã§ã³åã®å ¥åãããã®ã§å ¥åããŠOKãã¯ãªãã¯ããŸãã
å šãŠã®ã¢ããªã±ãŒã·ã§ã³ãåé€ããŠãåããŠã¢ã¯ã»ã¹ããç»é¢ãšåãããã«ããŠäžããã
namespaceã®åé€ãè¡ããŸãã
kubectl delete namespace argocd-demo argocd-kustomize-dev argocd-kustomize-prd argocd-helm
ãã®ç« ã§ã¯ãKubernetesäžã§GitOpsãå¯èœãšããCDããŒã«ã§ããArgo CDã«ã€ããŠçŽ¹ä»ããå°å ¥ããŸãã
CI/CDã¯ãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ïŒCIïŒãšç¶ç¶çããªããªãŒ/ãããã€ã¡ã³ãïŒCDïŒãå®çŸããããã®ææ³ã§ãã CIã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãã«ãããã¹ããããã³ã³ãŒãã®çµ±åãèªååããããã»ã¹ CDã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããèªååããããã»ã¹ã§ãã ãã¹ãããããã€ãèªååããããšã§ããªããã¹ãäœæ¥éãæžããããšã§äœã£ããªãœãŒã¹ã§ã¢ãªã±ãŒã·ã§ã³ããœãããŠã§ã¢ã®å質ãé«ãããããªãœãŒã¹ãµã€ã¯ã«ãæ©ããããšãç®çãšããŠããã
GitOpsã¯ãCI/CDãå®çŸããããã®ææ³ã®äžã€ã§ãGitã®ãªããžããªã®å€æŽãããªã¬ãŒã«CI/CDãå®è¡ããããšã§ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããèªååããããã»ã¹ã§ãã
Kubrnetesçšã®GitOpsããŒã«ã§ãGitãªããžããªã«æ ŒçŽããããããã§ã¹ãããããã€ããããšãã§ããŸããWEB GUIãšCLIã®äž¡æ¹ã§æäœããããšãã§ããã¢ããªã±ãŒã·ã§ã³ãKuberenetesã®ãªãœãŒã¹ã®ç¶æ ãå¯èŠåãç°¡åã«ç®¡çããäºãå¯èœã«ãªã£ãŠããŸãã ArgoCDã¯GitHubçããã®WebhookãåãåããGitãªããžããªã«æ ŒçŽããããããã§ã¹ãããããã€ããããšãã§ãããããéçºè ã®ã³ãŒãPushãPRãããªã¬ãŒã«ãããã€ãŸã§å®è¡ããããšãã§ããŸãã
Argo CDã¯äžã€ã®ã³ã¢ã³ã³ããŒãã³ãã§æ§æãããŠããŸãã
- API Server
- Repository Server
- Application Controller
ã¢ããªã±ãŒã·ã§ã³ãGitãªããžããªã®å®çŸ©ãšèšå®ãšäžèŽããŠãããã©ããã瀺ãã¹ããŒã¿ã¹ã§ãã
Gitãªããžããªãšã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäžèŽãããã¢ããªã±ãŒã·ã§ã³ã«å€æŽããã£ãããåæãšã©ãŒãçºçããããšã瀺ããŸãã
Gitãªããžããªãšã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãäžèŽããã¢ããªã±ãŒã·ã§ã³ãæåŸ ã©ããã«æ©èœããŠããããšã瀺ããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ã瀺ãç°ãªãã¹ããŒã¿ã¹ã§ãã¢ããªã±ãŒã·ã§ã³ã®å¥å šæ§ãåäœç¶æ ã瀺ãã¹ããŒã¿ã¹ã§ãã
ã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ããŒãã³ãããµãŒããŒãæåŸ ã©ããã«å¿çãããšã©ãŒãé害ããªãç¶æ ã§ãã
ã¢ããªã±ãŒã·ã§ã³ãå®å šã«åæ¢ããŠããªãããäžéšã®åé¡ãååšããç¶æ ã§ãã
ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãçŸåšãæ°ãããªã¯ãšã¹ãããããã€ã¡ã³ããªã©ã®æäœãåŠçããŠããããšã瀺ã"Healthy" ãŸã㯠"Degraded" ã®ç¶æ ã«å€ãããŸãã
ãããã®äžã€ã®åŠçã¯ãGitã¬ããžããªãšArgo CDã®ç¶æ ãåæãããããã®åŠçã§ãã现ããªéããååšããŸãã
ææ°ã®Gitäžã®ãããã§ã¹ããšRepository Serverå ã«ãããããã§ã¹ããæ¯èŒããå·®åãåæ ããŸãã éåžžã®æŽæ°ã¯ããã©ã«ãã§3åããšã«è¡ãããŸãã
HelmãKustomizeãªã©ã®ã³ãŒãããçæããããããã§ã¹ãããã£ãã·ã¥ããŠãããããã§ã¹ããã£ãã·ã¥ãã¯ãªã¢ããæ°ãã«RefreshåŠçãè¡ãæäœã§ããããã«ããããããã§ã¹ãã®å€æŽã®æç¡ã«ãããããããããã§ã¹ããåçæã§ããŸãã ããã©ã«ãã§24æéããšã«ããããã§ã¹ããã£ãã·ã¥ã®æå¹æéãåãããšãã«è¡ãããŸãã
Kubernetes clusterãGitã®ç¶æ ã«åæãããããããããã§ã¹ãã®åæ ïŒãããã€ïŒãããŸãã
Argo CDãå©çšããäžã§ã¯ãGitHubãžã®Pushçã®å€æŽãå¿ èŠäžå¯æ¬ ã«ãªããŸãããã®ããããã®ãã³ãºãªã³ã®ãªããžããªãforkããŠæäœããçºã®æºåãããŸãã
ãã®ãã³ãºãªã³ã«ã¢ã¯ã»ã¹ããforkãã¯ãªãã¯ããŸã
Create fork ãã¯ãªãã¯ããŸã
èªèº«ã®ã¢ã«ãŠã³ãã§forkãããŠããããšã確èªã§ããŸã
GitHubã®ãªããžããªã®ç»é²ãPushã¯forkããèªèº«ã®ãªããžããªãå©çšããŠäžãã
helmãã¡ã€ã«ãå©çšããŠArgo CDãã€ã³ã¹ããŒã«ããŸãã
helmfile sync -f helm/helmfile.yaml
äœæããããªãœãŒã¹ã¯äžèšã®éãã§ãã
kubectl get service,deployment -n argo-cd
# å®è¡çµæ
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/argo-cd-argocd-applicationset-controller ClusterIP 10.96.209.173 <none> 7000/TCP 26d
service/argo-cd-argocd-dex-server ClusterIP 10.96.116.27 <none> 5556/TCP,5557/TCP 26d
service/argo-cd-argocd-redis ClusterIP 10.96.28.90 <none> 6379/TCP 26d
service/argo-cd-argocd-repo-server ClusterIP 10.96.249.188 <none> 8081/TCP 26d
service/argo-cd-argocd-server ClusterIP 10.96.152.238 <none> 80/TCP,443/TCP 26d
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/argo-cd-argocd-applicationset-controller 1/1 1 1 26d
deployment.apps/argo-cd-argocd-dex-server 1/1 1 1 26d
deployment.apps/argo-cd-argocd-notifications-controller 1/1 1 1 26d
deployment.apps/argo-cd-argocd-redis 1/1 1 1 26d
deployment.apps/argo-cd-argocd-repo-server 1/1 1 1 26d
deployment.apps/argo-cd-argocd-server 1/1 1 1 26d
ingressãäœæããArgo CDã®WEB UIã«ã¢ã¯ã»ã¹åºæ¥ãããã«ããŸãã
kubectl apply -f ingress/ingress.yaml
http://argocd.vmXX.handson.cloudnativedays.jp/ ãžã¢ã¯ã»ã¹ããŸããäžèšã®ããŒãžã«ã¢ã¯ã»ã¹åºæ¥ãã確èªããŠäžããã
- ãŠãŒã¶å: admin
- ãã¹ã¯ãŒã: 以äžã®ã³ãã³ãããµãŒãäžã§å®è¡ããå€
kubectl -n argo-cd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d ; echo
åæãããGitã®ã¬ããžããªãç»é²ããŸãã
Settings - > Repositories ãšé²ã¿ CONEECT REPOãã¯ãªãã¯ããŸãã äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®
Choose your connection method: VIA HTTPS
Type: git
Project: default
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
CONNECTãã¯ãªãã¯ããŠãäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã
è©Šãã«ãã¢ã¢ããªã®ãããã€ãè¡ããArgo CDã®äžé£ã®æäœãè¡ããŸãã
Argo CDã«åæãããGitãªããžããªããæºåããŸãã
git clone https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson.git
Applicationsã®ç»é¢ã«ãã㊠+ NEW APPãã¯ãªãã¯ããŸã äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®ããŸãã
GENERAL
Application Name: argocd-demo
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO CREATE NAMESPACE [v]
SOURCE
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
Revision: main
Path: chapter05_argocd/app/default
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace: argocd-demo
èšå®ã§ããããCREATEãã¯ãªãã¯ããŠãäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã
ããŒãžäžéšã«ããSYNCãã¯ãªãã¯ããŠãç¡äºãããã€ããããšäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã
ãã©ãŠã¶ãã http://app.argocd.vmXX.handson.cloudnativedays.jp ãžã¢ã¯ã»ã¹ããŠç¢ºèªããŠã¿ãŠãã ãããã¢ããªã±ãŒã·ã§ã³ã衚瀺ããéãè²ã®ã¿ã€ã«ãåºãŠããã®ã確èªã§ããŸãã
äžèšã®æé ã§Gitã«ä¿åããŠãããããã§ã¹ããåç §ããŠãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ãè¡ããŸããã次ã«Gitã®å€æŽã«Kubernetes ClusterãåæãããŸãã
app/default/deployment.yamlã®ç·šéãè¡ããŸãã imageã®tagãblueããgreenã«å€æŽããŸãã
image: argoproj/rollouts-demo:green
å·®åãforkããmainãã©ã³ãïŒArgo CDã®appãäœæããéã«æå®ãããã©ã³ãïŒã«åã蟌ã¿ãŸãã
git push origin main
Argo CDã¯ããã©ã«ãã§ã¯3åã«äžåã®é »åºŠã§ãã©ã³ãã確èªããå·®åãæ€åºããŠããŸãã 3ååŸ ãŠãªãå Žåã«ã¯ãããŒãžäžéšã«ãã [REFRESH]ãã¯ãªãã¯ããŸããäžèšã®ããã«deploymentã«ãããŠå·®åãæ€åºãããŸããïŒé»è²ã§è¡šç€ºãããŠããOutOfSyncãå·®åãããããšã瀺ããŠããŸãïŒ ã¡ãªã¿ã«Appã®èšå®ã«ãããŠãSYNC POLICYãManualã§ãªãAutoã«ããŠããå Žåã«ã¯ãããã§OutOfSyncãæ€ç¥ãããšèªåã§ArgoCDãSyncãå®è¡ããŸãã Gitã®å€æŽãKubernetes Clusterã«åæ ãããããã«ããŒãžäžéšã«ããSYNCãã¯ãªãã¯ããŠãäžèšã®ããã«è¡šç€ºãããŠããããšã確èªããŠäžããã http://app.argocd.vmXX.handson.cloudnativedays.jp ãžã¢ã¯ã»ã¹ããŠç¢ºèªãããšã¿ã€ã«ãéããç·ã«å€ãã£ãããšã確èªã§ããŸãã
ArgoCDäžã§ãããã§ã¹ãã®ç®¡çããŒã«ã§ãããKustomizeããå©çšãããéçºç°å¢ãšæ¬çªç°å¢ã®2ã€ã®ãããã§ã¹ã管çãè¡ããŸãã
Applicationsã®ç»é¢ã«ãã㊠+ NEW APPãã¯ãªãã¯ããæ¬çªç°å¢ã»éçºç°å¢ããããã®ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã Applications äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®ããŸãã(éçºç°å¢ãšæ¬çªç°å¢ã§åããŠè¡šç€ºããŠããé ç®ã¯ãããããèšå®ããŠãã ãã)
GENERAL
Application Name:
éçºç°å¢: argocd-kustomize-dev
æ¬çªç°å¢: argocd-kustomize-prd
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO CREATE NAMESPACE [v]
SOURCE
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
Revision: main
Path:
éçºç°å¢: chapter05_argocd/app/Kustomize/overlays/dev
æ¬çªç°å¢: chapter05_argocd/app/Kustomize/overlays/prd
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace:
éçºç°å¢: argocd-kustomize-dev
æ¬çªç°å¢: argocd-kustomize-prd
èšå®ã§ããããCREATEãã¯ãªãã¯ããŸã
ããŒãžäžéšã«ãã SYNCãã¯ãªãã¯ããŸã(éçºç°å¢ã®å Žåã¯podã1åãæ¬çªç°å¢ã®å Žåã¯podã2ååºæ¥ãã®ã確èªã§ããŸãã)
ãã©ãŠã¶ã§åç°å¢ãžã¢ã¯ã»ã¹ããŠç¢ºèªããŠã¿ãŠãã ãããã¿ã€ã«ã®è²ãéçºç°å¢ãšæ¬çªç°å¢ã§éãäºã確èªã§ããŸãã
- éçºç°å¢: dev.kustomize.argocd.vmXX.handson.cloudnativedays.jp
- æ¬çªç°å¢: prd.kustomize.argocd.vmXX.handson.cloudnativedays.jp
Kubernetesã®ããã±ãŒãžãããŒãžã£ãŒã®Helmãå©çšãããããã€ãè¡ããŸãã
Applicationsã®ç»é¢ã«ãã㊠+ NEW APPãã¯ãªãã¯ããŸã äžã®ç»é¢äžã§åé ç®ã次ã®ããã«èšå®ããŸãã
GENERAL
Application Name: argocd-helm
Project Name: default
SYNC POLICY: Manual
SYNC OPTIONS: AUTO CREATE NAMESPACE [v]
SOURCE
Repository URL: https://github.com/èªèº«ã®ã¢ã«ãŠã³ãå/cndt2023-handson
Revision: main
Path: chapter05_argocd/app/Helm/rollouts-demo
DESTINATION
Cluster URL: https://kubernetes.default.svc
Namespace: argocd-helm
èšå®ã§ããããCREATEãã¯ãªãã¯ããŸã ããŒãžäžéšã«ãã SYNCãã¯ãªãã¯ããŸãïŒç¡äºãããã€ããããšäžèšã®ããã«ãªããŸãïŒ ãã©ãŠã¶ã§ helm.argocd.vmXX.handson.cloudnativedays.jp ã¢ã¯ã»ã¹ããŠç¢ºèªããŠã¿ãŠãã ãããHelmã䜿ã£ãŠãããã€ãåºæ¥ãŠããäºã確èªã§ããŸãã
åã¢ããªã®DELETEãã¯ãªãã¯ããŸã
Applicationsç»é¢ã®å Žåã¯ãäžçªå³äžã®ç«¯ã«ã
詳现ç»é¢ã®å Žåã¯ãå³äžã®2çªç®ã«ãããŸãã
åé€ããéã«ã¢ããªã±ãŒã·ã§ã³åã®å ¥åãããã®ã§å ¥åããŠOKãã¯ãªãã¯ããŸãã
å šãŠã®ã¢ããªã±ãŒã·ã§ã³ãåé€ããŠãåããŠã¢ã¯ã»ã¹ããç»é¢ãšåãããã«ããŠäžããã
namespaceã®åé€ãè¡ããŸãã
kubectl delete namespace argocd-demo argocd-kustomize-dev argocd-kustomize-prd argocd-helm
<!-- tabs:end -->