±à¼ÍƼö: |
±¾ÎĽéÉÜÁËSandeep
Dinesh×öÁËÒ»¸ö¹ØÓÚ´´½¨¡¢²¿Êð¡¢ÔËÐÐÓ¦Óõ½KubernetesÀïÃæµÄÎå¸ö×î¼Ñʵ¼ùµÄÉî¶È·ÖÏí¡£ËæºóJordan
Pellizzari×öÁËWeaveÈçºÎÔÚkubernetesÖйÜÀíSaaS²úÆ·Weave
CloudºÍ¾Ñé½ÌѵµÄ·ÖÏí¡£
±¾ÎÄÀ´×ÔÓÚ¹«ÖÚºÅImportNew £¬ÓÉ»ðÁú¹ûÈí¼þLinda±à¼¡¢ÍƼö¡£ |
|
¹È¸èÔÆµÄ¿ª·¢Õß²¼µÀʦSandeep Dinesh£¨@SandeepDinesh£©×öÁËÒ»¸öÑݽ²£¬¸ø´ó¼ÒÁоÙÁËÔÚKubernetesÉÏÔËÐÐÓ¦ÓõÄ×î¼Ñʵ¼ùÇåµ¥£»Jordan
Pellizzari£¨@jpellizzari£©£¬ÊÇÀ´×ÔWeaveworksµÄ¹¤³Ìʦ£¬ËæºóÒ²×öÁËÒ»¸ö·ÖÏí£¬ÄÚÈÝÊÇÔÚËûÃÇʹÓÃKubernetes¿ª·¢ÔËÐÐSaaS
Weave CloudÁ½ÄêÖ®ºóѧµ½µÄ¾Ñé½Ìѵ¡£
Kubernetes×î¼Ñʵ¼ù
ÕâÆªÑݽ²ÖеÄ×î¼Ñʵ¼ùÀ´Ô´ÓÚSandeepºÍÍŶӽøÐеĹØÓÚÔÚKubernetesÉÏÒÔ¶àÖÖ²»Í¬·½Ê½ÔËÐÐͬһÈÎÎñµÄÌÖÂÛ¡£ËûÃǰÑÌÖÂ۵Ľá¹û×ܽáΪһ¸ö×î¼Ñʵ¼ùµÄÇåµ¥¡£
ÕâЩ×î¼Ñʵ¼ù±»·Ö³ÉÒÔÏÂÀà±ð£º
¹¹½¨ÈÝÆ÷
ÈÝÆ÷ÄÚ²¿
²¿Êð
·þÎñ
Ó¦Óüܹ¹
1¡¢¹¹½¨ÈÝÆ÷
²»ÒªÐÅÈÎÈÎÒâµÄ»ù´¡¾µÏñ
²»ÐÒµÄÊÇÎÒÃÇ¿´µ½Õâ¸ö´íÎóÒ»Ö±ÔÚ·¢Éú£¬ Pradeep˵µ½¡£ÈËÃÇ´ÓDockerHubÉÏËæ±ãÀÒ»¸öijÈË×öµÄ»ù´¡¾µÏñ¡ª¡ªÕâô×öµÄÀíÓɽö½öÊǵÚÒ»ÑÛ¿´¹ýÈ¥Õâ¸ö¾µÏñÀïÃæ´ò°üÓÐËûÃÇÐèÒªµÄ°ü¡ª¡ª½Ó×ÅËûÃǾͰÑÕâ¸öËæ±ãÑ¡µÄ¾µÏñÍÆµ½Éú²ú»·¾³ÖС£
Õâô×öÊǷdz£´íÎóµÄ£ºÄãʹÓõĴúÂë¿ÉÄÜÓкܶà©¶´£¬bug£¬´íÎó°æ±¾£¬»òÕß±¾Éí¾Í±»ÈËÓÐÒâ°Ñ¶ñÒâÈí¼þ´ò°ü½øÈ¥¡ª¡ªÖ»ÊÇÄã²»ÖªµÀ°ÕÁË¡£
Òª¼õÇáÕâÖÖ·çÏÕ£¬Äã¿ÉÒÔʹÓþ²Ì¬·ÖÎö¹¤¾ß£¬±ÈÈçCoreOS¡¯ Clair[2]»òÕßBanyon Collector[3]À´¶ÔÈÝÆ÷½øÐЩ¶´É¨Ãè¡£
±£³Ö»ù´¡¾µÏñ¾¡Á¿Ð¡
»ùÓÚ×î¼ò½àµÄ¿ÉÓûù´¡¾µÏñ£¬È»ºó»ùÓÚËü¹¹½¨Èí¼þ°ü£¬ÕâÑùÄã¾ÍÖªµÀ¾µÏñÀïÃæµ½µ×ÓÐÄÄЩ¶«Î÷¡£
ԽСµÄ»ù´¡¾µÏñ¿ªÏúҲԽС¡£ÄãµÄÓ¦ÓÿÉÄÜÖ»Òª5M£¬ µ«ÊÇÈç¹ûÄãäĿµÄËæ±ãÕÒÒ»¸ö¾µÏñ£¬±ÈÈçNode.js£¬
ËüÀïÃæ¾Í°üÀ¨Á˶îÍâ500MÄã¸ù±¾Òª²»µ½µÄ¿âÎļþ¡£
ʹÓÃС¾µÏñµÄÆäËüÓÅÊÆÓУº
¿ìËÙ¹¹½¨
½ÚÔ¼´æ´¢
ÀÈ¥¾µÏñ¸ü¿ì
¸üСµÄDZÔÚ¹¥»÷Ãæ

