±à¼ÍƼö: |
ʲôÊÇArgo
CD£¿Argo CDÔ´×ÔÄÄÀArgo CDÔÚCI /CDÁ÷³ÌÖеÄλÖúÍ×÷Óã¬ÔÚÓ¦ÓÃÉ̵êÖпìËÙÉÏÊÖ
Argo CDµÈÄÚÈÝÊDZ¾ÎĵÄÖØµã¡£
±¾ÎÄÀ´×ÔÓÚkubernetesÖÐÎÄÉçÇø£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
ʲôÊÇArgo CD£¿
Argo CDÊÇÒ»¸öΪKubernetes¶øÉúµÄ¡¢×ñÑÉùÃ÷ʽGitOpsÀíÄîµÄ³ÖÐø²¿Ê𹤾ߣ¬ÆäÓÅÊÆÎª£º
1¡¢Ó¦Óö¨Òå¡¢ÅäÖúͻ·¾³ÐÅÏ¢ÊÇÉùÃ÷ʽµÄ£¬²¢ÇÒ¿ÉÒÔ½øÐа汾¿ØÖÆ£»
2¡¢Ó¦Óò¿ÊðºÍÉúÃüÖÜÆÚ¹ÜÀíÊÇÈ«×Ô¶¯»¯µÄ£¬ÊÇ¿ÉÉ󼯵ģ¬ÇåÎúÒ×¶®£»
3¡¢Argo CDÊÇÒ»¸ö¶ÀÁ¢µÄ²¿Ê𹤾ߣ¬Ö§³Ö¶Ô¶à¸ö»·¾³¡¢¶à¸öKubernetes¼¯ÈºÉϵÄÓ¦ÓýøÐÐͳһ²¿ÊðºÍ¹ÜÀí¡£
Argo CDÔ´×ÔÄÄÀ
Argo CDÊÇÓÉIntuitÖ÷µ¼µÄ¿ªÔ´ÏîÄ¿£¬ÊÇArgoÏîÄ¿¼¯ºÏÖеÄÒ»¸ö£¬ArgoÏîÄ¿¼¯ºÏ»¹°üÀ¨Argo
Workflow¡¢Argo Rollout¡¢Argo EventµÈÏîÄ¿¡£4ÔÂ8ÈÕ£¬CNCF¼¼Êõ¼à¶½Î¯Ô±»á£¨Technical
Oversight Committee£¬TOC£©Í¶Æ±¾ö¶¨½ÓÊÜArgo×÷Ϊ·õ»¯¼¶±ðµÄÍйÜÏîÄ¿¡£
IntuitÊÇAWSµÄÖØ¶È¿Í»§£¬ÆäÔÚCNCFÔÆÔÉú¼ÆËã»ù½ð»áµÄTechnical Oversight
CommitteeÕ¼ÓÐһϯ¡£IntuitÔÀ´µÄ»ù´¡ÉèÊ©ÊÇ»ùÓÚAWS EC2µÄ£¬²¢²ÉÓÃSpinnakerÀ´²¿ÊðºÍ¹ÜÀíÓ¦Óá£ËûÃǽüÄêÀ´¿ªÊ¼×ªÏòKubernetes£¬²¢ÇÒ¿ª·¢ÁËArgo
CDÌæ´ú Spinnaker¡£IntuitʹÓÃKubernetes¼°ArgoCDµÄһЩÊý¾Ý£¬Èçͼ1Ëùʾ¡£

¡ø ͼ1 Intuit¶ÔKubernetes¹ÜÀí¹æÄ£Í³¼ÆÍ¼
Argo CDÔÚGithubµÄ¿ªÔ´¹¤³ÌÖÐÊǷdz£»îÔ¾µÄ¡£½ØÖ¹Ä¿Ç°£¬¹²ÓÐ183¸öContributorºÍ³¬¹ý
2700¸öStar£¬²¢ÇÒÔÚ³ÖÐø½¡¿µµØÔö³¤¡£

¡øÍ¼2 Argo CD ÔÚ Gihub É쵀 Star ÔöÇ¿Ç÷ÊÆÍ¼
Argo CDÓëÆäËûCD¹¤¾ß£¨ÀýÈçSpinnaker¡¢Tekton¡¢Jenkins X£©µÈµÄ¾ßÌå¶Ô±ÈÇë²Î¿¼Í¼3¡£

¡øÍ¼3 CD¹¤¾ßÄÜÁ¦¶Ô±È
Argo CDÔÚCI /CDÁ÷³ÌÖеÄλÖúÍ×÷ÓÃ

