±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜKubeSphere
DevOps Ö÷Òª·ÖΪÁ½¸öÖØÒª¹¦ÄÜ£¬Ò»ÊÇ DevOps Á÷Ë®Ïߣ¬¶þÊÇ S2I/B2I¡£ ±¾ÎÄÀ´×Ô΢ÐÅÇàÔÆQingCloud£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼ÍƼö¡£ |
|
Ê×ÏÈ£¬ÎÒÃǽéÉÜÎÒÃÇΪʲôʹÓà Jenkins ×÷ΪÎÒÃÇÁ÷Ë®ÏߵĵײãÒýÇæ£¬µ±ÎÒÃÇÑ¡ÔñºÃ
Jenkins ºó£¬ÎÒÃÇÈçºÎ°ÑËü¸ú KubeSphere ÈÚºÏÔÚÒ»Æð£¬´òÔìÎÒÃÇ KubeSphere
CI/CD Á÷Ë®Ïß¡£Í¬Ê±£¬ÎÒÃǺóÃæÊ¹Óø´Ôӵķ½°¸£¬¿ÉÄÜÓÐЩÓû§²»Ì«½ÓÊÜ£¬ÎÒÃÇÌá³ö¸ü¼Ó¼òµ¥Ò×ÓÃµÄ S2I/B2I¡£ÎÒÃÇÔÚÉÏÏߺóÓкܶàÓû§£¬ÕâЩÓû§¸øÎÒÃÇ×öÁ˺ܶ෴À¡£¬ÎÒÃDzÈÁ˺ܶàµÄ¿Ó¡£ÕâÀï½²½²ÎÒÃǾßÌåÓÅ»¯µÄµã£¬ÒÔ¼°ÎÒÃÇδÀ´µÄ¼òµ¥¹æ»®¡£
1ΪʲôÎÒÃÇÑ¡Ôñ Jenkins
Ê×ÏÈ£¬ÎªÊ²Ã´ÎÒÃÇÑ¡Ôñ Jenkins ×÷ΪÎÒÃÇ CI/CD Á÷Ë®Ïߣ¿

ÏÈ¿´¿´ÆóÒµÀïµÄ CI/CD Á÷³Ì¡£KubeSphere ×î³õµÄÄ¿±êÓû§ÊDZȽϴóÐ͵ÄÓû§£¬Ïñ´óÐ͵ÄÒøÐÐÒµ¡¢±£ÏÕÒµ£¬Ãæ¶ÔµÄÓû§
DevOps Á÷³ÌºÜ¸´ÔÓ¡£ÎÒÃÇ¿ÉÒÔ¿´µ½ÔÚͼÖУ¬ÕâÀïÉæ¼°ºÜ¶àÈËÔ±¡¢Á÷³Ì¸´ÔÓ¡¢ÉóÅúµÈһϵÁеÄÐèÇó¡£Í¬Ê±£¬ÔÚ´óÐÍÆóÒµµ±ÖÐÒѾÓÐһЩ
CI/CD ¹¤¾ßʱ£¬ÒѾÓÐ CI/CD ×Ô¼ºµÄÁ÷³Ì£¬ÎÒÃÇÏ£Íûͨ¹ý KubeSphere µÄÁ÷Ë®Ïß°Ñ´«Í³ÓÃÉϵŤ¾ßÈںϽøÀ´£¬Í¬Ê±Ò²ÄÜΪËüÌṩÈÝÆ÷ƽ̨֮ÉÏ£¬½èÖú
KubeSphere ÖúÁ¦ÒµÎñ¿ìËÙÉÏÏßµÄÄÜÁ¦¡£
ÔÚÕâЩ¿Í»§µ±ÖУ¬Ò»Ð©ÆóÒµÒѾÔÚʹÓÃһЩ DevOps ¹¤¾ß×ö²âÊÔ¡¢½ø¶È¹ÜÀíµÈ£¬µ«ÊÇËû²»ÖªµÀÈçºÎÔÚÈÝÆ÷ÉÏ×ö·¢²¼£¬ÎÒÃÇÏ£ÍûÄܹ»Í¨¹ý
KubeSphere µÄ DevOps ¹¦ÄܶÔÕû¸öÁ÷³Ì½øÐаѿء£
ÓÚÊÇÎÒÃÇ¿ªÊ¼×ö¼¼ÊõÑ¡ÐÍ¡£ÔÚ×ö¼¼ÊõÑ¡ÐÍʱ£¬ÕâÊÇÎÒ´Ó¹úÍâµÄÍøÕ¾ StackShare Äõ½µÄÒ»·ÝÊý¾Ý£¬ÎÒÑ¡ÁËÒ»¸öÎÒÈÏΪ±È½ÏÖ÷Á÷µÄ
CI/CD ÒýÇæ¡£ÕâÀïÊÇÊг¡·Ý¶îµÄÊý¾Ý£¬¿ÉÒÔÃ÷ÏÔ¿´µ½ Jenkins µÄÓû§¡¢Ïà¹ØÎÊÌ⡢ͶƱ¶¼·Ç³£¶à¡£±ÈÈç
Drone.io ºÍ GitLab CI ÊǼ¸°Ù£¬µ½ÁË Jenkins ÊǼ¸Íò¡£
ÄÇÓû§ÎªÊ²Ã´»áÑ¡Ôñ Jenkins ÄØ£¿
ÕâÒ²ÊÇÎÒÃÇÑ¡Ôñ Jenkins ×÷ΪÎÒÃÇÁ÷Ë®ÏßÒýÇæ·Ç³£ÖØÒªÒÀ¾Ý£¬ÕâÀï¿ÉÒÔ¿´µ½ Drone.io ºÍ
GitLab CI£¬Óû§Ï²»¶ËûÃǵĵãÊǰ²×°¼òµ¥¡¢ÅäÖüòµ¥£¬ºÍ Docker ½áºÏºÜ¼òµ¥µÈһϵÁеĶ«Î÷¡£µ±ÎÒÃÇ¿´
Jenkins ʱ£¬Ê×ÏÈÊÇ¿ªÔ´ºÍ¿ÉÒÔ˽Óл¯²¿Êð¡£

¸üÖØÒªµÄÊÇʹÓà Jenkins ÎÒÃÇ¿ÉÒÔºÍÐí¶à CI/CD ¹¤¾ßºÜÈÝÒ×½áºÏÔÚÒ»Æð£¬Íê³É´ò°ü¡¢²¿ÊðһϵÁеÄÁ÷³Ì¡£Í¬Ê±
Jenkins Óкܶà²å¼þ¡¢Îĵµ£¬ËûÃÇÓгÉÊìÇÒ»îÔ¾µÄÉçÇø£¬ÎÒÃÇ¿ÉÒÔ½èÖúÉçÇøµÄÁ¦Á¿£¬À´Íê³ÉÎÒÃÇµÄ DevOps
¹¦ÄÜ¡£

