k8s ã®CDãã¼ã«ãããã¤ãããã®ã§ããããã®ç¹å¾´ã«ã¤ãã¦ã¾ã¨ããã
ä¸å¿CDãã¼ã«ã®å®ç¾©ã¯"k8sã«Webã¢ããªã±ã¼ã·ã§ã³ããããã¤ãããã¼ã«"ãæ³å®ãã¦ãããã k8sã«ããããããã¤ã¯ãããã§ã¹ããã¡ã¤ã«ã apply ãããã¨ãªã®ã§ã ãããã£ããã®ã¯ãã¹ã¦CDãã¼ã«ã¨ã¿ãªãã¦èª¿ã¹ãã ãã¹ã¦ã®ãã¼ã«ãã¡ããã¨èª¿ã¹ãããã§ã¯ãªãã®ã§ããã®ã«ãã£ã¦ã¯ãµã©ãã¨ããç´¹ä»ã«ãªã£ã¦ããã
- Flux
- Tekton(Tekton Pipeline)
- Jenkins-X
- PipeCD
- GCP Cloud Deploy
- AWS Code Pipeline
- Spinnaker
- ArgoCD
- æ¹ãã¦åãã¼ã«ã«è¨åãã
- è¤æ°ãã¼ã«ã®çµã¿åãã
- ã¡ããã¨èª¿ã¹ã¦ã触ã£ã¦ã¿ãªãã¨åãããªãé¨åãå¤ã
- ã¾ã¨ã
- 宣ä¼
Flux
ä»ã®ãã¼ã«ã¨æ¯ã¹ã㨠âGitHubä¸ã®ãªãã¸ããªãk8sã«é©ç¨ããï¼GitOpsï¼âã¨ããæ©è½ãæä¾ããã·ã³ãã«ãªCDãã¼ã«ã¨ããå°è±¡ã§ããã ã·ã³ãã«ã¨è¨ã£ã¦ã以ä¸ã®ããã«æä½éå¿ è¦ã«ãªãæ©è½ã¯åãã£ã¦ããã
- Helmãæ±ãã
- kustomizeãæ±ãã
- ImageOpsï¼ã³ã³ããã¤ã¡ã¼ã¸ãã³ã³ããã¬ã¸ã¹ããªã«ããã·ã¥ããã¨èªåçã«ãããã¤ãèµ°ããã¤ï¼ãå©ç¨ã§ãã
- slackãªã©ã¸ã®éç¥ãã§ãã
åã« "k8sã®ãããã§ã¹ããã¡ã¤ã«ãapplyããã" ã®ã§ããã°ããã®ãã¼ã«ã§ååãªæ°ãããã å°è¦æ¨¡çµç¹ã®å ´åãCDã«æè³ããä½åããªãã¨æãã®ã§ãããã§è¯ãããã
ãã ããã¤ãã©ã¤ã³æ©è½ãæã£ã¦ãªãã®ã§ãFluxåä½ã§è¤éãªCDãã¤ãã©ã¤ã³ãæ§ç¯ãããã¨ã¯ã§ããªãã ãã¤ãã©ã¤ã³æ©è½ãå¿ è¦ãªå ´åã¯ä»ã®ãã¼ã«ãçµã¿åãããå¿ è¦ãããã
Tekton(Tekton Pipeline)
k8s Native 㪠CI/CD Pipeline ã§ããã
CDãã¼ã«ã¨ãããã㯠"CI/CD Pipeline" ãªã®ã§ã以ä¸ã®ããã«å®è¡ãããã³ãã³ããyamlã«æå®ããæãã«ãªãã
https://tekton.dev/docs/getting-started/#your-first-ci-cd-workflow-with-tekton
ä¸å¿ããã·ã¥ãã¼ãããããããã
https://tekton.dev/docs/dashboard/
éã«è¨ãã¨CircleCIã¿ãããªãã®ãk8sã§åããã¦ããã¤ã¡ã¼ã¸ã«è¿ãã¨æãã
CI/CD Pipelineã¨ãããã¨ã§ãã¤ãã©ã¤ã³æ©è½ï¼è¤æ°ã®å¦çãä»»æã®é çªã«å®è¡ã§ããæ©è½ï¼ãæã£ã¦ããã Flux ãããæè»ãªãããã¤ãå®ç¾ãããã¨ãã§ããã ä¾ãã° "ãããã¤åã®xxxããã" ã¨ã "ãããã¤å¾ã«xxxããã" ã¨ãããã¨ãã§ããã CDã ãã§ãªããCIãä½ããã¨ãã§ããã®ã§ã1ã¤ã®ãã¼ã«ã§ä¸è²«ããCI/CDãã¤ãã©ã¤ã³ãæ§ç¯ãããã¨ãã§ããã
ãã ãè¨ã£ã¦ãã¾ãã°åãªãã³ãã³ãå®è¡ãã¼ã«ãªã®ã§ã¢ããªã±ã¼ã·ã§ã³ç¨ã®ãªãããªCDãå®ç¾ãããã¨ããå ´åï¼ä¾ãã°Blue/Green Deployã¨ãï¼ã¯ãããªãã«ä½ãè¾¼ãå¿
è¦ãããã¨æãã
ä¸å¿ Tekton Hub ã¨ãããã¤ãã©ã¤ã³ãå
±æãããµã¼ãã¹ã¯ããããã©ãã¾ã§æã£ã¦ããã®ãã¯ä¸æã§ããã
https://hub.tekton.dev/
Jenkins-X
Jenkinsã¨ããåã®ã¨ãããJenkinsã¿ãããªãã¤ãªãã ãã¼ãªã¨æã£ã¦ããã
Fluxã¨åãããã«GitOpsããã¼ã¹ã¨ããCDãã¼ã«ã§ããã Tektonãå©ç¨ãããã¤ãã©ã¤ã³æ©è½ã¨ç°¡æçãªUIãåå¨ããã®ã§ãâFlux + Tekton + ç°¡æUIâ ã¿ãããªãã¼ã«ã§ããã ChatOpsæ©è½ãæã£ã¦ããã®ãé¢ç½ãã
ãã ãTektonã¨åãããã«ããªãããªCDãå®ç¾ãããã¨ããå ´åä½ãè¾¼ã¿ãçºçãããã§ã¯ããã
PipeCD
ã³ã³ã»ããã¨ãã¦ã¯å¾è¿°ããSpinnakerãArgoCDã«ä¼¼ã¦ããããªã¨æã£ã¦ããã
å®éã«Spinnaker, ArgoCDãåèã«çã¾ãããããã
https://pipecd.dev/ja/blog/2020/10/06/announcing-pipecd/#thanks
Spinnakerã¨ã®éãã¯Terraform, ECS, Lambda, Cloud Runãªã©ã®ã¯ã©ã¦ãé¢é£ã®ãã¼ã«ããµã¼ãã¹ã®ãããã¤ãç¶²ç¾ çã«ãµãã¼ããã¦ããç¹ããª? ã¡ããã¨èª¿ã¹ããã¦ããªãã
å¾çºãªãã¼ã«ã¨ãããã¨ããã£ã¦ãpospomeå人ã¨ãã¦ã¯ä»åç´¹ä»ããä¸ã§ä¸çªè¯ããããªãã¼ã«ã ã¨æã£ãã ãã ãå©ç¨å®ç¸¾ãä¹ããããªã®ã§ããã®ã¿ã¤ãã³ã°ã§ä½¿ã£ã¦è¯ããã®ãã»ã»ã»ã¨ããæ°æã¡ã¯ããã
éçºå
(?)ã®CAã§ã¯ä½¿ããã¦ããããã ãã©ãå®éã©ã¼ãªãã§ããããã
https://developers.cyberagent.co.jp/blog/archives/30573/
GCP Cloud Deploy
https://cloud.google.com/deploy/docs/overview
GCPãæä¾ããCDãµã¼ãã¹ã§ããã ãªãããªæ©è½ãããããã§ã¯ãªãããã ããã©ã¼ãªãã§ããããã GKEã«ã¢ããªã±ã¼ã·ã§ã³ããããã¤ããã ããªã Cloud Deploy ã§ãµã¯ãã¨ããã®ãããããªã¼ã¨æãã
AWS Code Pipeline
EKSã®å ´å㯠Code Pipeline ã使ãã®ã ããã? ã¡ãã£ã¨èª¿ã¹ãã GCP Cloud Deploy ã¿ãããªãã®ãè¦å½ãããªãã®ã§è«¦ããã
Spinnaker
Spinnakerã®ç¹å¾´ã¯ "è¤éãªCDãã¤ãã©ã¤ã³ãæ§ç¯ãããã¨ãã§ãã" ã¨ããç¹ã§ããã
Pipeline & Stage
å人çã«Spinnakerãæ±ããªã½ã¼ã¹ã®ä¸ã§ãæãå¼·åãªã®ãPipelineã¨Stageã ã¨æã£ã¦ããã Stageã¨ããã®ã¯CDãã¤ãã©ã¤ã³ã«ããã1ã¤ã®å¦çã表ããªã½ã¼ã¹ã§ããã Stageã¯åã«ç´åã«ã¤ãªãã ãã§ãªãã並åã«ä¸¦ã¹ããã¨ãã§ããããç¹å®ã®æ¡ä»¶åå²ãå ¥ããããManual Judgementã§äººéã®å¤æã«å§ãããã 以ä¸ã®ããã«ã¨ã«ããèªç±ã«æ§æãããã¨ãã§ããã
ããã¦ãSpinnaker ã§ã¯ãã¤ãã©ã¤ã³ï¼Stageå士ã®ä¾åé¢ä¿ï¼ã以ä¸ã®ããã«UIã§ç´æçã«è¨å®ã§ããã®ã§ã Stageãè¤éã«ãªã£ã¦ãPipelineå ¨ä½ãç°¡åã«èªèãããã¨ãã§ãããã Stageã®æ§æãå¤æ´ãããã¨ãç°¡åã§ããã SREã§ãªãã¨ããéçºãã¼ã ã¯èªåãã¡ã§æé©ãªCDãã¤ãã©ã¤ã³ãä½æãããã¨ãã§ããã
Stageã®ç¨®é¡ãè±å¯ã§ããã Manual Judgementã§äººéã®å¤æãæ±ãããã Rollout Strategy & Traffic Management ã«ãã£ã¦Blue/Green DeployãCanary Releaseãã§ãããã Webhook ã®å®è¡ãã¹ã¯ãªããã®å®è¡ãå¯è½ã§ããã è¦ä»¶ã«åãStageããªãå ´åã¯k8sã®Jobã¨ããå½¢ã§èªä½ãã§ããã
åçãªãã¤ãã©ã¤ã³
Spinnakerã¯ä»»æã®Stageãçµã¿åããããã¨ã«ãã£ã¦è¤éãªCDãã¤ãã©ã¤ã³ãæ§ç¯ã§ããã ãã§ã¯ãªãã ãããã§ã¹ããã¡ã¤ã«ã®å¤ã¨ãã¤ãã©ã¤ã³ã®æåãåçã«å¤æ´ãããã¨ãã§ããã Stageã®çµã¿åããã ãã§ãååè¤éãªCDãã¤ãã©ã¤ã³ãæ§ç¯ãããã¨ãã§ãããã以ä¸ã®æ©è½ã«ãã£ã¦ããæè»ãªæåãå®ç¾ãããã¨ãã§ããã ä¾ãã°ã"ãã¤ãã©ã¤ã³ã®éä¸ã§ãããã§ã¹ããã¡ã¤ã«ã®å¤ãå¤æ´ãã", "ãããã¤ã失æãããã¨ã«xxxãã" ãªã©ãå¯è½ã§ããã
- https://spinnaker.io/docs/guides/user/kubernetes-v2/parameterize-manifests/
- https://spinnaker.io/docs/guides/user/pipeline/expressions
- https://spinnaker.io/docs/guides/user/kubernetes-v2/patch-manifest/
Managed Delivery
Managed Delivery ã¯ï¼ç´è¨³ãããã ãã©ã ãã©ï¼ "管çãããCD" ã¨ããææ³ã§ããã
- https://spinnaker.io/docs/concepts/#managed-delivery
- https://blog.spinnaker.io/managed-delivery-evolving-continuous-delivery-at-netflix-eb74877fb33c
Spinnaker ã¯ãã¤ãã©ã¤ã³ã®æ§æãUIã«ãã£ã¦èªç±ã«å¤æ´ãããã¨ãã§ãããã èªç±åº¦ã®é«ãæ ã«ã"å©ç¨è å´ãèªåãã¡ã«æé©ãªãã¤ãã©ã¤ã³ãæ§ç¯ããªããã°ãããªã" ã¨ãããã種ã®CDãªãã©ã·ã¼ã®ãããªãã®ãæ±ããããã çµç¹ã大ãããªãã°ãªãã»ã©ããã¼ã ãã¨ã®CDã«å¯¾ããç¥è¦ã«å·®ãåºã¦ããã®ã§ã çµç¹ã¨ã㦠"ãã®è¨å®ã¯çµ¶å¯¾ã«å ¥ãã¦ãã ãã", "ææ°ã®Stageãå©ç¨ãã¦ãã ãã" ã¿ãããªçµ±ä¸çãªCDæ¦ç¥ãå®ç¾ããã®ãé£ãããªãã å®éã« Netflix ã§ããããã£ãåé¡ãçºçãã¦ãããããã
ãã®åé¡ã解決ããã®ã "Managed Deliveryï¼ç®¡çãããCDï¼" ã§ããã
Managed Delivery ã¯ã¢ããªã±ã¼ã·ã§ã³ã®ãã¤ãã©ã¤ã³ãUIä¸ã§ä½æããã®ã§ã¯ãªãã Githubãªãã¸ããªä¸ã®(k8s likeãª)yamlã¨Spinnaker APIã«ãã£ã¦ç®¡çããä»çµã¿ã§ããã ãã£ããè¨ãã¨ãCDãã¤ãã©ã¤ã³ã®IaCåã§ããã
ãªããããããã ããManged Delivery ãå®ç¾ããããã® sig ããªããªã£ã¦ããã®ã§ããããå®ç¾ããã®ã¯ç¡çã ã¨æã£ã¦ããã
https://github.com/spinnaker/governance/pull/281
Spinnaker ã使ãããªããã?
Spinnaker ã¯è¤éãªCDãã¤ãã©ã¤ã³ãUIã«ãã£ã¦ç°¡åã«æ§ç¯ãããã¨ãã§ããã ããããå©ç¨è å´ãè¤éãªCDæ¦ç¥ãèããããªãï¼CDã®ç¥èããªãï¼ or å¿ è¦ã¨ããªãå ´å㯠"ãããã§ã¹ããã¡ã¤ã«ãk8sã«applyããã ãã®ãã¼ã«" ã§çµãã£ã¦ãã¾ãã ããã§ã¯Spinnakerãå©ç¨ããæå³ããªãã
Spinnakerã¯å¤æ©è½ã§èªç±åº¦ãé«ãã®ã§ãæå¤ã¨SREã®éç¨ã³ã¹ããéçºè ã®å¦ç¿ã³ã¹ããé«ããªã£ã¦ãã¾ããã "Spinnaker ã®ç¨æããã¬ã¼ã«ã«ä¹ããªããã°ãããªã" ã¨ããé¨åãããã®ã§å¤ã«ããã¯ã¤ã³ããããã¨ã«ãªã£ããã å®éã«ä½¿ã£ã¦ã¿ãã¨ãå¾®å¦ãªæ©è½ã ãªã»ã»ã»ãã¨æããã¨ãããã
è¯ããæªããå©ç¨è ã®ãã¼ãºã¨ã¹ãã«ã«å¤§ããä¾åãããã¼ã«ãªã®ã§ã Spinnakerã使ãããªããã? ã¯äºåã«èãã¦ãããã»ããè¯ãã ãªãããªCDæ¦ç¥ãä¸è¦ãªå ´åã¯ãFluxãArgoCDã使ã£ãæ¹ãããã¨æãã
ArgoCD
ArgoCDã®ç¹å¾´ã¯ "å¿ è¦æä½éãªæ©è½ã§ã·ã³ãã«ãªCDãã¤ãã©ã¤ã³ãæ§ç¯ãããã¨ãã§ãã" ã¨ããç¹ã§ããã Spinnakerã«æ¯ã¹ãã¨æ©è½ã¨ãã¦å£ã£ã¦ãã¾ãã®ã§ãå°å³ãªå°è±¡ãåããããéã«è¯ãæãã«ã¾ã¨ã¾ã£ã¦ãããã¼ã«ã ã¨æãã "ãªãããªCDæ¦ç¥ãå¿ è¦ã¨ããªããã©ãFluxããã¯ãªãããªãã®ã欲ãã" ã®ã§ããã°ãåå使ãåæã®è¯ããã¼ã«ã§ããã
Single Source of Truth(SSOT)
ArgoCDã¯GitHubãªãã¸ããªä¸ã«åå¨ãããããã§ã¹ããã¡ã¤ã«ã "Single Source of Truth" ã¨ãã¦æ±ãããããk8sã«åæããï¼Syncããï¼ãã¼ã«ã§ããã
ã¢ããªã±ã¼ã·ã§ã³ã®ãããã¤æ¹æ³ã¨ãã¦ã¯ã"GitHubä¸ã®ãããã§ã¹ããã¡ã¤ã«ã«ãããã¤å¯¾è±¡ã®ã³ã³ããã¤ã¡ã¼ã¸ã®ã¿ã°ãæå®ããcommitãã" ã¨ããGitOpsãåºæ¬ã¨ãªããã
GitHubä¸ã®ãããã§ã¹ããã¡ã¤ã«ã¨k8sä¸ã®ãªã½ã¼ã¹ãåæããæ©è½ãããã
https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/
ä¸å¿ArgoCDæ¬ä½ã¨ã¯å¥ã§ ImageOps ãã§ãããã¼ã«ãåå¨ããã®ã§ãImageOpsãå¯è½ã§ããã
https://github.com/argoproj-labs/argocd-image-updater
ãããã¤ä¸ã«ä»»æã®å¦çãã§ãããããªä»çµã¿ãããã
- https://argo-cd.readthedocs.io/en/stable/user-guide/parameters/
- https://argo-cd.readthedocs.io/en/stable/operator-manual/resource_actions/
- https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/
ããããArgoCDã«ã¯SSOTã¨ããææ³ãããã®ã§ããããã¤ã®åå¾ã§ãããã§ã¹ããã¡ã¤ã«ãå¤æ´ãããã¨ã¯ãªã¹ã¹ã¡ã§ããªãã
éçºè
ã®å©ä¾¿æ§ãåä¸ãããããã«ãéçºç°å¢ãªã©ã«éã許容ãããããªèããããã
https://argo-cd.readthedocs.io/en/stable/user-guide/parameters/
Spinnakerã¯CDãã¤ãã©ã¤ã³ä¸ã§ãããã§ã¹ããã¡ã¤ã«ãã¯ã©ã¹ã¿ã¼ä¸ã®ãªã½ã¼ã¹ã«å¤æ´ãå ãããã¨ãåæã¨ãã¦ããã®ã§ãææ³ã¨ãã¦ã¯æ£å対ã§ããã
è¤éãªCDãã¤ãã©ã¤ã³ã¯ä½ããªã
ArgoCDã«ã¯Spinnakerã®Pipelineã®ãããªæ¦å¿µãåå¨ããªãã åè¿°ããããã«ä»¥ä¸ã®æ©è½ã«ãã£ã¦ãããã¤åå¾ã«ä»»æã®å¦çãå·®ãè¾¼ããã¨ã¯ã§ããããSpinnakerã»ã©æè»ã§ã¯ãªãã ããã
Managed Delivery
Spinnaker ã§èª¬æãã Managed Delivery ã ããå®ã¯ ArgoCD ã¯æ¨æºã§å¯è½ã ã£ããããã ArgoCD ã®ã³ã³ã»ããã "Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes." ã§ãããã¨ãããã ãã®æ©è½ãArgoCDã®ç¹å¾´çãªãã®ã§ãããã¨ãåããã
å ·ä½çã«ã¯ä»¥ä¸ã®ããã« yaml ã§ç®¡çãããã¨ãã§ããã GitOpsã¨SSOTãå¾¹åºãã¦ããæãããã
https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/
Argoã·ãªã¼ãº
ArgoCDã¯ä»¥ä¸ã®Argoç³»ã®ãã¼ã«ã¨çµã¿åããããã¨ãã§ããã
- https://argoproj.github.io/argo-rollouts/
- https://argoproj.github.io/argo-workflows/
- https://argoproj.github.io/argo-events/
Argo Rolloutsã¯Blue/Greenãããã¤ãã«ããªã¼ãªãªã¼ã¹ãªã©ã®ãªãããªãã¼ã«ã¢ã¦ãæ¦ç¥ãå®è¡ããããã®ãã¼ã«ã§ããã Argo Workflowsã¯ã¯ã¼ã¯ããã¼ã¨ã³ã¸ã³ã§ããã Argo Eventsã¯ã¤ãã³ãé§åã®ã¯ã¼ã¯ããã¼ãå®ç¾ããããã®ãã¼ã«ã§ããã
ããããçµã¿åããããã¨ã§ãSpinnaker ç¸å½ã®æè»ãªCDæ¦ç¥ãå®ç¾ã§ããå¯è½æ§ãããã ãã ã管çãããã®ãå¢ãã¦ãã¾ãã®ã§ãã ã£ãããªã¼ã«ã¤ã³ã¯ã³ãªSpinnakerã®æ¹ããããªã?ãã¨ããã®ã¯ãããããããªãã
ã¡ãªã¿ã«ããããã®ãã¼ã«ã¯åä½ã§ãå©ç¨ã§ããããã«ãªã£ã¦ããã®ã§ã ä¾ãã° "Spinnaker 㨠Argo Rollouts ãå©ç¨ãã" ã¿ãããªãã¨ãå¯è½ã§ããã
ã·ã³ãã«ãªUI
ï¼Spinnaker ã使ã£ããã¨ãã人ã«ããä¼ãããªãã¨æããã©ï¼å人çã«ArgoCDã®æ¹ãUIãã·ã³ãã«ã§ããããããã¨æãã 以ä¸ã§å®éã«ç¢ºèªã§ããã®ã§ã触ã£ã¦ã¿ãã¨è¯ãã
https://cd.apps.argoproj.io/applications
æ¹ãã¦åãã¼ã«ã«è¨åãã
Spinnaker, ArgoCD ã¯ã¢ããªã±ã¼ã·ã§ã³ããããã¤ããããã®ãã¼ã«ã¨ããå´é¢ãå¼·ããããã«å¿ è¦ãªæ©è½ãããã©ã«ãã§ç¨æããã¦ããã ã¢ããªã±ã¼ã·ã§ã³ã®CDãã¼ã«ã®é¸å®ã¨ããã®ã§ããã°ãã©ã¡ãããå©ç¨ããã®ãããããªã¨æã£ã¦ããã è¤éãªãããã¤æ¦ç¥ãä¸è¦ã§ããã°Spinnakerãããã·ã³ãã«ãªArgoCDããããããããªãã
CI/CDãã¤ãã©ã¤ã³ã欲ããã®ã§ããã°ãTekton, Jnekins-X ãåè£ã«ãªã£ã¦ããã CDã ãã§ãªããCIãå«ããä¸è²«ãããããã¤ãã¤ãã©ã¤ã³ã1ã¤ã®ãã¼ã«ã§æ§ç¯ã§ããã®ã¯å¬ãããããããªãï¼Jenkins-Xã¯Tektonå©ç¨ããããå®è³ª2ã¤ã®ãã¼ã«ã«ãªããã©ã»ã»ã»ï¼ã
Fluxã¯æ©è½ã¨ãã¦ã¯å°ãªãå°è±¡ãåããããåã«ãããã§ã¹ããã¡ã¤ã«ãã¯ã©ã¹ã¿ã¼ã«é©ç¨ãããå ´åã«ãµã¯ãã¨ä½¿ããããªã¤ã¡ã¼ã¸ãããã®ã§ãè¦ä»¶ãã·ã³ãã«ãªå ´åã«æ¡ç¨ããã®ããããããªæ°ãããã
PipeCDã¯çµæ§è¯ããããªé°å²æ°ãæããã®ã§ãæ¡ç¨ãã¦ããä¼æ¥ã®äºä¾ã¨ããã£ããå¬ãããªã¼ã¨æãã
è¤æ°ãã¼ã«ã®çµã¿åãã
Spinnaker 㨠ArgoCD ããªã¼ã«ã¤ã³ã¯ã³æ°å³ãªãã¼ã«ã ã¨æããã©ãããã¤ãã®ãã¼ã«ãçµã¿åãããã¨ããé¸æè¢ãããã ããã§ã¯ããã¨æãã¤ããã®ãæããã
Flux + Tekton + Flagger
"GitOps/ImageOpsãå®ç¾ããFlux" + "CI/CDãæä¾ããTekon" + "Progressive Deliveryãå®ç¾ãã Flagger" ã¨ããã·ã³ãã«ãã¼ã«ãçµã¿åãããæ§æã§ããã Flagger 㯠Flux ã¨åãããã¸ã§ã¯ããªã®ã§ Argo Rollout ã§ã¯ãªããFlagger ãé¸ãã ãã©ãè¦ä»¶æ¬¡ç¬¬ã ã¨æãã
Tektonãã Flux, Flagger ãå©ããã¨ã§ãFluxã«ããGitOpsã®åå¾ã«ä»»æã®å¦çãå®è¡ããããProgressive Delivery ãå®ç¾ãããã¨ãã§ãããã Tektonãæ¡ç¨ãããã¨ã§CI/CDã«æè»æ§ãçã¾ããã®ã§ãè¯ããããªçµã¿åããã ãªã¼ã¨æã£ããã ããããã®ãã¼ã«ãã¤ãªãããå¿ è¦ãããã®ã§ãçµå± Spinnaker ãé å¼µã£ã¦èªä½ããæãã«ãªã£ã¦ãã¾ããããããªãã
ArgoCD + ArgoWorkflows + Argo Rollout
Argoã·ãªã¼ãºã§CDãã¤ãã©ã¤ã³ãä½ãæãã§ããã ArgoCDåä½ã§ãæä½éã®CDãã¤ãã©ã¤ã³ãæ§æãããã¨ãã§ããã®ã§ã"ArgoCDã§è¾ããªã£ããå¿ è¦ãªãã®ã追å ãã" ã¨ããæ¦ç¥ãåããã ããããããCIé¨åãããç¨åº¦ArgoWorkflowsã«ä»»ãããã¨ãã§ãããããããªãã ãã ãããã¨ãããã¼ã«ã追å ããã¨éçºãã¼ã ã®ãããã¤æ¹æ³ãArgoCDã§å®çµãã¦ãããã¤ãã©ã¤ã³ãå¤æ´ããå¿ è¦ãããã®ã§ã æå¤ã¨å¤§å¤ããã»ã»ã»ã
ã¡ããã¨èª¿ã¹ã¦ã触ã£ã¦ã¿ãªãã¨åãããªãé¨åãå¤ã
ããã¾ã§åãã¼ã«ã«ã¤ãã¦è»½ã説æãã¦ããããã¡ããã¨ããã¥ã¡ã³ããèªãã§ã触ã£ã¦ã¿ãªãã¨æ¬å½ã®è¯ãæªãã¯åãããªãé¨åãå¤ãã
ä¾ãã°ArgoCDã«ã¯GitHubä¸ã®ãããã§ã¹ããã¡ã¤ã«ã¨k8sä¸ã®ãªã½ã¼ã¹ãåæããæ©è½ããããã ãããæå¹ã«ããã¨ArgoCDã®ãã¼ã«ããã¯æ©è½ãå©ç¨ã§ããªããªã£ã¦ãã¾ãã ãããã¤å¾ã«åé¡ãçºçããå ´åã«UIãªã©ããç´ æ©ããã¼ã«ããã¯ã§ããæ©è½ã¯ã ããã¯ããã§éè¦ã ã£ããããã®ã§ã ãã®æ©è½ãæå¹ã«ãããã©ããã¯æ©ã¾ããã¨ãããããããªãã
Spinnakerã¯ãã¤ãã©ã¤ã³ä¸ã§ãããã§ã¹ããã¡ã¤ã«ã®å¤ãä»»æã®å¤ã«å¤æ´ãããã¨ãã§ãããã 以ä¸ã®ããã«ãã¬ã¼ã¹ãã«ãã¼ã«ããªãã¨ãããªãã®ã§ã Spinnakerã«ä¾åãããããã§ã¹ããã¡ã¤ã«ã«ãªã£ã¦ãã¾ãã
# ... other keys metadata: namespace: '${ parameters.namespace }' # other keys ...
ArgoCD, Spinnakerã«éããããã¼ãã¼ç´°ããæ©è½ãæåã確èªããªãã¨æ¬å½ã®è¯ãæªãã¯åãããªãã éçºçµç¹ã®è¦æ¨¡ã大ãããªãã°ãªãã»ã©ãå¾ããCDãã¼ã«ãCDæ¦ç¥ãå¤æ´ããã®ã¯é£ãããªã£ã¦ãã¾ãã¨æãã®ã§ã é¸å®ãã段éã§å¯è½ãªéãå·¥æ°ãããã¦æ¤è¨¼ãããã¨ãããããããï¼ã¾ãããããã§ããã°è¦å´ããªããã ãã©ã»ã»ã»ï¼ã
ã¾ã¨ã
ç¹ã«ãªãã§ãã (´ã»Ïã»`)
宣ä¼
DMMãã©ãããã©ã¼ã ã®ãã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ããã¼ã ã§ã¯SREãåéãã¦ãã¾ãã é¸èãªãã®ã«ã¸ã¥ã¢ã«é¢è«ãå¯è½ãªã®ã§ããã®ããã°ãèªãã§ããªããé¢ç½ããã ãªã¼ãã¨æããããé£çµ¡ãã ããã
DMMã®ãã¤ã¯ããµã¼ãã¹ã¢ã¼ããã¯ããã¼ã ã§ã¯ãµã¼ããµã¤ãã¨ã³ã¸ãã¢ã¨SREãåéä¸ã§ãããã¤ã¯ããµã¼ãã¹ããã©ãããã©ã¼ã ã¨ã³ã¸ãã¢ãªã³ã°ã«èå³ã®ãã人ã§ããã°æ¥½ãããç°å¢ã ã¨æãã¾ããé¸èãªãã®ã«ã¸ã¥ã¢ã«é¢è«ããã¦ããã®ã§èå³ã®ããæ¹ã¯ãã²ãhttps://t.co/EndrfjFRHj
— pospome (@pospome) August 17, 2021