¡øÍ¼4 ½èÖúÓÚArgo CDÔÚKubernetesÉϵÄCI/CDÁ÷³ÌÍØÆËͼ
Èçͼ4Ëùʾ£¬½èÖúArgo CDÔÚKubernetes¼¯ÈºÉÏÂ䵨CD£¬Ö÷Ҫͨ¹ýÒÔÏÂÈý¸ö²½ÖèÀ´Íê³É¡£
1¡¢½«Ó¦ÓõÄGit²Ö¿â·ÖΪApplication Deployment fileºÍDocker fileÁ½¸ö¿â¡£
¡ö Docker fileÓÃÓÚ´æ·ÅÓ¦ÓõĺËÐÄ´úÂëÒÔ¼°Docker build file£¬ºóÐø½«»áÖ±½Ó´ò°ü³ÉDocker
image£»
¡ö Application Deployment file¿ÉÒÔKustomize¡¢Helm¡¢Ksconnet¡¢Jsonnet
µÈ¶àÖÖKubernetes°ü¹ÜÀí¹¤¾ßÀ´¶¨Ò壻
¡ö ÒÔHelmΪÀý£¬ChartÖÐËùʹÓõ½µÄImageÓÉDocker file Code´ò°üÍê³ÉºóÌṩ¡£
2¡¢Ê¹ÓÃJenkins»òGitlabµÈCI¹¤¾ß½øÐÐ×Ô¶¯»¯¹¹½¨´ò°ü£¬²¢½«Docker image pushµ½Harbor¾µÏñ²Ö¿â¡£
3¡¢Ê¹ÓÃArgo CD²¿ÊðÓ¦Óá£
¡ö Argo CD¿ÉÒÔ¶ÀÁ¢ÓÚ¼¯ÈºÖ®Í⣬²¢ÇÒÖ§³Ö¹ÜÀí¶à¸öKubernetes¼¯Èº£»
¡ö ÔÚArgo CDÉÏÅäÖúÃÓ¦Óò¿ÊðµÄÏà¹ØÐÅÏ¢ºó£¬Argo CD±ã¿ÉÒÔÕý³£¹¤×÷£¬Argo CD»á×Ô¶¯ºÍ´úÂë²Ö¿âApplication
deployment fileµÄÄÚÈݽøÐÐУÑ飬µ±´úÂë²Ö¿âÖÐÓ¦ÓÃÊôÐÔµÈÐÅÏ¢·¢Éú±ä»¯Ê±£¬Argo CD»á×Ô¶¯Í¬²½¸üÐÂKubernetes¼¯ÈºÖеÄÓ¦Óã»
¡ö Ó¦ÓÃÆô¶¯Ê±£¬»á´ÓHarbor¾µÏñ²Ö¿âÀÈ¡Docker image¡£
ÔÚÓ¦ÓÃÉ̵êÖпìËÙÉÏÊÖ Argo CD
ÔÚKubeOperatorÈÝÆ÷ƽ̨Éϲ¿ÊðArgo CD·Ç³£¼òµ¥£¬KubeOperatorÒѾÔÚKubeapps
PlusÓ¦ÓÃÉ̵êÖ±½ÓÖ§³ÖÒ»¼ü²¿ÊðArgo CD£¬ÄãÖ»ÐèҪȥGithubÏÂÔØÀëÏß°üÉÏ´«¼´¿ÉʹÓá£
½ÓÏÂÀ´£¬Í¨¹ýÒÔϼ¸¸ö²½Ö裬½«»áΪ´ó¼Ò½éÉÜArgo CDµÄ¾ßÌå°²×°¼°ÔÚCI/CDÖеÄʹÓ÷½·¨¡£
1¡¢ÔÚKubeapps PlusÓ¦ÓÃÉ̵êÕÒµ½Argo CDÓ¦ÓÃ

¡ø ͼ5 ÔÚ¡°Kubeapps PlusÓ¦ÓÃÉ̵ꡱ ½çÃæÍ¨¹ýCD±êÇ©ÕÒµ½Argo CD
2¡¢²¿ÊðArgo CD

¡ø ͼ6 ÔÚ¡°Ó¦ÓÃÏêÇ顱 µã»÷¡°²¿Ê𡱰´Å¥½øÐÐÓ¦Óò¿Êð
3¡¢¸ù¾ÝÐèÒªÐÞ¸ÄĬÈÏÅäÖÃ

¡ø ͼ7 ÔÚ¡°Ó¦Óñ༡± Ò³Ãæµã»÷¡°Ìá½»¡±£¬½øÐÐÓ¦Óô´½¨
4¡¢°²×° Argo CD£¬²¢µÈ´ý·þÎñ¾ÍÐ÷