ÕâÊÇʹÓà Jenkins µÄ´ú±íÆóÒµ£¬¿ÉÒÔ´Ó´ú±íÆóÒµ¿´³ö£¬ÎÒÃDz»Á˽âÕâЩÆóÒµ¾ßÌåÊÇ×öʲôµÄ£¬Ö»ÓÐ
Jenkins µÄ´ú±íÆóÒµÎÒ¿´µÄ±È½ÏÑÛÊ죬±ÈÈç Facebook¡¢Netflix¡¢ebay µÈÕâÖֱȽϳöÃûµÄ¹úÍâ´óÐÍÆóÒµ£¬ËµÃ÷ËûÃÇÆóÒµÄÚ²¿µÄ¸´ÔÓÁ÷Ë®£¬Ê¹ÓÃ
Jenkins ÊÇ¿ÉÒÔÂú×ãµÄ¡£
ÓÚÊÇÎÒÃÇÑ¡ÔñÁË Jenkins ×÷ΪÎÒÃÇ CI/CD µ×²ãÁ÷Ë®ÏßÒýÇæ¡£Õâ¸ö·½°¸ÊÇÓû§Ï²»¶µÄ·½°¸£¬ÒѾÓкܶàÓû§ÔÚʹÓá£ËüÓлîÔ¾¡¢³ÉÊìµÄÉçÇø£¬ÎÒÃÇ¿ÉÒÔºÜÈÝÒ×½èÖúÉçÇøµÄÁ¦Á¿Íê³ÉÎÒÃǵIJúÆ·¡£Í¬Ê±ºÜÈÝÒ׸úÆóÒµÒÑÓеÄ
CI/CD ¹¤¾ß½øÐм¯³É¡£ËüÓзdz£¿É¿¿µÄ²å¼þÌåϵ£¬ÎÒÃÇÏëÍê³É Jenkins ºÍÎÒÃÇ KubeSphere
½øÐÐÈںϣ¬ºÜÓпÉÄÜ»áʹÓòå¼þÀ©Õ¹µÄ¹¦ÄÜ£¬Èç¹ûËüûÓпɿ¿µÄÀ©Õ¹¿ª·¢µÄÌåϵ£¬¿ÉÄÜÎÒÃǼ¯³ÉÆðÀ´»á±È½ÏÀ§ÄÑ¡£
µ±ÎÒÃÇÑ¡Ôñ Jenkins ×÷ΪÎÒÃÇ CI/CD µÄÒýÇæºó£¬ÏÂÒ»²½ÊÇÈçºÎ½« Jenkins ÈÚÈëµ½ÎÒÃÇ
KubeSphere CI/CD Á÷Ë®ÏßÀï¡£
2 ´òÔì KubeSphere CI/CD Pipeline

KubeSphere CI/CD Á÷Ë®ÏßÔçÆÚʱÓÐһϵÁеÄÐèÇó£¬ÎÒ¼òµ¥ÁгöÀ´¡£Ê×ÏÈÊǶà×â»§¸ôÀëµÄÐèÇó£¬×î³õһЩ´óÆóÒµÓû§ÓкܶಿÃÅ¡¢·Ö¹«Ë¾£¬ËûÃÇÏ£ÍûÓÃÎÒÃÇ
KubeSphere ×÷ΪÈÝÆ÷ƽ̨£¬×îºóÊǶà×â»§¹ÜÀí£¬·½±ãËûÃǽøÐйÜÀí¡£ÎÒÃÇÊÇÒ»¸öÈÝÆ÷ƽ̨ÎÒÑ¡Ôñ K8s
×÷ΪÎÒÃǵײãÈÝÆ÷µÄÒýÇæ¡£ÎÒÃÇÏ£ÍûÔÚ K8s ÉÏ£¬Jenkins ¿ÉÒÔ³ä·ÖµØÊÍ·Å¡¢ÀûÓà K8s ×Ô¼ºµÄÄÜÁ¦£¬²¢ÇÒÎÒÃÇÒª°ÑÇ°ÃæÌáµ½µÄÆóÒµÖи´ÔӵĿª·¢¡¢²âÊÔ¡¢¹¹½¨¡¢²¿ÊðÒ»ÕûÌ×Á÷³Ì¡£Í¬Ê±ÎÒÃÇÒªÖ§³Ö¶àÖÖ·½Ê½µÄÁ÷Ë®Ïߣ¬ÎҺʹúÂë²Ö¿â°ó¶¨»¹ÊDz»°ó¶¨£¬Âú×ãÆóÒµµÄ¸´ÔÓÐèÇó¡£ÓÐһЩÓû§Ã»Óùý
Jenkins£¬Ëû´î½¨Á÷Ë®Ï߱ȽÏÀ§ÄÑ£¬ÎÒÃÇÏ£Íûͨ¹ýͼÐλ¯±à¼µÄÊֶμò»¯ËûÃÇÁ÷Ë®ÏߴµÄ¹ý³Ì£¬Ê¹ÓÃÆðÀ´¸ü¼Ó¼òµ¥¡£
Ê×ÏÈ£¬ÎÒ½éÉÜÒ»ÏÂÎÒÃÇÈçºÎʵÏÖ¶à×â»§¡£ÔÚ¶à×â»§ÀïÖ÷Òª·ÖΪÁ½²¿·Ö£¬Ò»ÊÇÈÏÖ¤²¿·Ö£¬¶þÊǼøÈ¨²¿·Ö¡£ÔÚÈÏÖ¤²¿·Ö±È½Ï¼òµ¥£¬ÎÒÃÇ
KubeSphere ±¾ÉíÄÚÖà Ldap ½øÐÐÓû§µÄ´æ´¢¡£Jenkins ±¾ÉíÓÐ¶Ô½Ó Ldap ·½°¸µÄ£¬ÎÒÃÇÈÃ
Jenkins Ö±½Ó¶Ô½Ó Ldap Àï¡£ÕâʱºòÎÒÃÇÍê³ÉÓû§µÄ´òͨ£¬Õâʱºò»áÓÐÒ»¸öÎÊÌ⣬Óû§´òͨºó£¬Requset
ÎÞ·¨´òͨ¡£KubeSphere ²»ÖªµÀ Ldap ÀïµÄÓû§µÄÃÜÂëÊÇʲô£¬Òò´ËÔÚ KubeSphere
ÏëÒªÒÔÓû§Éí·Ý¶Ô Jenkins ×ö²Ù×÷ʱҲ±È½ÏÀ§ÄÑÁË¡£