ʹÓù¹½¨Æ÷ģʽ
ÕâÖÖģʽ¶Ô¾²Ì¬ÓïÑÔÌØ±ðÓÐÓ㬱àÒëÀàËÆGo£¬C++»òÕßTypescript for Node.jsÕâЩÓïÑÔʱ¡£
ÔÚÕâÖÖģʽÀïÄãÓÐÒ»¸ö¹¹½¨ÈÝÆ÷£¬ÀïÃæ´ò°üÓбàÒëÆ÷£¬ÒÀÀµ°ü£¬ÒÔ¼°µ¥Ôª²âÊÔ¡£´úÂëͨ¹ýµÚÒ»²½Ö®ºó²ú³ö¹¹½¨µÄartifacts£¬Õâ°üÀ¨ËùÓеÄÎļþ£¬bundlesµÈ¡£È»ºóÔÙͨ¹ýÒ»¸öÔËÐÐʱÈÝÆ÷£¬°üÀ¨ÓÐ¼à¿ØºÍµ÷ÊÔ¹¤¾ßµÈ¡£
µ½×îºó£¬ ÄãµÄDockerfileÀïÃæ½«»áÖ»°üº¬ÄãµÄ»ù´¡¾µÏñÒÔ¼°ÔËÐÐʱ»·¾³ÈÝÆ÷¡£

