±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚIBM£¬ÎÄÕÂÖ÷Òª½éÉÜÖ÷Òª½éÉÜÁËDevOps
ÊÇʲô¡¢DevOps µÄ¼¼ÊõʵÏÖ·½Ê½ÒÔ¼°DevOps ÓëÈÝÆ÷¡¢Kubernetes
Ö®¼äµÄ¹ØÏµµÈÏà¹ØÖªÊ¶¡£ |
|
½üÁ½Äê£¬Ëæ×ÅÈÝÆ÷¡¢Kubernetes µÈ¼¼ÊõµÄÐËÆð£¬DevOps
Õâ¸ö¸ÅÄî±»¹ã·ºÌá¼°²¢±»´óÁ¿Ê¹Óᣠ±¾ÎĽ«»á´ÓÒÔϼ¸¸ö·½Ãæ×ÅÊÖ£¬½áºÏʵÑéÕ¹Ïֵķ½Ê½£¬ÈöÁÕßÕæÕýÀí½â DevOps
µÄº¬Òå¡£
DevOps ²úÉúµÄ±³¾°
DevOps ÓëÈÝÆ÷¡¢Kubernetes Ö®¼äµÄ¹ØÏµ
DevOps µÄ¼¼ÊõʵÏÖ·½Ê½
DevOps ÊÇʲô
DevOps ÖÐµÄ Dev Ö¸µÄ Development£¬Ops Ö¸µÄÊÇµÄ Operations£¬ÓÃÒ»¾ä»°À´Ëµ
DevOps ¾ÍÊÇ´òͨ¿ª·¢ÔËάµÄ±ÚÀÝ£¬ÊµÏÖ¿ª·¢ÔËάһÌ廯¡£
´ÓÆÙ²¼Ê½¿ª·¢µ½Ãô½Ý¿ª·¢
̸µ½ DevOps µÄ·¢Õ¹Ê·£¬ÎÒÃÇÐèÒªÏÈ̸һÏÂÃô½Ý¿ª·¢¡£
Ê×ÏÈ£¬Ãô½Ý¿ª·¢ÊÇÃæÏòÈí¼þµÄ£¬¶øÈí¼þÒÀÀµÓÚ¼ÆËãÓ²¼þ¡£ÎÒÃÇÖªµÀ£¬ÊÀ½çÉϵÚһ̨¼ÆËã»úÊÇÔÚ 1946 Äê³öÏֵġ£Òò´Ë£¬Èí¼þ¿ª·¢Ïà¶ÔÓÚÈËÀàÀúÊ·¶øÑÔ£¬Ê±¼ä²¢²»³¤¡£Ïà¶ÔÓÚÈí¼þ¿ª·¢·½·¨ÂÛµÄÕÆÎÕ£¬ÈËÃǸüÉó¤ÓÚ¹¤³Ìѧ£¬Èç¸ÇÂ¥¡¢ÔìÇŵȡ£ÎªÁËÍÆ¶¯Èí¼þ¿ª·¢£¬1968
Ä꣬ÈËÃǽ«¹¤³ÌѧµÄ·½·¨Ó¦Óõ½Èí¼þÁìÓò£¬Óɴ˲úÉúÁËÈí¼þ¹¤³Ì¡£
Èí¼þ¹¤³ÌµÄ·½Ê½ÓÐÆäÓŵ㣬µ«´øÀ´Á˲»ÉÙÎÊÌâ¡£×î¹Ø¼üÒ»µãÊÇ£ºÈí¼þ²»Í¬ÓÚ¹¤³Ì¡£Í¨¹ý¹¤³Ìѧ½¨ÔìµÄ´óÇÅ¡¢¸ßÂ¥ÔÚ¿¢¹¤ºó£¬ÈËÃÇͨ³£²»»á¶Ô´óÇŸßÂ¥µÄÖ÷ÌåÓдóÁ¿Ê¹ÓÃÐèÇóµÄ±ä¸ü£»µ«Èí¼þÈ´²»Í¬¡£¶ÔÓÚÃæÏò×îÖÕÓû§µÄÈí¼þ£¬ÈËÃǶÔÓÚÈí¼þ¹¦ÄܵÄÐèÇóÊǻ᲻¶Ï±ä»¯µÄ¡£ÔÚÆÙ²¼Ê½¿ª·¢µÄģʽÏ£¬µ±¿Í»§¶ÔÓ¦ÓÃÓб仯µÄÐèÇóʱ£¬Èí¼þ³§É̵ÃÖØÐ¿ª·¢Èí¼þ¡£Õ⽫»áʹÆóÒµµÄ¾ºÕùÁ¦´ó·ùϽµ¡£
´«Í³µÄÈí¼þ¿ª·¢Á÷³ÌÊÇ£º²úÆ·¾ÀíÊÕ¼¯Ò»ÏßÒµÎñ²¿ÃźͿͻ§µÄÐèÇó£¬ÕâЩÐèÇó¿ÉÄÜÊÇй¦ÄÜÐèÇó£¬Ò²¿ÉÄÜÊǶԲúÆ·ÏÖÓй¦ÄÜ×ö±ä¸üµÄÐèÇó¡£È»ºó½øÐÐÆÀ¹À¡¢·ÖÎö£¬½«ÕâЩÐèÇóÖÆ¶¨Îª²úÆ·µÄ·Ïßͼ£¬²¢ÇÒ·ÖÅäÏàÓ¦µÄ×ÊÔ´½øÐÐÏà¹Ø¹¤×÷¡£½ÓÏÂÀ´£¬²úÆ·¾Àí½«ÐèÇóÊä³ö¸ø¿ª·¢²¿ÃÅ£¬¿ª·¢¹¤³Ìʦд´úÂ롣дºÃÒԺ󣬾ÍÓɲ»Í¬µÄ²¿ÃŵÄÈËÔ±½øÐкóÐøµÄ´úÂë¹¹½¨¡¢ÖÊÁ¿¼ìÑé¡¢¼¯³É²âÊÔ¡¢Óû§ÑéÊÕ²âÊÔ£¬×îºó¸øÉú²ú²¿ÃÅ¡£ÕâÑù´øÀ´µÄÎÊÌâÊÇ£¬¿ª·¢ÖÜÆÚ±È½Ï³¤£¬²¢ÇÒÈç¹ûÓÐÈκαä¸ü£¬¶¼ÒªÖØÐÂ×ßÒ»±é¿ª·¢Á÷³Ì£¬ÔÚÉ̳¡ÈçÕ½³¡µÄ½ñÌ죬Èí¼þÒ»¸ö°æ±¾ÍƳٷ¢²¼£¬¿ÉÄܵ½·¢²¼Ê±Õâ¸ö°æ±¾ÔÚÊг¡ÉϾÍÒѾ¹ýʱÁË£»¶ø¾ºÕù¶ÔÊֺܿÉÄÜÓÉÓÚÔÚÐÂÈí¼þ·¢²¼ÉÏ¿ìÁËÒ»²½£¬¶øÑ¸ËÙÇÀÕ¼Á˿ͻ§ºÍÊг¡¡£
ÕýÊÇÓÉÓÚÉÌÒµ»·¾³µÄѹÁ¦£¬Èí¼þ³§ÉÌÐèÒª¸Ä½ø¿ª·¢·½Ê½¡£
2001 Äê³õ£¬ÔÚÃÀ¹ú»¬Ñ©Ê¤µØ snowbird£¬17 λר¼Ò¾Û¼¯ÔÚÒ»Æð£¬¸ÅÀ¨ÁËһЩ¿ÉÒÔÈÃÈí¼þ¿ª·¢ÍŶӸü¾ßÓпìËÙ¹¤×÷¡¢ÏàÓ¦±ä»¯µÄÄÜÁ¦µÄ¼ÛÖµ¹ÛÔÔò¡£ËûÃdzÆ×Ô¼ºÎª"Ãô½ÝÁªÃË"¡£
Ãô½Ý¿ª·¢µÄÖ÷Òª¼ÛÖµ¹ÛÈçÏ£º
±í 1. Ãô½Ý¿ª·¢µÄºËÐļÛÖµ¹Û