¡ø ͼ8 ÔÚ¡°ÎÒµÄÓ¦ÓýçÃæ¡± Ò³Ãæµã»÷¡°Ó¦Óá±£¬²é¿´Ó¦ÓÃ״̬¼°ÆäËûÐÅÏ¢
5¡¢Í¨¹ýNodePortµÄ·½Ê½·ÃÎÊArgo CD

¡ø ͼ9 ͨ¹ýNodePortÔÚä¯ÀÀÆ÷·ÃÎÊArgo CD

¡ø ͼ10 Argo CDµÇ¼³É¹¦ºóµÄ½çÃæ
6¡¢ÔÚArgo CD UI½çÃæÀ´´´½¨Ó¦ÓÃ
6.1 µã»÷¡°+ NEW APP¡±°´Å¥´´½¨Ó¦Óã»

¡ø ͼ11 ÔÚArgo CD UI½çÃæÀ´´´½¨Ó¦ÓÃ
6.2 ÌîдӦÓÃÃû³Æ£ºguestbook£»ÏîÄ¿£ºdefault£»Í¬²½²ßÂÔ£ºÊÖ¶¯£»

¡ø ͼ12 ÌîдӦÓõÄÏà¹ØÐÅÏ¢
6.3 ÅäÖÃÀ´Ô´¡£ÕâÀïÅäÖõÄÊÇGit £¬´úÂë²Ö¿âµÄURLÅäÖÃΪ GithubÉϵÄÏîÄ¿µØÖ·Îª£ºhttps://github.com/argoproj/argocd-example-apps.git£»RevisionÑ¡Ôñ£ºHEAD£»ÏîĿ·¾¶Ñ¡Ôñ£ºguestbook£»

¡ø ͼ13 ÌîдÅäÖÃÐÅÏ¢
6.4 Ñ¡ÔñÓ¦Óò¿ÊðµÄÄ¿±ê¼¯Èº£ºhttps://kubernetes.default.svc £¬ÒòΪ´Ë´ÎµÄArgo
CD²¿ÊðÔÚKubernetes¼¯Èºµ±ÖУ¬Ä¬ÈÏArgo CDÒѾ°ïÎÒÃÇÌí¼ÓºÃµ±Ç°ËùÔÚµÄKubernetes¼¯Èº£¬Ö±½ÓʹÓü´¿É¡£NamespaceÑ¡Ôñ£ºmy-app¡£Namespcae¿ÉÒÔÔÚKubernetes¼¯ÈºÉÏʹÓÃ#
kubectl create namespace my-app ÃüÁîÀ´´´½¨£»

¡ø ͼ14 Ìîд¼¯ÈºÃèÊöÐÅÏ¢
6.5 ÌîдÍê³Éºó£¬µã»÷ ¡°CREATE¡± °´Å¥½øÐд´½¨£»

¡ø ͼ15 Õýʽ´´½¨Ó¦ÓÃ
6.6 ÓÉÓÚÉÐδ²¿ÊðÓ¦ÓóÌÐò£¬²¢ÇÒÉÐδ´´½¨Kubernetes×ÊÔ´£¬ËùÒÔStatus»¹ÊÇOutOfSync״̬£¬Òò´ËÎÒÃÇ»¹ÐèÒªµã»÷
¡°SYNC¡±°´Å¥½øÐÐͬ²½£¨²¿Ê𣩡£Í¬Ê±Ò²¿ÉÒÔ°²×°argocd¿Í»§¶Ë£¬Ê¹ÓÃArgo CD CLI½øÐÐͬ²½£º#
argocd app sync guestbook

¡ø ͼ16 Ó¦Óô´½¨Íê³É£¬´¦ÓÚ¡°Î´Í¬²½¡±×´Ì¬

¡ø ͼ17 ÊÖ¶¯Í¬²½Ó¦Ó㬿ªÊ¼²¿ÊðÓ¦ÓÃ
7¡¢µÈ´ýÓ¦Óô´½¨Íê³É

¡ø ͼ18 Ó¦ÓÃͬ²½ºó²¿Êð³É¹¦

¡ø ͼ19 µã»÷²¿ÊðµÄÓ¦Óò鿴ÏêÇé
8¡¢ÔÚKubernetes¼¯ÈºÖв鿴ӦÓÃ

¡ø ͼ20 ÔÚKubernetes¼¯ÈºÖеÄMaster½Úµã²é¿´Ó¦ÓõÄÔËÐÐ״̬ |