2¡¢ÈÝÆ÷ÄÚ²¿
ÔÚÈÝÆ÷µÄÄÚ²¿Ê¹Ó÷ÇrootÓû§
Èç¹ûÄãÔÚÈÝÆ÷ÄÚʹÓÃrootÀ´¸üаü£¬ÄÇôÄãÒª°ÑÓû§¸Ä³É·ÇrootÓû§¡£
ÔÒòºÜ¼òµ¥£¬Èç¹ûÄãµÄÈÝÆ÷ÓкóÃű»ÈËÀûÓÃÁ˶øÇÒÄ㻹û°ÑËüµÄÓû§¸Ä³ÉrootÖ®ÍâµÄ£¬ÄÇôһ¸ö¼òµ¥µÄÈÝÆ÷ÌÓÀ뽫»áµ¼ÖÂÄãÕû¸öÖ÷»úµÄrootȨÏÞ¶¼±»ÀûÓᣵ«ÊÇÈç¹ûÄã¸Ä³ÉÁË·ÇrootÓû§£¬ºÚ¿Í¾ÍûÄÇôÈÝÒ׵õ½rootÓû§µÄȨÏÞÁË¡£
×öΪ×î¼Ñʵ¼ù£¬ÄãÒª¶ÔÄãµÄ»ù´¡ÉèÊ©¼Ó¶à²ãÍâ¿Ç±£»¤¡£
ÔÚKubernetesÀïÃæÄã¿ÉÒÔͨ¹ýÉèÖð²È«ÉÏÏÂÎÄ[4]runAsNonRoot: trueÀ´ÊµÏÖ£¬ÕâÑù»á¶ÔÕû¸ö¼¯ÈºclusterÀ´ÉúЧ¡£
Îļþϵͳֻ¶Á
ÕâÒ»¸ö×î¼Ñʵ¼ùͨ¹ýÉèÖÃreadOnlyFileSystem: trueÀ´ÊµÏÖ¡£
ÿ¸öÈÝÆ÷ÀïÃæÅÜÒ»¸ö½ø³Ì
Ä㵱Ȼ¿ÉÒÔÔÚÒ»¸öÈÝÆ÷ÀïÃæÅܶà¸ö½ø³Ì£¬µ«ÊÇÍÆ¼öÅÜÒ»¸ö¡£ÕâÊÇÓɱàÅÅÆ÷µÄ¹¤×÷·½Ê½¾ö¶¨µÄ¡£Kubernetes»ùÓÚÒ»¸ö½ø³ÌÊÇ·ñ½¡¿µÀ´¹ÜÀíÈÝÆ÷¡£Èç¹ûÄãÔÚÒ»¸öÈÝÆ÷ÀïÃæÓÐ20¸ö½ø³Ì£¬ËüÈçºÎÖªµÀÈÝÆ÷ÊÇ·ñ½¡¿µÄØ£¿
²»ÒªÊ¹Óà Restart on Failure£¬ ¶øÓ¦µ± Crash Cleanly
Kubernetes»áÖØÐÂÆô¶¯Ê§°ÜµÄÈÝÆ÷£¬Òò´ËÄãÓ¦¸Ã¸É¾»µÄ×ö±ÀÀ£Í˳ö£¨¸ø³öÒ»¸ö´íÎóÂ룩£¬ÕâÑùKubernetes¾Í¿ÉÒÔ²»ÓÃÄãµÄÈ˹¤¸ÉÔ¤À´³É¹¦ÖØÆðÁË¡£
ÈÕÖ¾´òµ½±ê×¼Êä³öºÍ±ê×¼´íÎóÊä³ö£¨stdout & stderr)
Kubernetesȱʡ»á¼àÌýÕâЩ¹ÜµÀ£¬È»ºó½«Êä³ö´«µ½ÈÕÖ¾·þÎñÉÏÃæÈ¥¡£ÔڹȸèÔÆÉÏ¿ÉÒÔÖ±½ÓÓÃStackDriverÈÕ־ϵͳ¡£
3¡¢²¿Êð
ʹÓÃrecordÑ¡ÏîÀ´Ê¹»Ø¹ö¸ü·½±ã
ÔÚÒýÓÃÒ»¸öyamlÎļþʱ£¬ÇëʹÓÃ--recordÑ¡Ï
kubectl apply
-f deployment.yaml --record |
´øÁËÕâ¸öÑ¡ÏîÖ®ºó£¬Ã¿´ÎÉý¼¶µÄʱ¶¼»á±£´æµ½²¿ÊðµÄÈÕÖ¾ÀïÃæ£¬ÕâÑù¾ÍÌṩÁ˻عöÒ»¸ö±ä¸üµÄÄÜÁ¦¡£

¶àʹÓÃÃèÊöÐԵıêÇ©label
ÒòΪ±êÇ©¿ÉÒÔÊÇÈÎÒâµÄ¼üÖµ¶Ô£¬Æä±í´ïÁ¦·Ç³£Ç¿¡£²Î¿¼ÏÂͼ£¬ÒÔÓÐÃû×ÖΪ'Nifty¡®µÄÓ¦Óò¿Êðµ½ËĸöÈÝÆ÷ÀïÃæ¡£Í¨¹ýÑ¡ÔñBE±êÇ©Äã¿ÉÒÔÌôÑ¡³öºó¶ËÈÝÆ÷¡£