ÓÐÁËÃô½ÝÁªÃË£¬ÓÐÁËÃô½Ý¿ª·¢¼ÛÖµ¹Û£¬±ØÈ»»á²úÉú¿ª·¢µÄÁ÷ÅÉ¡£Ö÷ÒªµÄÃô½Ý¿ª·¢Á÷ÅÉÓУº¼«ÏÞ±à³Ì£¨XP£©¡¢Scrum¡¢Ë®¾§·½·¨µÈ¡£
ÖÁ´Ë£¬Ãô½Ý¿ª·¢ÓÐÀíÄî¡¢Óз½·¨¡¢ÓÐʵ¼ù¡£Ëæ×ÅÔÆ¼ÆËã¸ÅÄîµÄÐËÆð£¬ÔƼÆËãµÄ²»¶ÏÂ䵨£¬Ãô½Ý¿ª·¢²»½öʵÏÖÁ˹¤¾ß»¯£¬Ò²µÃµ½ÁËÉý»ª¡£
´ÓÃô½Ý¿ª·¢µ½ DevOps
̸µ½ÁËÃô½Ý¿ª·¢£¬ÄÇôÃô½Ý¿ª·¢ºÍ DevOps ÓÐʲô¹ØÏµÄØ£¿
Ãô½Ý¿ª·¢ÊÇ¿ª·¢ÓòÀïµÄ¸ÅÄÔÚÃô½Ý¿ª·¢»ù´¡Ö®ÉÏ£¬ÓÐÈçϽ׶Σº
Ãô½Ý¿ª·¢->³ÖÐø¼¯³É->³ÖÐø½»¸¶->³ÖÐø²¿Êð->DevOps
´ÓÃô½Ý¿ª·¢µ½ DevOps£¬Ç°Ò»¸ö½×¶Î¶¼ÊǺóÒ»¸ö½×¶ÎµÄ»ù´¡£»Ëæ×Ž׶εÄÍÆ½ø£¬Ã¿¸ö½×¶Î¸ÅÄ¸ÇµÄÁ÷³ÌÔ½À´Ô½¶à£»×îÖÕ
DevOps º¸ÇÁËÕû¸ö¿ª·¢ºÍÔËά½×¶Î¡£ÕýʽÓÉÓÚÿ¸ö½×¶ÎÉæ¼°µÄ·¶Î§²»Í¬£¬Òò´ËËùÒÔÿ¸ö¸ÅÄîËùÌṩµÄ¹¤¾ßÒ²ÊDz»Ò»ÑùµÄ¡£¾ßÌåÄÚÈÝÎÒÃDzÎÕÕÏÂͼ£º
ͼ 1. ´ÓÃô½Ý¿ª·¢µ½ DevOps µÄ½ø½×