ÈçºÎÍê³ÉÈÏÖ¤£¿
ÔÚÈÏÖ¤ÀÎÒµ±Ê±×öÁËһЩµ÷ÑУ¬ÎÒ·¢ÏÖ Jenkins À©Õ¹¹ûÈ»ºÜ·á¸»£¬×ó±ßÊÇ Jenkins Ò»ÕŹٷ½µÄͼ£¬½éÉÜ
Jenkins ¼øÈ¨¹ý³ÌÊÇÔõÑùµÄ¡£Ëû·ÖΪ Web UI ºÍ Rest API Á½²¿·Ö£¬ÔÚ Rest
API ÀïÃæÓÐÒ»¸ö½Ð Basic Header ÑéÖ¤Æ÷£¬ÎÒ¿´µ½Õâ¸öÑéÖ¤Æ÷ÓÐÕæÕýµÄÃÜÂëÑéÖ¤Æ÷¡¢API
Token ÑéÖ¤Æ÷£¬ÎÒÏëÕâÊDz»ÊÇ¿ÉÀ©Õ¹µÄÃÜÂ룬ÎÒÑо¿ÁËһϷ¢ÏÖËüÕæµÄ¿ÉÒÔÀ©Õ¹£¬ÎÒÃÇ×Ô¼ºÐ´ÁËÒ»¸ö KubeSphere
Token µÄÑéÖ¤Æ÷£¬°ïÓû§Ê¹Óà KubeSphere Token ÇëÇó Rest API ʱ£¬Õâ¸öÇëÇó×îºó»áת·¢µ½ÎÒÃÇ
KubeSphere IAM ÇëÇóÑéÖ¤µÄ¹ý³Ì¡£
ÕâʱºòÎÒÃǵÄÈÏÖ¤Íê³ÉÁË£¬ÎÒÃǵÄÓû§ÊÇ´òͨµÄ£¬²¢ÇÒÎÒÃÇ¿ÉÒÔʹÓÃͳһµÄ API Token ½øÐÐÑéÖ¤£¬·ÃÎÊ
Jenkins µÄ API¡£

½ÓÏÂÀ´ÊÇÁíÒ»²¿·Ö¼øÈ¨¡£
ÕâÒ»²¿·ÖÀÎÒÏȽéÉÜ Jenkins µÄ API ºÍ K8s API µÄÇø±ð¡£ÉÏÃæÊÇ K8s API
»ñÈ¡µÄÐÅÏ¢£¬ÏÂÃæÊÇ Jenkins µÄ API¡£K8s µÄ API ÎÒÃÇ¿ÉÒԷdz£ÈÝÒ×·¢ÏÖËü·Ç³£½á¹¹»¯£¬ËüÓÐ×Ô¼ºµÄ¶¯×÷¡¢API
group£¬Ëü¾ßÌåÇëÇóµÄ Resource ÊÇʲô£¬ËüµÄÃû³ÆÊÇʲô¡£
ÎÒÃÇÔÙÀ´¿´ Jenkins µÄ API£¬Jenkins µÄ API ¿´ÆðÀ´ÊÇÒ»¶Ñ²»ÖªµÀÊÇʲôµÄ¶«Î÷£¬Jenkins
ÔÚÉè¼ÆÖ®³õ²»ÊÇ»ùÓÚ API µÄ·þÎñ£¬Õâµ¼ÖÂËüµÄһЩ²î¾à¡£ÎÒÃÇ¿ÉÒÔ¿´ K8s µÄ½çÃæ·½Ê½£¬K8s µÄ·½Ê½ÊÇ»ùÓÚ
Rest API µÄ·¾¶ºÍ¶¯×÷½øÐмøÈ¨µÄ¡£µ«ÔÚ Jenkins µ±ÖУ¬´ÓһЩ´úÂëÀïÄÚǶ¼ì²éÓï¾ä£¬¿´Õâ¸öÈËÊDz»ÊÇÓйÜÀíȨÏÞ»òÕß¶ÁȨÏ޵ȡ£Õâ˵Ã÷ÎÒÃǺÜÄѽèÖú
K8s µÄÄÜÁ¦°ÑËü¼øÈ¨¡£
Ç°ÃæÌáµ½ K8s µÄ¼øÈ¨ÓкܶàÎÊÌ⣬ÎÒÃǺóÃæ½øÐиÄÔì¡£×î³õÎÒÃÇÏ£Íû½èÖú K8s µÄÄÜÁ¦£¬ÎÒÃÇÔÚÏë
DevOps ÄÜ·ñ½èÖú Jenkins µÄÄÜÁ¦ÏÈÍê³É¼øÈ¨µÄ·½·¨¡£ÓÚÊÇÎÒÃÇʹÓÃÁËÁíÒ»¸ö·½°¸£¬Õâ¿ÉÒÔÀí½âΪÊÇÔÝʱµÄ·½°¸¡£×îºóÎÒÃÇ»áͨ¹ý
KubeSphere ÄÚÖüøÈ¨¿ÉÀ©Õ¹À´Íê³ÉÕⲿ·Ö¹¤×÷¡£
ÕâʱºòÓû§ÔÚÇëÇó KubeSphere API ʱ·ÖΪÁ½²¿·Ö£¬Ò»²¿·ÖÊǺÍȨÏÞ²Ù×÷Ïà¹ØµÄ¡£±ÈÈçÎÒҪΪ
DevOps ¹¤³ÌÌí¼ÓÓû§£¬·ÖÀà¡¢½ÇÉ«µÈ¡£ÁíÒ»²¿·ÖÊÇ·ÇȨÏÞÏà¹ØµÄ£¬µ± K8s API ÊÕµ½ÇëÇóºó£¬È¨ÏÞ
API ת·¢Îª API Server£¬ÎÒÃÇ»áÔÚ API Server Àïͬ²½Íù Jenkins дÈëһЩȨÏÞ¹æÔò£¬Âú×ãȨÏÞµÄÆ¥Åä¡£µ±ÄãÃÇ·ÃÎÊÆäËû
API ʱ¿ÉÒÔÖ±½Ó·¢µ½ Jenkins£¬½èÖúÔÓÐ Jenkins µÄ¼øÈ¨ÄÜÁ¦ºÍ API µÄÄÜÁ¦£¬Ê¹ÓÃÕâÖÖ·½Ê½ÓÐÒ»¸öÓŵ㣬Óû§ÈÔÈ»¿ÉÒÔʹÓÃ
Jenkins µÄÒ³Ãæ¡£ÎÒÃǵļøÈ¨¡¢ÈÏÖ¤ÊÇ¿ÉÒÔ´òͨµÄ£¬²¢ÇÒÎÒÃDz»ÐèÒª¶Ô Jenkins µÄ API
½øÐдóÁ¿µÄ°ü×°£¬ÒòΪËü²»¹æÔò£¬ÎÒÃǰü×°ÆðÀ´·Ç³£À§ÄÑ¡£ÎÒÃÇÔÚÖ®ºóµÄ°æ±¾ÖÐÒ²¶Ô API ½øÐÐÁ˰ü×°¡£ÕâʱºòÎÒÃÇÍê³ÉÁËÈÏÖ¤ºÍ¼øÈ¨µÄ²¿·Ö£¬¿ÉÒÔÂú×ã¶à×â»§µÄÐèÇó¡£
¹ØÓÚÈçºÎ³ä·ÖÊÍ·Å K8s ÄÜÁ¦£¬×î³õÎÒÃÇʹÓà Jenkins Éè¼ÆÖÐµÄ Kubernetes Plugin
µÄ·½°¸£¬ÎÒÃÇ×öÁËÅäÖÃÉϵĵ÷Õû£¬ÎÒÃÇĬÈÏÈ«²¿Ê¹Óà Kubernetes µÄ Agent£¬×Ô¶¯¶¯Ì¬´´½¨£¬ÕâÑù±È½Ï½ÚÊ¡×ÊÔ´£¬Ò²¿ÉÒÔ³ä·ÖÊÍ·Å
K8s µÄÄÜÁ¦¡£
ÕâʱºòÓÐÒ»¸öÎÊÌ⣬Óû§Ð´ Jenkinsfile ÐèÒª Agent µÄ¶¨Òå¡£Õâ¶Ô²»ÊìϤ K8s µÄÈËÀ´ËµÊǷdz£À§Äѵģ¬ËûÒªÏÈѧ»áÔõô×ö
Docker ¾µÏñ£¬ÔÙѧ»áÔõôд K8s yaml Îļþ£¬ÔÙÔËÐС£ÓÚÊÇÎÒÃÇÄÚÖÃÁËһЩÓû§¿ÉÄܱȽϳ£ÓõÄ
Agent ÀàÐÍ£¬±ÈÈç Maven Agent¡¢NodeJs Agent ͬʱ֧³ÖÓû§×Ô¼ºÀ©Õ¹ Agent
ÀàÐÍ£¬Âú×ãËû×Ô¼º¶ÀÌØµÄÐèÇó¡£Í¨¹ýÕâÖÖ·½Ê½£¬ÎÒÃdzä·ÖÊÍ·Å K8s µÄÄÜÁ¦¡£
ÁíÒ»²¿·ÖÊÇ In SCM Á÷Ë®ÏßµÄʵÏÖ·½Ê½£¬ÎÒÃǵÄÁ÷Ë®ÏßÒ»°ã·ÖΪÁ½ÖÖ£¬Ò»ÖÖÊÇͨ¹ý´úÂë²Ù×÷°ó¶¨µÄ£¬ÁíÒ»ÖÖÊÇͨ¹ý´úÂë²Ù×÷²»°ó¶¨µÄ¡£ÎÒµ÷ÑÐÁ˺ܶ෽°¸£¬ºÜ¶à³§ÉÌ×öµÄºÍ´úÂë·ÖÖ§°ó¶¨£¬ÎÒ¸öÈËÈÏΪÊDZȽϼٵķ½°¸¡£ÎÒ°ó¶¨ÁËÕâ¸öÁ÷Ë®Ïßµ½Ä³Ò»¸ö´úÂë²Ö¿âµÄijһ¸ö·ÖÖ§ÉÏ£¬ÎÒ²»Ö§³Ö×Ô¼º·¢ÏÖ·ÖÖ§£¬·¢ÏÖËüµÄ
PR£¬×Ô¶¯½øÐÐ CI/CD¡£ÎÒʵ¼ÊÉÏÖ»ÄÜΪһ¸ö·ÖÖ§Ö´ÐÐÁ÷Ë®ÏߵĹý³Ì¡£
Õâ»áÓÐһЩÎÊÌ⣬ÎÒÃÇÔÚ¿ª·¢¹ý³ÌÖкÜÈÝÒ×´´½¨ÐµķÖÖ§¡¢Ð嵀 PR£¬Õâʱºò DevOps ÊÇûÓÐÔËÐеġ£Ö»Óн«Ìá½»´úÂëµ½
Master ·ÖÖ§»òÕ߯äËûµÄÒѾÉèÖÃÁËÁ÷Ë®ÏߵķÖÖ§ÉϲŻᣬ²»ÀûÓÚÆóÒµ DevOps µÄ·¢Õ¹¡£
ÓÚÊÇÎÒÃǵ±Ê±µ÷ÑÐÏë׎èÖú Jenkins µÄÉú̬À´Ìṩ·ÖÖ§·¢ÏÖÕâÑùµÄ¹¦ÄÜ¡£Jenkins ×Ô¼ºÓÐÖ§³Ö
Jenkinsfile ·¢ÏֵŦÄÜ£¬Ëü¿ÉÒÔÖ§³Ö¶àÖÖ³§ÉÌµÄ SCM£¬ÓÐ Git¡¢GitHub¡¢GitLab¡¢Bitbucket
µÈ£¬µ±ÎÒÃÇÑ¡ÔñÕâÖÖ·½°¸Ê±£¬Í¬Ê±»¹ÓµÓÐÁËÁíÒ»¸öÄÜÁ¦£¬¿ÉÒÔ¼æÈÝ´«Í³Óû§µÄ Jenkinsfile£¬ÎÒÃDz»ÐèÒª×Ô¼º¶¨ÒåÒ»Ì×Á÷Ë®Ïߵıàд¹æ·¶¡£Èç¹ûÊÇ´«Í³µÄ
Jenkins Óû§£¬ËûÃÇÏëÇ¨ÒÆµ½ KubeSphere µÄÁ÷Ë®ÏßÉÏÀ´Ò²»á±äµÃ¸ü¼Ó¼òµ¥¡£
ÎÒÃÇÐèҪͼÐλ¯±à¼Á÷Ë®ÏßµÄÄÜÁ¦£¬ÔÚÁ˽âÕâ¸ö¹¦ÄÜʱºò£¬ÎÒÃDz»µÃ²»Ìáµ½ Jenkinsfile ¾ßÌåÄÚÈÝ¡£Jenkinsfile
ÓÐÁ½ÖÖÀàÐÍ£º½Å±¾ÀàÐ굀 Jenkinsfile ºÍÉùÃ÷ʽ¶¨ÒåµÄ Jenkinsfile¡£