ʹÓÃsidecarÀ´×ö´úÀí¡¢¼àÊÓÆ÷µÈ
ÓÐʱºòÄãÐèÒªÒ»×é½ø³Ì¸úÆäËüij¸ö½ø³ÌͨѶ¡£µ«ÊÇÄãÓÖ²»Ï£Íû°ÑËüÃÇËùÓеͼ·Å½øÒ»¸öÈÝÆ÷ÀïÃæ£¨Ç°ÃæÌáµ½µÄÒ»¸öÈÝÆ÷ÅÜÒ»¸ö½ø³Ì£©£¬
ÄãÏ£ÍûµÄÊǰÑÏà¹ØµÄ½ø³Ì¶¼·Åµ½Ò»¸öPodÀïÃæ¡£
³£¼ûÇé¿öÊÇÄãÐèÒªÔËÐнø³ÌÒÀÀµµÄÒ»¸ö´úÀí»òÕß¼àÊÓÆ÷£¬±ÈÈçÄãµÄ½ø³ÌÒÀÀµÒ»¸öÊý¾Ý¿â£¬ ¶øÄ㲻ϣÍû°ÑÊý¾Ý¿âµÄÃÜÂëÓ²±àÂë½øÃ¿¸öÈÝÆ÷ÀïÃæ£¬Õâ¸öʱ»áÄã¿ÉÒÔ°ÑÃÜÂë·Åµ½Ò»¸ö´úÀí³ÌÐòÀïÃæµ±×÷sidecar£¬ÓÉËüÀ´¹ÜÀíÊý¾Ý¿âÁ¬½Ó£º

²»ÒªÊ¹ÓÃsidecarÀ´×öÆô¶¯Òýµ¼
¾¡¹ÜsidecarÔÚ´¦Àí¼¯ÈºÄÚÍâµÄÇëÇóʱ·Ç³£ÓÐÓã¬Sandeep²»ÍƼöʹÓÃËü×öÆô¶¯¡£ÔÙ¹ýÈ¥£¬Òýµ¼Æô¶¯£¨bootstraping£©ÊÇΨһѡÏµ«ÊÇÏÖÔÚKubernetesÓÐÁË¡°init
ÈÝÆ÷¡±¡£
µ±ÈÝÆ÷ÀïÃæµÄÒ»¸ö½ø³ÌÒÀÀµÓÚÆäËüµÄÒ»¸ö΢·þÎñʱ£¬ Äã¿ÉÒÔʹÓÃinitÈÝÆ÷À´µÈµ½½ø³ÌÆô¶¯ÒÔºóÔÙÆô¶¯ÄãµÄÈÝÆ÷¡£Õâ¿ÉÒÔ±ÜÃâµ±½ø³ÌºÍ΢·þÎñ²»Í¬²½Ê±²úÉúµÄºÜ¶à´íÎó¡£
»ù±¾ÔÔò¾ÍÊÇ£ºÊ¹ÓÃsidecarÀ´´¦Àí×ÜÊÇ·¢ÉúµÄʼþ£¬¶øÓÃinitÈÝÆ÷À´´¦ÀíÒ»´ÎÐÔµÄʼþ¡£
²»ÒªÊ¹Óãºlatest»òÕßÎÞ±êÇ©
Õâ¸öÔÔòÊǺÜÃ÷ÏԵĶøÇÒ´ó¼Ò»ù±¾¶¼ÕâôÔÚÓá£Èç¹ûÄã²»¸øÄãµÄÈÝÆ÷¼Ó±êÇ©£¬ÄÇôËü»á×ÜÊÇÀ×îеģ¬Õâ¸ö¡°×îеġ±²¢²»Äܱ£Ö¤°üÀ¨ÄãÈÏΪËüÓ¦¸ÃÓеÄÄÇЩ¸üС£
ÉÆÓÃreadiness¡¢liveness̽Õë
ʹÓÃ̽Õë¿ÉÒÔÈÃKubernetesÖªµÀ½ÚµãÊÇ·ñÕý³££¬ÒԴ˾ö¶¨ÊÇ·ñ°ÑÁ÷Á¿·¢¸øËü¡£È±Ê¡Çé¿öÏÂKubernetes¼ì²é½ø³ÌÊÇ·ñÔÚÔËÐС£µ«ÊÇͨ¹ýʹÓÃ̽Õ룬
Äã¿ÉÒÔÔÚȱʡÐÐΪϼÓÉÏÄã×Ô¼ºµÄÂß¼¡£