³ÖÐø¼¯³É£¨Continuous Integration£©Ö¸µÄÊÇ£º´úÂ뼯³Éµ½Ö÷¸É֮ǰ£¬±ØÐëÈ«²¿Í¨¹ý×Ô¶¯»¯²âÊÔ£»Ö»ÒªÓÐÒ»¸ö²âÊÔÓÃÀýʧ°Ü£¬¾Í²»Äܼ¯³É¡£³ÖÐø¼¯³ÉµÄҪʵÏÖµÄÄ¿±êÊÇ£ºÔÚ±£³Ö¸ßÖÊÁ¿µÄ»ù´¡ÉÏ£¬ÈòúÆ·¿ÉÒÔ¿ìËÙµü´ú¡£
³ÖÐø½»¸¶£¨Continuous Delivery£©Ö¸µÄÊÇ£º¿ª·¢ÈËԱƵ·±µØ½«Èí¼þµÄа汾£¬½»¸¶¸øÖÊÁ¿ÍŶӻòÕßÓû§£¬ÒÔ¹©ÆÀÉó¡£Èç¹ûÆÀÉóͨ¹ý£¬´úÂë¾Í±»·¢²¼¡£Èç¹ûÆÀÉó²»Í¨¹ý£¬ÄÇôÐèÒª¿ª·¢½øÐбä¸üºóÔÙÌá½»¡£
³ÖÐø²¿Êð£¨Continuous Deployment£©Ö¸µÄÊÇ£º´úÂëͨ¹ýÆÀÉó²¢·¢²¼ºó£¬×Ô¶¯²¿Êð£¬ÒÔ½»¸¶Ê¹Óá£
DevOps ÊÇÒ»×éÍêÕûµÄʵ¼ù£¬¿ÉÒÔ×Ô¶¯»¯Èí¼þ¿ª·¢ºÍ IT ÍŶÓÖ®¼äµÄÁ÷³Ì£¬ÒÔ±ãËûÃÇ¿ÉÒÔ¸ü¿ì¡¢¸ü¿É¿¿µØ¹¹½¨¡¢²âÊԺͷ¢²¼Èí¼þ¡£
ͼ 2. DevOps ʾÒâͼ