ÕâÊÇÎÒ¾ÙµÄÁ½¸ö¼òµ¥µÄÀý×Ó£¬Ïë˵Ã÷ËûÁ©ÓÐʲô²»Í¬¡£×ó±ßµÄ Jenkinsfile ÀïÃæÓбäÁ¿¶¨Òå¡¢ÓÐ
for Ñ»·£¬Ò»¿´¸Ð¾õÎÒÔÚд´úÂ룬²»ÊÇÔÚдһ¸öÁ÷Ë®Ïߵ͍Òå¡£Õâ¸ö·½°¸ÓÐÒ»¸öȱµã£¬Ñ§Ï°ÇúÏ߷dz£¶¸ÇÍ¡£ÎÒÒªÏÈѧ»á
Groovy ÓïÑÔ£¬ÔÙѧϰ Jenkins É쵀 Groovy ÓïÑÔ¡£ÏÔÈ»¶ÔÓÚÎÒÃÇǰ¶ËµÄͬѧÀ´ËµÊǷdz£ÄÑÒÔ½âÎöµÄ£¬Õâ²»Êǽṹ»¯µÄ¶¨Ò壬ÎÒÃÇÒª×öͼÐλ¯µÄ±à¼²»ÄÜÓÃÕâÖÖ·½°¸¡£
ÁíÒ»ÖÖÊÇÉùÃ÷ʽÁ÷Ë®Ïߣ¬ÎÒÃÇ¿ÉÒÔÀ´¿´¿´ÉùÃ÷ʽµÄÁ÷Ë®Ïß¶¨Ò壺ËüÓÐÒ»¸öÁ÷Ë®Ïߣ¬ÔÚÁ÷Ë®ÏßÓкܶà Stage£¬Stage
ÏÂÃæ¿ÉÄÜÓоßÌåµÄ Step Ö´ÐÐһЩÃüÁî¡£ÕâÖÖ·½°¸ÇúÏßÏà¶Ôƽ»¬£¬ËûÃǵŦÄÜÏà¶ÔÓÐÏÞ£¬µ«×ãÒÔÂú×ãÆóÒµÀ︴ÔÓµÄ
CI/CD µÄÐèÇó¡£Õâʱºò¿ÉÒÔ½øÐнṹ»¯µÄ½âÎö£¬ÎÒÃǺó¶ËÌṩ½á¹¹»¯½âÎöµÄ API£¬Ç°¶ËͬѧÄõ½½á¹¹»¯½âÎöµÄÊý¾Ý£¬ÔÙ½øÐÐÁ÷Ë®ÏßµÄչʾ¡£ÓÚÊÇÎÒÃǵõ½
KubeSphere Á÷Ë®Ïߵıà¼Ò³Ã棬ÔÚ±à¼Ò³ÃæÀïÎÒÃÇ¿ÉÒÔºÜ˳ÀûÌí¼Ó˳ÐòµÄ Stage »òÕßÔËÐеÄ
Stage£¬Ìí¼ÓһЩ¾ßÌåµÄ Step£¬±ÈÈçÎÒÃÇÒªÀ´úÂë¡¢Ö´ÐÐÃüÁîµÈ¡£