4¡¢·þÎñ
²»ÒªÊ¹ÓÃtype: Loadbalancer
ÿ´ÎÄãÔÚ²¿ÊðÎļþÀïÃæ¼ÓÒ»¸ö¹«ÓÐÔÆÌṩÉ̵Äloadbalancer£¨¸ºÔؾùºâÆ÷£©µÄʱºò£¬Ëü¶¼»á´´½¨Ò»¸ö¡£ËüȷʵÊǸ߿ÉÓ㬸ßËÙ¶È£¬µ«ÊÇËüÒ²Óо¼Ã³É±¾¡£
ʹÓÃIngressÀ´´úÌæ£¬Í¬Ñù¿ÉÒÔʵÏÖͨ¹ýÒ»¸öend pointÀ´¸ºÔؾùºâ¶à¸ö·þÎñ¡£ÕâÖÖ·½Ê½²»µ«¸ü¼òµ¥£¬¶øÇÒ¸ü¾¼Ã¡£µ±È»Õâ¸ö²ßÂÔÖ»ÓÐÄãÌṩhttpºÍweb·þÎñʱÓÐÓ㬶ÔÓÚÆÕͨµÄTCP/UDPÓ¦ÓþÍûÓÃÁË¡£

Type: Nodeport¿ÉÄÜÒѾ¹»ÓÃÁË
Õâ¸ö¸ü¶àÊǸöÈËϲºÃ£¬²¢²»ÊÇËùÓÐÈ˶¼ÍƼö¡£NodePort°ÑÄãµÄÓ¦ÓÃͨ¹ýÒ»¸öVMµÄÌØ¶¨¶Ë¿Ú±©Â¶µ½ÍâÍøÉÏ¡£ÎÊÌâ¾ÍÊÇËüûÓÐÏñ¸ºÔؾùºâÆ÷ÄÇÑùÓи߿ÉÓᣱÈÈ缫¶ËÇé¿ö£¬VM¹ÒÁËÄãµÄ·þÎñÒ²¹ÒÁË¡£
ʹÓþ²Ì¬IP£¬ ËüÃÇÃâ·Ñ£¡
ÔڹȸèÔÆÉϺܼòµ¥£¬Ö»ÐèҪΪÄãµÄingressÀ´´´½¨È«¾ÖIP¡£ÀàËÆµÄ¶ÔÄãµÄ¸ºÔؾùºâÆ÷¿ÉÒÔʹÓÃRegional
IP¡£ÕâÑùµ±ÄãµÄ·þÎñdownÁËÖ®ºóÄã²»±Øµ£ÐÄIP»á±ä¡£
½«Íⲿ·þÎñÓ³Éäµ½ÄÚ²¿
KubernetesÌṩµÄÕâ¸ö¹¦Äܲ»ÊÇËùÓÐÈ˶¼ÖªµÀ¡£Èç¹ûÄúÐèҪȺ¼¯ÍⲿµÄ·þÎñ£¬Äú¿ÉÒÔ×öµÄÊÇʹÓÃExternalNameÀàÐ͵ķþÎñ¡£ÕâÑùÄã¾Í¿ÉÒÔͨ¹ýÃû×ÖÀ´µ÷ÓÃÕâ¸ö·þÎñ£¬Kubernetes
manager»á°ÑÇëÇ󴫵ݸøËü£¬¾ÍºÃÏñËüÔÚ¼¯ÈºÖ®ÖÐÒ»Ñù¡£Kubernetes¶Ô´ýÕâ¸ö·þÎñ¾ÍºÃÏñËüÔÚͬһ¸öÄÚÍøÀïÃæ£¬¼´Ê¹Êµ¼ÊÉÏËü²»ÔÚ¡£
5¡¢Ó¦Óüܹ¹
ʹÓÃHelm Charts
Helm»ù±¾ÉϾÍÊÇ´ò°üKubernetesÓ¦ÓÃÅäÖõIJֿ⡣Èç¹ûÄãÒª²¿ÊðÒ»¸öMongoDB£¬ ´æÔÚÒ»¸öÔ¤ÏÈÅäÖúõÄHelm
chart£¬°üÀ¨ÁËËüËùÓеÄÒÀÀµ£¬Äã¿ÉÒÔÊ®·ÖÈÝÒ׵İÑËü²¿Êðµ½¼¯ÈºÖС£
ºÜ¶àÁ÷ÐеÄÈí¼þ/×é¼þ¶¼ÓÐдºÃÁ˵ÄHelm charts£¬ Äã¿ÉÒÔÖ±½ÓÓã¬Ê¡µô´óÁ¿µÄʱ¼äºÍ¾«Á¦¡£
ËùÓÐÏÂÓεÄÒÀÀµÊDz»¿É¿¿µÄ
ÄãµÄÓ¦ÓÃÓ¦¸ÃÓÐÂß¼ºÍ´íÎóÐÅÏ¢¸ºÔðÉó¼ÆÄã²»ÄÜ¿ØÖƵÄËùÓÐÒÀÀµ¡£Sandeep½¨Òé˵Äã¿ÉÒÔʹÓÃIstio»òÕßLinkerdÕâÑùµÄ·þÎñÍø¸ñÀ´×öÏÂÓιÜÀí¡£
ʹÓÃWeave Cloud
¼¯ÈºÊǺÜÄÑ¿ÉÊÓ»¯¹ÜÀíµÄ¡£Ê¹ÓÃWeave Cloud[5]¿ÉÒÔ°ïÄã¼àÊÓ¼¯ÈºÄÚµÄÇé¿öºÍ¸ú×ÙÒÀÀµ¡£
È·±£ÄãµÄ΢·þÎñ²»ÒªÌ«¡°Î¢Ð¡¡±
ÄãÐèÒªµÄÊÇÂß¼×é¼þ£¬¶ø²»ÊÇÿ¸öµ¥¶ÀµÄ¹¦ÄÜ/º¯Êý¶¼±ä³ÉÒ»¸ö΢·þÎñ¡£
ʹÓÃÃüÃû¿Õ¼äÀ´·ÖÀ뼯Ⱥ
ÀýÈ磬 Äã¿ÉÒÔÔÚͬһ¸ö¼¯ÈºÀïÃæ´´½¨prod¡¢dev¡¢testÕâÑù²»Í¬µÄÃüÃû¿Õ¼ä£¬Í¬Ê±¿ÉÒÔ¶Ô²»Í¬µÄÃüÃû¿Õ¼ä·ÖÅä×ÊÔ´£¬
ÕâÑùÍòһij¸ö½ø³ÌÓÐÎÊÌâÒ²²»»áÓþ¡ËùÓеļ¯Èº×ÊÔ´¡£
»ùÓÚ½ÇÉ«µÄ·ÃÎÊ¿ØÖÆRBAC
ʵʩʱµ±µÄ·ÃÎÊ¿ØÖÆÀ´ÏÞÖÆ·ÃÎÊÁ¿£¬ ÕâÒ²ÊÇ×î¼ÑµÄ°²È«Êµ¼ù¡£
´ÓÔËÐÐWeave CloudÉú²ú»·¾³Ñ§µ½µÄ½Ìѵ
½ÓÏÂÀ´Jordan Pellizzari×öÁËÒ»¸öÑݽ²£¬ÌâÄ¿ÊÇÔÚ¹ýÈ¥Á½ÄêÎÒÃÇÔÚKubernetesÉÏ¿ª·¢ÔËÐÐWeave
Cloudѧµ½µÄ¾Ñé¡£ÎÒÃǵ±Ç°ÔËÐÐÔÚAWS EC2ÉÏ£¬ ×ܹ²ÓÐ72¸öKubernetes²¿ÊðÔËÐÐÔÚ13¸öÖ÷»úºÍ150¸öÈÝÆ÷ÀïÃæ¡£ÎÒÃÇËùÓеijÖÐøÐÔ´æ´¢±£´æÔÚS3£¬DynamoDB»òÕßRDSÀïÃæ£¬
ÎÒÃDz¢²»ÔÚÈÝÆ÷ÀïÃæ±£´æ×´Ì¬ÐÅÏ¢¡£¹ØÓÚÎÒÃÇÈçºÎ´î½¨»ù´¡ÉèÊ©µÄϸ½Ú¿ÉÒԲο´ÕâÆªÎĵµ[6]¡£
ÌôÕ½1£º¶Ô»ù´¡ÉèÊ©×ö°æ±¾¿ØÖÆ
ÔÚWeaveworksÎÒÃǰÑËùÓеĻù´¡¼Ü¹¹±£´æÔÚGitÖУ¬ Èç¹ûÎÒÃÇÒª¶Ô»ù´¡ÉèÊ©×ö±ä¸ü£¬ÒªÏñ´úÂëÒ»ÑùÌáPull
request¡£ÎÒÃǰÑÕâ³ÆÎªGitOps£¬Ò²Ð´ÁË¶àÆª²©ÎÄ¡£Äã¿ÉÒÔ´ÓÕâÆª¶ÁÆð£ºGitOps - Pull
RequestÖ§³ÅµÄÔËά[7]¡£
ÔÚWeave£¬ ËùÓеÄTerraform½Å±¾£¬AnsibleÒÔ¼°Kubernetes YAMLÎļþ¶¼±»±£´æÔÚGitÀïÃæ×ö°æ±¾¿ØÖÆ¡£
°Ñ»ù´¡¼Ü¹¹·ÅÔÚGitÀïÃæÊÇÒ»¸ö×î¼Ñʵ¼ù£¬ÕâÓжà¸öÔÒò£º
·¢²¼¿ÉÒԺܷ½±ãµÄ»Ø¹ö
¶ÔË×öÁËʲôÐÞ¸ÄÓÐ×·×ÙÉó¼Æ
ÔÖÄѻָ´Ï൱¼òµ¥
ÎÊÌ⣺µ±Éú²úÓë°æ±¾¿ØÖƲ»Ò»ÖÂʱ¸ÃÔõô°ì£¿
³ýÁ˰ÑËùÓÐÄÚÈݱ£´æÔÚGitÖÐÖ®Í⣬ÎÒÃÇÒ²ÓÐÒ»¸öÁ÷³Ì»á¼ì²éÉú²ú¼¯ÈºÖÐÔËÐеÄ״̬Óë°æ±¾¿ØÖÆÖеÄÄÚÈݲîÒì¡£Èç¹û¼ì²éµ½Óв»Í¬£¬¾Í»á¸øÎÒÃǵÄSlackƵµÀ·¢Ò»¸ö±¨¾¯¡£
ÎÒÃÇʹÓÃÒ»¸ö½ÐKube-Diff[8]µÄ¿ªÔ´¹¤¾ßÀ´¼ì²é²»Í¬¡£
ÌôÕ½2£º×Ô¶¯»¯µÄ³ÖÐø½»¸¶
×Ô¶¯»¯ÄãµÄCI/CDÁ÷Ë®Ïߣ¬±ÜÃâÊÖ¹¤µÄKubernetes²¿Êð¡£ÒòΪÎÒÃÇÒ»ÌìÄÚ×ö¶à´Î²¿Êð£¬ÕâÖÖ·½Ê½½ÚÔ¼ÁËÍŶӵÄʱ¼äÒ²±ÜÃâÁËÊÖ¹¤ÈÝÒ×·¢Éú´íÎóµÄ²½Öè¡£ÔÚWeaveworks£¬¿ª·¢ÈËÔ±Ö»ÐèÒª×öÒ»¸öGit
push£¬È»ºóWeave Cloud»á×öÒÔϵÄÊÂÇ飺
´ò¹ý±êÇ©µÄ´úÂëͨ¹ýCircleCIµÄ²âÊÔÈ»ºó¹¹½¨Ò»¸öеÄÈÝÆ÷¾µÏñ£¬ÍÆËÍÕâ¸öеľµÏñµ½²Ö¿âÖС£
Weave CloudµÄ¡°Deploy Automator¡®¼ì²âµ½Ð¾µÏñ£¬´Ó¿âÖÐÀȡоµÏñÈ»ºóÔÚÅäÖÿâÀïÃæ¸üжÔÓ¦µÄYAMLÎļþ¡£
Deploy Synchronizer»á¼ì²âµ½¼¯ÈºÐèÒª¸ü¸ÄinÁË£¬È»ºóËü»á´ÓÅäÖÿâÀïÃæÀ¸üеÄÅäÖÃÇåµ¥£¬×îºó½«ÐµľµÏñ²¿Êðµ½¼¯ÈºÖС£
GitOpsÁ÷Ë®Ïß

ÕâÀïÓÐһƪÉÔ³¤µÄÎÄÕÂ[9]£¬ÎÒÃÇÈÏΪµÄ¹¹½¨×Ô¶¯»¯CI/CDÁ÷Ë®ÏßµÄ×î¼Ñʵ¼ù¶¼ÔÚÀïÃæÃèÊöÁË¡£ |