DevOps µÄ¼¼ÊõʵÏÖ
DevOps µÄ¼¼ÊõʵÏÖ£¬ÐèÒªÈý¸ö·½Ã棺±ê×¼½»¸¶Îï¡¢ÈÝÆ÷µ÷¶Èƽ̨¡¢DevOps ¹¤¾ßÁ´¡£½ÓÏÂÀ´£¬ÎÒÃÇÏêϸ¿´Ò»ÏÂÕâ¸öÈý¸ö·½ÃæµÄÄÚÈÝ¡£
DevOps µÄ¼¼ÊõʵÏÖ 1£º±ê×¼½»¸¶Îï
DevOps µÄÄ¿µÄÔÚÓÚÈÿª·¢ºÍÔËάһÌ廯¡¢Èÿª·¢ºÍÔËάÏ໥֮¼äµÄ¹µÍ¨¸ü¼Ó˳³©¡¢Ñ¸½Ý£¬´Ó¶øÊ¹ÆóÒµ¸üÄÜÊÊÓ¦Êг¡µÄ±ä»¯¡£
µ±È»£¬ÕæÕýʵÏÖ¿ª·¢ÔËάһÌ廯£¬²¢·ÇÖ»ÊÇÈÿª·¢ºÍÔËάµÄÈË×øÔÚÒ»ÆðÄÇô¼òµ¥¡£´Ó¼¼Êõ½Ç¶È£¬DevOps
Ê×ÏÈÐèÒªÓÐÒ»¸ö°üº¬ÁË¡°²Ù×÷ϵͳ+Runtime+Ó¦Óᱵıê×¼½»¸¶Îï¡£³ý´ËÖ®Í⣬»¹ÐèҪͨ¹ýÕû¸ö DevOps
Á÷³ÌÀ´´òͨ¡£
ÔÚ IT ÔçÆÚ£¬³§ÉÌÓ²¼þºÍϵͳƽ̨µÄ²îÒ컯¹ý´ó£¬ÔÚ²»Í¬Ó²¼þºÍϵͳƽ̨½øÐÐÓ¦ÓõÄÎÞ·ìÇ¨ÒÆ¼¸ºõÊDz»¿ÉÏëÏóµÄ¡£Ëæ×Å
X86 ·þÎñÆ÷ÒÔ¼° vSphere µÈÐéÄ⻯¼¼ÊõµÄÆÕ¼°£¬²Ù×÷ϵͳ£¨°üÀ¨²Ù×÷ϵͳÉϵÄÓ¦Óã©¿ÉÒÔÔÚ²»Í¬
X86 ·þÎñÆ÷³§É̵ÄÓ²¼þƽ̨ÉÏÔÚÏßÎÞ·ìÇ¨ÒÆ¡£Ó²¼þ²îÒ컯²»¶ÏËõСÉõÖÁÏûʧ£¬Èí¼þµÄÖØÒªÐÔ²»¶ÏÌáÉý£¬IT
½çÕæÕý½øÈëÈí¼þ¶¨ÒåÒ»ÇеÄʱ´ú¡£ÔÚÕâ¸ö±³¾°Ï£¬ÒµÎñÌá³öÁ˸ü¸ßµÄÒªÇó£¬ÈçºÎ½«Ó¦ÓÃÔÚ²»Í¬²Ù×÷ϵͳ֮¼äʵÏÖÎÞ·ìÇ¨ÒÆ£¬½«¿ª·¢ºÍÉú²úͳһ£¬×öµ½¡°¹¹½¨Ò»´Î£¬µ½´¦ÔËÐС±¡£
ÈÝÆ÷¼¼ÊõµÄ¸ÅÄî×î³õ³öÏÖÔÚ 2000 Ä꣬µ±Ê±³ÆÎª FreeBSD jail£¬ÕâÖÖ¼¼Êõ¿É½« FreeBSD
ϵͳ·ÖÇøÎª¶à¸ö×Óϵͳ¡£
µ«Ö±µ½ Docker µÄ³öÏÖ£¨2008 Ä꣩£¬ÈÝÆ÷²ÅÕæÕý¾ß±¸Á˽ϺõĿɲÙ×÷ÐÔºÍʵÓÃÐÔ¡£ÒòΪ Docker
ÌṩÁËÈÝÆ÷µÄ¾µÏñ¹¹½¨¡¢´ò°üµÈ¼¼Êõ£¬Ê¹ÈÝÆ÷¾ß±¸ÁËÒ»´Î´ò°ü£¬µ½´¦ÔËÐеÄÄÜÁ¦¡£
¶ÔÓÚ¿Í»§¶øÑÔ£¬Docker Ö»ÄÜÔÚÒ»¸ö Linux ÉÏÔËÐУ¬ÊÇ¡°µ¥»ú°æ¡±£¬ºÜÄÑ·ûºÏÆóÒµ¶Ô¸ß¿ÉÓõÄÐèÇó¡£´ËÍ⣬docker
Ҳȱ·¦ºÍ³Ö¾Ã´æ´¢¡¢ÐéÄâÍøÂçÏà¹ØµÄ¹¦ÄÜ¡£
DevOps µÄ¼¼ÊõʵÏÖ 2£ºÈÝÆ÷µ÷¶Èƽ̨
2014 Äê Kubernetes µÄ³öÏÖ£¬µì¶¨Á˽ñÌìÈÝÆ÷µ÷¶Èƽ̨µÄÊÂʵ±ê×¼µÄ»ù´¡¡£
ÒòΪͨ¹ý Kubernetes£¬ÎÒÃDz»½öʵÏÖÁËÈÝÆ÷ÔÚ¶à¸ö¼ÆËã½ÚµãÉϵÄͳһµ÷¶È£¬»¹¿ÉÒÔ½«ÈÝÆ÷¶Ô½Ó³Ö¾Ã´æ´¢¡¢¶Ô½ÓÐéÄâÍøÂçµÈ¡£»»¾ä»°Ëµ£¬Kubernetes
ʹÈÝÆ÷¾ß±¸ÆóÒµ¼¶µÄ¹¦ÄÜ¡£
ͼ 3. Kubernetes ¼Ü¹¹