¾¹ýÕâ¸ö½×¶Î£¬ÎÒÃÇ¿ÉÒÔÂú×ãÆóÒµÓû§µÄ¸´ÔÓ DevOps Á÷³Ì£¬ÈÃËûÃÇÔÚ K8s Ö®ÉϽøÐÐ DevOps
µÄ·½°¸£¬ÈÃÆóÒµÓµÓиü¿ìµÄÉÏÏßʱ¼ä¡¢¸ü¸ßµÄ²¿ÊðƵÂÊ¡¢¸ü¿ìµÄÐÞ¸´Ê±¼äºÍ¸ü¶ÌµÄ»Ö¸´Ê±¼ä¡£
µ±ÎÒÃÇ·¢²¼Á˸´ÔÓÁ÷Ë®ÏߵŦÄܺó£¬ÎÒÃÇÔÚÉçÇøºÍÆäËûÓû§ÊÕµ½ºÜ¶à·´À¡¡£Ê¹Óà Jenkins µÄ·½°¸£¬ËüµÄÁ÷³Ì¶¨ÒåÊÇÏà¶Ô¸´Ôӵģ¬ÎÒÒª¶¨ÒåÎҵĹ¹½¨¡¢²âÊÔ¡¢²¿ÊðµÈһϵÁеĽ׶Ρ£¶øÓÐЩÆóÒµ¾ÍÊÇÏëÊÔÒ»ÊÔ×Ô¼ºÄÜ·ñ¿ìËÙ½«×Ô¼ºµÄÓ¦Óò¿Êðµ½
K8s Ö®ÉÏ£¬¸´ÔÓµÄÁ÷Ë®Ïß¶ÔÕâÖÖÓû§À´ËµÊDz»ÊÊÓõģ¬ÓÚÊÇÎÒÃÇÌṩÁ˸ü¼Ó¼òµ¥Ò×ÓÃµÄ S2I/B2I ¹¦ÄÜ¡£
3 ¸ü¼Ó¼òµ¥Ò×ÓÃµÄ S2i
Ê×ÏÈ£¬S2I ÊÇʲô£¿S2I ²»ÊÇÎÒÃÇ´´ÔìµÄÒ»¸ö¸ÅÄËüÊÇ¿ªÔ´ÉçÇøµÄÒ»¸öÃüÁîÐй¤¾ß¡£Õâ¸ö¹¤¾ßÓÃÀ´×öʲô£¿ÈÃÓû§ÔÚ²»ÐèÒªÁ˽â
Docker Çé¿öÏ¿ÉÒÔ¹¹½¨×Ô¼ºµÄÓ¦ÓþµÏñ¡£ÄÇ S2I ºÍ´«Í³µÄ Docker ¹¹½¨ÓÐÊ²Ã´Çø±ðÄØ£¿ÔÚÎÒÃÇʹÓô«Í³
Docker ¹¹½¨µÄʱºòÊÇÕâÑùÒ»¸ö¹ý³Ì£¬ÎÒÃÇÓкܶàÓ¦Óã¬Ã¿¸öÓ¦Óö¼¿ÉÒÔÓÐ×Ô¼º Dockerfile£¬Í¨¹ý
Dockerfile ¿ÉÒԵõ½Ó¦ÓõľµÏñ¡£Ê¹Óà S2I ºó£¬ÎÒÃǵÄÁ÷³Ì±ä³ÉÁËʲô£¿ÎÒÃÇÿ¸öÓ¦ÓÿÉÒÔͨ¹ýͬһ¸ö
S2I µÄ Builder Image À´¹¹½¨×Ô¼ºµÄÓ¦ÓþµÏñ£¬Builder Image Ò²ÊÇ Docker
¾µÏñ¡£
Óû§Ö»ÐèҪѡÔñ Image ¾Í¿ÉÒԵõ½×Ô¼ºÓ¦ÓõľµÏñ£¬ÕâʱºòÓû§¹¹½¨ Docker µÄ¹ý³Ì±äµÃ±È½Ï¼òµ¥£¬ÒòΪÎÒÃÇÖ»ÐèҪʹÓÃ
S2I Image ½øÐмòµ¥µÄÑ¡Ôñ£¬²¢ÇÒÔÚÎÒÃÇÆóÒµÓû§ÖУ¬Î¬»¤¡¢¹ÜÀíÆðÀ´¸ü¼Ó·½±ã¡£
±ÈÈçÎÒÊÕµ½°²È«¾¯±¨ËµÄ³Ä³°æ±¾ÓÐÒ»¸ö°²È«Â©¶´£¬ÎÒÃÇÒª½øÐÐÉý¼¶¡£ÆóÒµµ±ÖÐÓкܶàÓ¦Ó㬵«ÆäʵËûÃÇµÄ Dockerfile
¶¼ºÜÀàËÆ£¬ÎÒҪ֪ͨËûÃÇÒ»¸ö¸ö½øÐÐÉý¼¶¡£¶øµ±ÎÒÃÇʹÓà S2I ʱ£¬ÎÒÃÇÖ»ÐèÒªÕÒרÃŵÄÈËÉý¼¶ Image£¬¸æËßÿ¸öÓ¦ÓøºÔðµÄÈËÔ±´¥·¢¹¹½¨¾ÍÉý¼¶Íê³ÉÁË£¬¿ÉÒÔÒ»²½ÉÏÏß¡£¹ÜÀí¸´ÔÓ¶ÈÒ²¼õСÁË¡£
ʹÓà S2I ºó£¬¿ÉÒÔ¼ò»¯¿ª·¢ÕߵŤ×÷·½Ê½¡£ÒµÎñ¿ª·¢ÈËÔ±Ö»ÐèÒªÔÚ×Ô¼ºµÄ IDE Àïд´úÂ룬Ìá½»´úÂëµ½
Git ²Ö¿â£¬´¥·¢¹¹½¨¡£Í¨¹ý¹¹½¨Æ÷¾µÏñ¹¹½¨³öËû×Ô¼ºµÄÓ¦ÓþµÏñ£¬¾Í¿ÉÒÔ°ÑÕâ¸ö¾µÏñÍÆË͵½ Docker
µÄ¾µÏñ²Ö¿â£¬²¢ÇÒ½øÐв¿ÊðµÈһϵÁеĹý³Ì¡£
Ç°Ãæ½éÉÜÁËʹÓà S2I ¿ª·¢ÕßµÄÁ÷³ÌÊÇÔõÑùµÄ¡£S2I ºÜºÃ£¬µ«ËüÖ»ÊÇÒ»¸öÃüÁîÐй¤¾ß£¬ÔÚÆóÒµÖÐʹÓ㬴ó¼Ò²»ÊÇÌØ±ðϲ»¶ÕâÖÖ·½Ê½¡£ÒòΪҪѧϰËüµÄÃüÁ½»»¥ÆðÀ´Ã»ÄÇôÇáËÉ¡£ÓÚÊÇÎÒÃÇÏë×ŰÑ
S2I Õâ¸ö²»´íµÄ¹¤¾ßÈÚÈëµ½ÎÒÃÇ KubeSphere Console »òÕß KubeSphere
Àï¡£ÈÃËü³ÉΪÎÒÃǹ¦ÄÜÄ£¿éµÄÒ»²¿·Ö¡£
ÕâÀï²»µÃ²»Ìáµ½ CRD£¬CRD ÊÇÀ©Õ¹ K8s µÄ·½Ê½£¬½ÐÌØÊâ×ÊÔ´¶¨Ò塣ʹÓÃÕâ¸ö·½Ê½ÎÒÃÇ¿ÉÒÔÇáËɵõ½ºÍ
K8s Ò»ÑùµÄÉùÃ÷ʽ API£¬ÎÒÃÇÄ£¿éÖ®¼äÊÇËÉñîºÏµÄ¡£K8s µ×²ãÌṩÁË List-Watch »úÖÆ£¬Ê¹ÓÃÕâÖÖ·½Ê½ÎÒÃÇ¿ÉÒÔ¿ìËÙÏìÓ¦Óû§
S2I µÄÐèÇó¡£