DevOps µÄ¼¼ÊõʵÏÖ 3£ºDevOps ¹¤¾ßÁ´
ÔÚÓÐÁËÈÝÆ÷ºÍ Kubernetes ÒÔºó£¬ÎÒÃÇ»¹ÐèÒªÏà¹ØµÄ DevOps ¹¤¾ßÁ´¡£
ĿǰÔÚ IT ½ç£¬DevOps Ïà¹ØµÄ¹¤¾ßºÜ¶à£¬ÆäÖдó¶àÊýÊÇ¿ªÔ´µÄ¹¤¾ß£¬ÈçÏÂͼ¡£
ͼ 4. DevOps ¹¤¾ßÁ´

ÔÚºóÃæµÄÎÄÕÂÖУ¬ÎÒÃÇ»áÑ¡Ôñ¼¸ÖÖ³£ÓÃµÄ DevOps ¹¤¾ß£¬È»ºó½øÐÐÊÔÑéÕ¹ÏÖ¡£
×ܽ᣺DevOps ÓëÈÝÆ÷ºÍ Kubernetes µÄ¹ØÏµ
PaaS¡¢DevOps µÄ¸ÅÄÔÚÈÝÆ÷ºÍ Kubernetes ÆÕ¼°Ö®Ç°¾Í´æÔÚÁË¡£¹ãÒåÉ쵀 PaaS¡¢DevOps
µÄ½¨É裬»á°üº¬£ºÈË¡¢Á÷³Ì¡¢¹¤¾ßµÈ¶à·½ÃæÄÚÈÝ¡£IT ³§ÉÌÌṩµÄ PaaS¡¢DevOps ÒÔÖ¸¹¤¾ß²ãÃæµÄÂäµØÎªÖ÷¡¢ÒÔÁ÷³Ì×ÉѯΪ¸¨¡£
ÔÚ Kubernetes ºÍÈÝÆ÷ÆÕ¼°Ö®Ç°£¬ÎÒÃÇͨ¹ýÐéÄâ»úÒ²¿ÉÒÔʵÏÖ PaaS¡¢CI/CD£¬Ö»ÊÇÏà¶ÔËٶȽÏÂý£¬Òò´ËÆÕ¼°ÐÔ²»¸ß£¨ÏëÏóÒ»ÏÂͨ¹ý
X86 ÐéÄ⻯À´ÊµÏÖÖмä¼þ¼¯Èºµ¯ÐÔÉìËõµÄЧÂÊ£©¡£¶øÕýÊÇÈÝÆ÷µÄ³öÏÖ£¬Îª PaaS¡¢DevOps ¹¤¾ß²ãÃæµÄÂ䵨Ìṩ·Ç³£ºÃµÄ³ÐÔØÆ½Ì¨£¬Ê¹µÃÕâÁ½ÄêÈÝÆ÷ÔÆ·çÉúË®Æð¡£Õâ¾ÍºÃ±È
4G£¨2014 Äê³öÏÖ£©ºÍ΢ÐÅ£¨2011 Äê³öÏÖ£©Ö®¼äµÄ¹ØÏµ£ºÔÚÊÖ»úÍøËÙ 3G ʱ´ú£¬Á÷Á¿°´ÕÕÕ×ÊշѵÄʱºò£¬£¨¼´Ê¹ÓУ©´ó¼Ò¶ÔÓÚ΢ÐÅÓïÒôÁÄÌ졢΢ÐÅÊÓÆµÒ²²»»áÌ«¸ÐÐËȤ¡£
ËùÒÔ˵£¬ Docker ʹÈÝÆ÷¾ß±¸Á˽ϺõĿɲÙ×÷ÐÔ¡¢¿ÉÒÆÖ²ÐÔ£¬Kubernetes ʹÈÝÆ÷¾ß±¸ÆóÒµ¼¶Ê¹ÓõÄÌõ¼þ¡£¶ø
IT ½çÖÚ¶à»ùÓÚ Kubernetes ºÍ Docker ÆóÒµ¼¶µÄÈÝÆ÷ƽ̨£¬ÓÖ³ÉΪÁË Devops
¹¤¾ßÂ䵨µÄÐÂÒ»´ú»ù´¡¼Ü¹¹¡£
DevOps ¹¤×÷Á÷չʾ
³£Óà DevOps ¹¤¾ß½éÉÜ
Kubernetes ¼¯Èº£º°üº¬ Docker ºÍ Kubernetes¡£
Gogs: ͨ¹ý Go ±àдµÄ±¾µØ´úÂë²Ö¿â£¬¹¦ÄÜÓë github ÀàËÆ¡£
Jenkins/Jenkins Slave Pods£º³ÖÐø¼¯³É¹¤¾ß¡£
Nexus :¹¤¼þ¹ÜÀíÆ÷£¬Äܹ»½â¾ö±¾µØ»º´æ¹¹½¨ÒÀÀµÏî¡£
SonarQube£º¿ªÔ´´úÂë·ÖÎö¹¤¾ß£¬Ëü¿ÉÒÔ·ÖÎö³£¼û±à³Ì´íÎóµÄÔ´´úÂë¡£
ÒÔÉ쵀 DevOps ¹¤¾ß£¬¶¼¿ÉÒÔÒÔÈÝÆ÷·½Ê½²¿Êðµ½ Kubernetes ¼¯ÈºÖС£ÔÚʵÑé»·¾³ÖУ¬ÓÐÒ»¸öÁ½¸ö½ÚµãµÄ
Kubernetes ¼¯Èº£¬ÓÃÓÚ½øÐÐʵÑéÕ¹ÏÖ¡£
ͼ 5. Kubernetes ¼¯Èº

ÔÚ Kubernetes ¼¯ÈºÖд´½¨Èý¸ö Namespace£ºcicd¡¢dev¡¢stage¡£ÆäÖÐ
cicd Namespace ´æ·ÅµÄÊÇ DevOps Ïà¹Ø¹¤¾ßÁ´¡£dev¡¢stage ÊÇÄ£Ä⿪·¢ºÍÉú²úÁ½¸ö»·¾³¡£
ͼ 6. Kubernetes ¼¯ÈºµÄ Namespaces

½ÓÏÂÀ´£¬ÎÒÃÇ¿´Ò»ÏÂÔÚ cicd Namespace Öв¿ÊðµÄ DevOps ¹¤¾ßÁ´£º
ͼ 7. Kubernetes ¼¯ÈºÖв¿ÊðµÄ DevOps ¹¤¾ß

ÔÚ¹¤¾ßÁ´²¿Êð³É¹¦ÒÔºó£¬ÎÒÃÇ·Ö±ðµÇ¼¹¤¾ßµÄ UI ½çÃæ½øÐв鿴¡£
ÎÒÃÇÊ×ÏȲ鿴´úÂë²Ö¿â Gogs ÖеÄÔ´´úÂ룺
ͼ 8. Gogs ÖеÄÔ´Âë

½ÓÏÂÀ´£¬ÎÒÃǵǼ Jenkins£¨ºóÐøµÄÖ÷Òª²Ù×÷½«»á»ùÓÚ Jenkins£©£º
ͼ 9. Jenkins ½çÃæ

Nexus ÓÃÓÚ´æ·Å¹¹½¨³É¹¦¡¢²¢¾¹ý Code Review µÄ war °ü£¬ÎÒÃDz鿴 Nexus
µÄ½çÃæ£º
ͼ 10. Nexus ½çÃæ

SonarQube ¸ºÔð Code review£º
ͼ 11. SonarQube ½çÃæ