ÓÚÊÇÎÒÃÇ KubeSphere ÀS2I ¼Ü¹¹±ä³ÉÕâÑù¡£×ó±ßÊÇÎÒÃǵÄÓû§£¬ÓÒ±ßÊÇÎÒÃǵľßÌåϸ½Ú¡£Óû§¿ÉÒÔͨ¹ý
Kubectl »òÕ߯äËû¹¤¾ß£¬±ÈÈç KubeSphere Console£¬»òÕßÖ±½ÓÇëÇóÎÒÃÇµÄ API¡£Õâ¸ö
API Server ÊÇ K8s µÄ API Server£¬K8s µÄ API Server ÔÚÊÕµ½Óû§ÇëÇóʱ£¬»á°ÑÊý¾Ý´æ´¢µ½
etcd À»á֪ͨ S2I Operator Íê³ÉһϵÁеÄÈÎÎñ²Ù×÷¡£
ÔÚÕâÀïÎÒÃÇÖ÷Òª¶¨ÒåÁËÈý¸ö CRD£¬µÚÒ»¸öÊÇ S2I Template£¬ÓÐ Java¡¢Golang
ºÍ Binary¡£ÔÚÌîдºÜ¶àÐÅϢʱ²»ÏëÌîÐ´ÖØ¸´µÄÐÅÏ¢£¬ËûÏëҪѡÔñÒ»¸öÄ£°å¡£±ÈÈçÎÒ´´½¨Á÷Ë®Ïßʱ£¬ÎÒÊÇ
Java ÓïÑԵģ¬S2I Template ¾ÍÊÇÕâÑù¡£S2i Builder ÀàËÆÎÒÃǵÄÁ÷Ë®Ïß¶¨Ò壬µ±ÎÒÃÇÑ¡ÔñºÃҪʹÓÃÓïÑÔ£¬ÕâʱºòÖ»ÐèҪѡÔñ´úÂë²Ö¿â»òÕßÉÏ´«ÖÆÆ·£¬¼ÓÉÏÌîдÎÒÃÇÒªÖÆ×÷µÄ¾µÏñ»òÕßÍÆË͵ľµÏñÃû³Æ£¬ÕâʱºòÎÒÃǶ¨ÒåºÃÒ»¸öÁ÷Ë®Ïß¡£ÎÒÃÇ¿ÉÒÔ´¥·¢£¬Ã¿´Î´¥·¢¶¼»áÉú³öÒ»¸ö
S2I Run£¬ÔÚ S2I Run ÀïÎÒÃǾßÌåÖ´ÐÐ S2I µÄ¹ý³Ì£¬Íê³É¹¹½¨¾µÏñ¡¢ÍÆË;µÏñ£¬°ïæ°ÑÕâһϵÁеÄÐÅÏ¢Éϱ¨µ½
API Server ½øÐлã×Üչʾ¡£
ÓÚÊÇÎÒÃǼòµ¥µÄ CI/CD Ö»ÐèÒªÌîд¼òµ¥µÄ±íµ¥£¬ÎÒÃÇÑ¡Ôñ¹¹½¨»·¾³ÊÇʲô£¬Ìîд¾µÏñ¡¢²Ö¿âµØÖ·¡¢Ãû³Æ£¬¾Í¿ÉÒÔÍê³ÉÁË¡£Í¨¹ýÕâÖÖ·½Ê½£¬ÔÚÎÒÃÇ
KubeSphere Console ÉÏ£¬¿ÉÒÔ´ÓÔ´´úÂëÒ»¼üÖ±´ï·þÎñ£¬ÎÒÃDz»ÊÇÖ»Óй¹½¨¾µÏñµÄ¹ý³Ì£¬ÎÒ»¹»á×Ô¶¯ÎªÄã´´½¨
Deployment ÒÔ¼° Service µÈ×ÊÔ´¡£Óû§Í¨¹ýÌîдһ¸ö±íµ¥¿ÉÒÔÒ»¼üÆô¶¯×Ô¼ºµÄ·þÎñ¡£
µ±È»£¬Óû§¿ÉÄÜÓÐһЩÍŶÓÐ×÷ÐèÇó¡£ÎÒÃÇ»áÔÚÆ½Ì¨Õ¹Ê¾¹¹½¨Êý¾Ý¡¢Í³¼Æ£¬·½±ãÍŶÓÐ×÷¡£±ÈÈçÎÒ¿´µ½Ëû½ñÌìÏÂÎç¹¹½¨ÁËÒ»´ÎµÈ¡£ÕâÊÇÎÒÃÇ
KubeSphere S2I 2.1 °æ±¾ºóÓÐÒ»¸öµ¥¶ÀµÄÒ³ÃæÕ¹Ê¾Æä״̬£¬Óû§Ê¹ÓÃÆðÀ´ÊǷdz£¼òµ¥µÄ¡£Í¨¹ý¼òµ¥µÄ
S2I/B2I£¬ÎÒÃÇΪÁËÈÃÓû§Óиü¿ìµÄÉÏÏßʱ¼ä¡¢¸ü¸ßµÄƵÂÊ¡¢¸ü¿ìµÄÐÞ¸´Ê±¼äºÍ¸ü¶ÌµÄ»Ö¸´Ê±¼ä¡£
4 ³ÖÐøÓÅ»¯£¬Èà CI/CD ¸ü¼ÓѸËÙ
ÎÒÃÇ DevOps Á÷Ë®ÏßºÍ S2I/B2I ¿ÉÒÔÂú×ã¾ø´ó¶àÊýÓû§µÄÐèÇ󣬰üÀ¨¸´Ô CI/CD
³¡¾°£¬»¹Óмòµ¥µÄ CI/CD ³¡¾°¡£ÎÒÃÇ»¹»áÓÐһЩÓÅ»¯µã£¬ÕâÊÇÎÒÃÇ KubeSphere ÖеÄÒ³Ãæ¡£

Èç¹ûÄãÊÇ KubeSphere ÔçÆÚÁ÷Ë®ÏßµÄÓû§£¬ÏàÐÅÄãÒ»¶¨¼û¹ýÕâ¸öÒ³Ãæ¡£Õâ¸öµØ·½ÊÇÁ÷Ë®ÏßÔÚ³õʼ»¯£¬³õʼ»¯Ê±¼äºÜ³¤£¬ÕâÀ§ÈÅÁËÎÒÃÇÍŶӺܾã¬Ò²À§ÈÅÎÒÃǵĿͻ§¡¢Óû§ºÜ¾Ã¡£ÓÚÊÇÎÒÃÇÔÚ
Jenkins ÉçÇøÖнøÐÐÁËһЩÑо¿¡£
ÕâÀïÌáµ½ Jenkins EMA Ëã·¨£¬Õâ¸öËã·¨ÄãÃDz»ÐèÒªÁ˽âËüÊÇʲô£¬ÎÒ¼òµ¥½éÉÜËüµÄ¹¦ÄÜÊÇʲô¡£Jenkins
µ®ÉúµÄÄê´ú·Ç³£Ô磬´ó¸ÅÓÐÊ®¼¸¶þÊ®ÄêµÄʱ¼ä£¬Õâ¸ö EMA Ëã·¨ÆäʵÊÇ Jenkins ÄÚ²¿µÄ Agent
µ÷¶ÈËã·¨£¬ÔÚÕâ¸öµ÷¶ÈËã·¨ÀﵱʱµÄÄ¿±êÂú×ãÒ»¸öÄ¿±ê£¬²»ÒªÈÃÎÒÃÇ Agent ·¢ÉúƵ·±µÄ±ä»¯£¬±ÈÈçÄãÒªÀ©ÈÝ£¬ÎÒÅжÏÊÇ·ñÓÐÈÎÎñÔËÐÐÍêÁË£¬Èç¹ûÓÐÈÎÎñÒªÔËÐÐÍêÁË£¬ÒªµÈÒ»µÈ¡£ÒòΪ×ö¶¯Ì¬µÄÀ©ÈÝ¡¢ËõÈݷdz£ÏûºÄ×ÊÔ´£¬Ò²ºÜÂý¡£
µ« EMA Ëã·¨²»ÊʺÏÕâ¸öʱ´ú£¬ÎÒÃÇÖªµÀ K8s µÄÄÜÁ¦ÊÇ˲¼äÆô¶¯£¬Æô¶¯Íêºó˲¼äÖ´ÐС£ÓÚÊÇÎÒ½øÐÐÁËһϵÁеĵ÷ÑУ¬·¢ÏÖĬÈϵĵ÷¶ÈËã·¨ÊÇ¿ÉÒÔ½øÐÐÀ©Õ¹µÄ¡£ÎҸıäÁË
Kubernetes Agent µÄµ÷¶ÈËã·¨£¬ÏÖÔÚÒѾ¹±Ï׸øÉçÇø¡£

×îºó±ä³ÉÓұߵÄÑù×Ó£¬²ßÂԷdz£¼òµ¥£¬Ã»ÓÐÈκÎÑӳٵĵ÷¶È²ßÂÔ¡£Èç¹ûÓÐÒ»¸öÁ÷Ë®ÏßÀ´ÁË£¬ÎÒÃÇÁ¢Âí¶ÔËüÆô¶¯Ò»¸ö
Agent Ö´ÐÐÁ÷Ë®Ïß¡£ÎÒÃǽøÐвâÊԻᷢÏÖÔÀ´³õʼ»¯Ê±¼äµÈ´ýÓм¸Ê®Ãë¡¢¼¸·ÖÖÓÉõÖÁ¼¸Ê®·ÖÖÓ¡£Í¨¹ýÓÅ»¯¿ÉÒÔÈõ÷¶Èʱ¼ä±ä³ÉºÁÃë¼¶£¬Ò²¾ÍÊÇ˵ÎÒÊÕµ½Ò»¸öÈÎÎñºó£¬Á¢Âí¿ÉÒÔÆô¶¯£¬Ö´ÐÐÎÒµÄÈÎÎñ¡£