Jenkins Pipeline ¹¤×÷Á÷·ÖÎö
Õû¸ö Devops µÄÁ÷³Ì£¬Í¨¹ý Jenkins µÄ Pipeline ´®½ÓÆðÀ´¡£ÔÚ Jenkins
ÖУ¬ÎÒÃÇ¿ÉÒÔͨ¹ý±àд Jenkins File£¬»òÕßͨ¹ý Jenkins ä¯ÀÀÆ÷Ò³ÃæµÄ²Ù×÷À´Íê³É Pipeline
µÄ¶¨ÖÆ¡£Á½ÕßµÄʵÏÖЧ¹ûÊÇÒ»ÑùµÄ£¬±¾ÎÄÒÔÊéд Jenkins File ·½Ê½Õ¹ÏÖ¡£Í¨¹ýÒ»¸ö Jenkins
File£¬´òͨÕû¸ö DevOps Á÷³Ì¡£
ÎÒÃDz鿴 Jenkins File µÄÄÚÈݲ¢½øÐнâÊÍ¡£
µÚÒ»²½£¬´Ó Gogs ÀȡԴ´úÂ룬Ȼºóµ÷Óà maven ½øÐдúÂë±àÒ룺
Çåµ¥ 1. Pipeline µÚÒ»½×¶Î
pipeline {
agent {
label 'maven'
}
stages {
stage('Build App') {
steps {
git branch: 'eap-7', url: 'http://gogs:3000/gogs/openshift-tasks.git'
script {
def pom = readMavenPom file: 'pom.xml'
version = pom.version
}
sh "${mvnCmd} install -DskipTests=true"
}
}
}
} |
µÚ¶þ²½£¬¹¹½¨³É¹¦ÒԺ󣬵÷Óà mvn ½øÐвâÊÔ¡£
Çåµ¥ 2. Pipeline µÚ¶þ½×¶Î
stage('Test')
{
steps {
sh "${mvnCmd} test"
step([$class: 'JUnitResultArchiver', testResults:
'**/target/surefire-reports/TEST-*.xml'])
}
} |
µÚÈý²½£¬µ÷Óà SonarQube ½øÐдúÂë review¡£
Çåµ¥ 3. Pipeline µÚÈý½×¶Î
stage('Code
Analysis') {
steps {
script {
sh "${mvnCmd} sonar:sonar -Dsonar.host.url=http://sonarqube:9000
-DskipTests=true"
}
}
} |
µÚËIJ½£¬½«²âÊԳɹ¦µÄ´úÂë´æµµµ½ Nexus:
Çåµ¥ 4. Pipeline µÚËĽ׶Î
stage('Archive
App') {
steps {
sh "${mvnCmd} deploy -DskipTests=true -P
nexus3"
}
} |
µÚÎå²½£¬Pipeline »á½«¹¹½¨³É¹¦µÄ war °ü£¬ÒÔ¶þ½øÖƵķ½Ê½×¢Èëµ½ JBoss EAP µÄ
docker image ÖС£
Çåµ¥ 5. Pipeline µÚÎå½×¶Î
stage('Build
Image') {
steps {
sh "rm -rf oc-build && mkdir -p oc-build/deployments"
sh "cp target/tasks.war oc-build/deployments/ROOT.war"
}
} |
½ÓÏÂÀ´£¬Pileline ÏȽ«Õâ¸ö docker image ²¿Êðµ½ dev »·¾³£¬È»ºóÒýÈëÉóÅú¹¤×÷Á÷£¬Åú×¼ºó²¿Êðµ½Éú²ú¡£
Çåµ¥ 6. Pipeline ÖеÄÉóÅúÁ÷
stage('Promote
to STAGE?') {
steps {
timeout(time:15, unit:'MINUTES') {
input message: "Promote to STAGE?",
ok: "Promote"
}
}
} |
DevOps ¹¤¾ßÁ´ÑÝʾ
Ê×ÏÈ£¬µÇ¼µ½ Jenkins ÉÏ£¬²é¿´ÒѾ´´½¨ºÃµÄ Pipeline¡£
ͼ 12. Jenkins µÄ Pipeline

µã»÷¡°¿ªÊ¼¹¹½¨¡±£¬´¥·¢¹¤×÷Á÷£¨¹¤×÷Á÷Ò²¿ÉÒÔͨ¹ýÌá½»´úÂë×Ô¶¯´¥·¢£©£º
ͼ 13. ´¥·¢¹¤×÷Á÷

Pipeline µÄµÚÒ»¸ö½×¶ÎÊÇ Build App¡£
ͼ 14. ¹¤×÷Á÷µÚÒ»¸ö½×¶Î

Build App ³É¹¦µÄ logs ÈçÏ£¬ÎÒÃÇ¿ÉÒÔ¿´µ½Éú³ÉÁË war °ü£º
Çåµ¥ 7. ¹¹½¨Ó¦Óóɹ¦µÄÈÕÖ¾
[INFO] Installing
/tmp/workspace /cicd-monolith-f138/cicd-monolith-f138-tasks -pipeline/target/tasks.war
to /home/jenkins/.m2/repository/org/jboss/quickstarts /eap/jboss-tasks-rs/7.0.0-SNAPSHOT/ jboss-tasks-rs-7.0.0-SNAPSHOT.war
[INFO] Installing /tmp/workspace/cicd-monolith-f138 /cicd-monolith-f138-tasks-pipeline/pom.xml
to /home/jenkins/.m2/repository/org/jboss/quickstarts /eap/jboss-tasks-rs /7.0.0-SNAPSHOT/jboss-tasks-rs-7.0.0-SNAPSHOT.pom
|
Pipeline ¼ÌÐøÖ´ÐУ¬ÔÚ Test ³É¹¦ÒԺ󣬿ªÊ¼½øÐÐ Code Analysis£º
ͼ 15. ¹¤×÷Á÷½×¶Î 2-3