ÔÚÕâÕÅͼÊÇ Jenkins µÄ¼à¿ØÍ¼£¬»ÒÉ«ÏßÖ¸µÄÊǵȴý¹¹½¨ÈÎÎñµÄÊýÁ¿£¬ºìÉ«ÏßÖ¸µÄÊÇæµ Agent
ÊýÁ¿¡£¿ÉÒÔ¿´µ½»ÒÉ«Ï߸ոտªÊ¼ºó£¬ºìÉ«µÄÏß»áѸËÙÉýÆðÀ´£¬Íê³É CI/CD µÄÈÎÎñ¡£ÎÒÃǵ±Ê±×öÁË Master
½ÚµãµÄ¼à¿Ø£¬¿ÉÒÔ´ÓÕâ¸öʱ¼ä¿´³öÀ´£¬ÎÒÃǵ±Ê±²âÊÔÁË 100 ¸öÁ÷Ë®Ïߣ¬´ó¸ÅÍê³Éʱ¼ä£¬Í¬Ê±Íê³ÉÐèÒª 4
·ÖÖÓ¡£ÎÒÃÇÕâÀï¿´µ½ Jenkins Master CPU ÓÃÁ¿µ±Ê±´òÂúÁË¡£Èç¹ûÎÒÃÇ¶Ô Master
½Úµã½øÐÐÀ©ÈÝ£¬»òÕß¶Ô K8s »·¾³½øÐÐÀ©ÈÝ£¬ÎÒÃÇ¿ÉÄÜ¿ÉÒÔÅܵøü¿ì¡£
ÕâÒ»²¿·ÖÊÇÎÒÃÇ Jenkins Agent µÄÀ©Õ¹¡£µ± Agent Æô¶¯ºóÓÐÒ»¸öÎÊÌ⣬ÎÒÃÇÔõôÈÃÁ÷Ë®ÏßÅܵĸü¿ì£¿ÕâʱºòÌáµ½Óû§µÄ³¡¾°£¬Óû§ºÜ¶àÊÇ
Java µÄ¿ª·¢Õߣ¬ËûÃÇ»áÔÚÆóÒµµÄ»·¾³´îÒ»¸ö Nexus ×÷Ϊ×Ô¼ºµÄÖÆÆ·¹ÜÀíºÍÒÀÀµ»º´æ¡£
ËûÃǵ±Ê±Ê¹ÓÃÕâÖÖ·½°¸£¬ÔÚÎÒÃÇ Jenkinsfile ÀïÅäÖÃʹÓà Nexus£¬¿´ÆðÀ´ÊÇûÎÊÌâµÄ£¬Êµ¼ÊÉÏÕæµÄûÓÐÎÊÌâÂð£¿Õâʱ²»µÃ²»Ëµµ½¿ª·¢¸ß·åÆÚ£¬µ±¿ª·¢¸ß·åÆÚÀ´µÄʱºò£¬Ò»¸öÏÂÎ翪·¢ÈËÔ±×î¶àÌá½»´úÂëÓм¸Ê®¸ö»òÕßÉϰÙÈËͬʱÌá½»´úÂ룬»áÆô¶¯·Ç³£¶àµÄ
Agent¡£ÒòΪ Agent ÿ´Î»áÏú»Ù£¬ËùÒÔÿ´ÎÔËÐÐÁ÷Ë®ÏßµÄʱºò£¬Agent ¶¼ÐèÒª´Ó Nexus
ÖØÐÂÀ»º´æ£¬ÕâʱºòÎÒÃÇ·¢ÏÖ Agent ËÞÖ÷»úµÄÓ²ÅÌ I/O ÅÜÂúÁË£¬²¢ÇÒ Nexus ³ö¿Ú´ø¿íÒ²ÅÜÂúÁË¡£Nexus
»¹»á³öÏÖ²¿·ÖµÄÁ¬½Óʧ°Ü£¬ËüµÄÁ÷Ë®ÏßËäÈ»Æô¶¯ºÜ¿ì£¬µ«ÔËÐв»¹»¿ì¡£
ÓÚÊÇÎÒÃÇÔÚ 2.1 °æ±¾ÖÐÌí¼ÓÁËÁíÒ»¸ö¹¦ÄÜ£¬»ùÓÚÓ²Å̵ÄÒÀÀµ»º´æ¡£Ö®Ç°ÎÒÃÇʹÓà Nexus »º´æÖÐÐIJֿ⣬ÔÚÕâ¸ö°æ±¾ÖÐÎÒÃÇ´Ó½ÚµãÓ²ÅÌÖмÓÉÏ»º´æ£¬µ±Ã»ÓÐÒÀÀµµÄʱºò£¬ÎÒ»áÏȼì²é½ÚµãµÄÉÏÓÐûÓÐÒÀÀµ£¬Èç¹ûûÓУ¬ÎÒ»áÈ¥
Nexus£¬Nexus ûÓÐÔÙÈ¥ÖÐÐIJֿ⡣ʹÓÃÕâÖÖ·½Ê½ÎÒÃÇÓ²ÅÌ I/O ºÍ Nexus ³ö¿Ú´ø¿íÒѾ½µÏÂÀ´£¬¿ÉÒÔ±ÜÃâÿ´ÎÖØÐÂÀ»º´æ£¬ÈÃÎÒÃÇ
CI/CD ÅܵøüѸËÙ¡£

ÕâÊÇÎÒÃǵĹ¹½¨£¬Ö÷ÒªÕë¶Ô»º´æµÄ¶Ô±È¡£¿ÉÒÔ¿´µ½ÕâÀïÓÐÁ½¸ö²âÊÔÓÃÀý£¬Ò»¸öÊÇ Java µÄ£¬ÁíÒ»¸öÊÇ Node.js£¬¶þÕßÒ²ÊÇ¿ªÔ´µÄ¡£Í¨¹ýÓÃËüÂú×ãÒÀÀµ£¬ÎÒÃÇËÙ¶ÈÌáÉý£¬Java
¿ÉÒÔ×öµ½ 9 ±¶£¬Node.js ²î²»¶àÓÐ 5 ±¶Ö®¶à¡£µ±ÎÒÃǵÄÔËÐÐËÙ¶È¡¢µ÷¶ÈËٶȺܿìµÄʱºò£¬ÆóÒµµÄ·¢²¼ËÙ¶ÈÒ²»á±äµÃºÜ¿ì¡£
µ±È»£¬ÎÒ½éÉÜÁË KubeSphere DevOps ÓÅ»¯µÄÁ½¸öµã£¬ÎÒÃÇÓÅ»¯ÁËºÜ¶àµØ·½£¬°üÀ¨Ç°ÃæÌáµ½µÄÓû§ÓÅ»¯¡¢ÎÞ¸ÐÖª»º´æÒÔ¼°ÎÒÃÇÖ§³Ö
S2i Runtime Image µÈ£¬»¹ÓÐ DevOps ¶¯Ì¬ PVC£¬ÎÒÃÇ×öµÄÓÅ»¯ÊÇÏëÈÃÓû§Ê¹Óõøü·½±ã£¬ÈÃËûÓµÓиü¿ìÉÏÏßʱ¼ä¡¢¸ü¸ßµÄ²¿ÊðƵÂÊ¡¢¸ü¿ìµÄÐÞ¸´Ê±¼äºÍ¸ü¶ÌµÄ»Ö¸´Ê±¼ä¡£
Õë¶ÔǰÁ½²¿·Ö£¬ÎÒµÄ CI/CD ¿ÉÒÔÅܵúܿ죬²¢ÇÒÂú×ãÓû§µÄÈκÎÐèÇ󡣯äʵÎÒÃÇ»¹ÊÇÓкܶàδÀ´µÄ¹æ»®£¬ÔÚÕâÀïÎÒÖ»ÊÇչʾÁËδÀ´¹æ»®µÄÉè¼ÆÍ¼¡£

ÕâÊÇÎÒÃÇÔÚ 3.0 ¼Æ»®×öµÄÄ¿±êºÍ´´½¨£¬ÎÒÃÇ Jenkinsfile ¶¨ÒåÆðÀ´Ïà¶Ô±È½Ï¸´ÔÓ£¬ÎÒÃÇÏ£ÍûÓû§¿ÉÒÔͨ¹ýÑ¡ÔñÓïÑÔ£¬Ñ¡Ôñ×Ô¼º×öʲôµÄ·½Ê½¿ÉÒÔÍê³É×Ô¼º¸´ÔÓµÄÁ÷Ë®Ïß´´½¨£¬¼ò»¯Óû§µÄ´´½¨¹ý³Ì¡£ÎÒÃÇÒ²»áÖ§³ÖÓû§µÄÓʼþ֪ͨµÈ¡£ÎÒÕâÀïûÓÐÁгöÌ«¶à£¬ÎÒÏ£ÍûÄܹ»´ÓÉçÇøµÄÓû§¡¢ÉçÇø¹±Ï×Õßµ±Öеõ½¸ü¶àµÄ·´À¡£¬°üÀ¨Äã¿ÉÒÔÏòÎÒÃÇ·´À¡ÄãÏëҪʲôÑùµÄ¹¦ÄÜ£¬»òÕßÄãÖ±½Ó¸øÎÒÃÇÌá½»´úÂ룬ÈÃÎÒÃǵÄÉçÇø±äµÃ¸üºÃ¡£ |