Test ½×¶ÎÖ´Ðгɹ¦µÄ log£º
Çåµ¥ 8. ²âÊԳɹ¦µÄÈÕÖ¾
-----------------------------------------------------
T E S T S
-----------------------------------------------------
Running org.jboss.as.quickstarts.tasksrs.service. UserResourceTest
Tests run: 1, Failures: 0, Errors: 0, Skipped:
1, Time elapsed: 1.798 sec - in org.jboss.as.quickstarts.tasksrs.service. UserResourceTest
Running org.jboss.as.quickstarts.tasksrs.service. TaskResourceTest
Tests run: 3, Failures: 0, Errors: 0, Skipped:
0, Time elapsed: 0.604 sec - in org.jboss.as.quickstarts.tasksrs.service. TaskResourceTest
Results :
Tests run: 4, Failures: 0, Errors: 0, Skipped:
1 |
Code Analysis ½×¶ÎÖ´Ðгɹ¦µÄÈÕÖ¾£¬ÎÒÃÇ¿´µ½ÈÕÖ¾ÏÔʾ´úÂë·ÖÎö³É¹¦£¬²¢½¨Òéͨ¹ýä¯ÀÀÆ÷·ÃÎÊ
SonarQube£º
Çåµ¥ 9. ´úÂë·ÖÎö³É¹¦µÄÈÕÖ¾
[INFO] ANALYSIS
SUCCESSFUL, you can browse <a href=" http://sonarqube:9000/dashboard/index/org.jboss. quickstarts.eap:jboss-tasks-rs">http://sonarqube:9000/ dashboard/index/org.jboss.quickstarts.eap:jboss-tasks-rs</a>
[INFO] Note that you will be able to access the
updated dashboard once the server has processed
the submitted analysis report
[INFO] More about the report processing at <a
href="http://sonarqube:9000/api/ce/task?id=AWc_R_EGIPI_jn5vc3mt"> http://sonarqube:9000/api/ce/task?id=AWc_R_EGIPI_jn5vc3mt</a>
[INFO] Task total time: 18.918 s |
ÎÒÃǵǼ SonarQube£¬²é¿´½á¹û£º
ͼ 16. SonarQube Ö´Ðнá¹û


½ÓÏÂÀ´£¬Pilepine ½øÈëµ½ Create Image Builder ½×¶Î£¬Æä¹Ø¼üµÄ²½ÖèÊǽ«¹¹½¨³É¹¦µÄ
war °üÒÔ¶þ½øÖƵķ½Ê½×¢Èëµ½ docker image ÖУº
Çåµ¥ 10. ¹¹½¨¾µÏñµÄÈÕÖ¾
[cicd-monolith-f138-tasks-pipeline]
Running shell script
+ rm -rf oc-build
+ mkdir -p oc-build/deployments
[Pipeline] sh
[cicd-monolith-f138-tasks-pipeline] Running shell
script
+ cp target/tasks.war oc-build/deployments/ROOT.war |
Create Image Builder Ö´Ðгɹ¦ÒԺ󣬻áÉú³É°üº¬Ó¦ÓÃµÄ docker image¡£½ÓÏÂÀ´ÊÇ
Create Dev ºÍ Deploy Dev£¬¼´ÔÚ dev »·¾³²¿Êð°üº¬Ó¦ÓÃµÄ docker image¡£µ±
Deploy Dev ³É¹¦ÒԺ󣬻áÒýÈ빤×÷Á÷£¬ÌáʾÊÇ·ñÅú×¼½«Ó¦Óò¿Êðµ½ Stage£¬ÈçÏÂͼ£º
ͼ 17. ¹¤×÷Á÷ÉóÅúÁ÷³Ì

Ñ¡Ôñ Promote£¬Ó¦ÓûᲿÊðµ½ Stage£¬Pipeline Á÷³Ì×ßÍê¡£
ͼ 18. ¹¤×÷Á÷Ö´ÐÐÍê±Ï

×îºó£¬Í¨¹ýä¯ÀÀÆ÷·ÃÎʳɹ¦²¿Êðµ½ Dev/Stage Namespace ÖеÄÓ¦Óãº
ͼ 19. Ó¦Óà UI ·ÃÎÊ

ÖÁ´Ë£¬Äú¿ÉÒÔ¿´µ½Ó¦Ó÷ÃÎʽá¹û£¬ËµÃ÷ DevOps È«Á÷³ÌÒѾ´òͨ¡£
×ܽá
ͨ¹ý±¾ÎÄ£¬ÏàÐŶÁÕß¶Ô DevOps µÄ¸ÅÄîºÍ¹¤¾ßÁ´ÒѾÓÐÁË´óÖµÄÁ˽⡣Ҳ¶Ôͨ¹ý Kubernetes
¼¯ÈººÍÈÝÆ÷ʵÏÖ DevOps ÓÐÁËÒ»¶¨µÄÀí½â¡£ |