±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËKubeVela
µÄ±³¾°¡¢KubeVela ÊÇʲô¡¢KubeVela ÄÜΪÄã×öʲô¼°KubeVela
¶ÔÓÚ¡°³éÏó¡±µÄÉè¼ÆÓëʵÏÖ¡£
±¾ÎÄÀ´×ÔÓÚ°¢ÀïÔÆÔÆÆÜºÅ£¬ÓÉ»ðÁú¹ûLinda±à¼¡¢ÍƼö¡£ |
|
KubeVela µÄ±³¾°
KubeVela ÊÇÒ»¸ö»ùÓÚ Go ÓïÑÔ¿ª·¢µÄÔÆÔÉúƽ̨¼¶¿ªÔ´ÏîÄ¿£¬Õâ¸öÏîÄ¿ÊÇÈ¥Äê 11 ÔÂÖÐÑ®Õýʽ·¢²¼µÄ¡£ËäÈ»·¢²¼µ½ÏÖÔÚ²»×ãÁ½¸öÔÂʱ¼ä£¬µ«ÊÇ
KubeVela ×÷Ϊ"°¢Àï°Í°ÍÍ³Ò»ÔÆÔÉúÓ¦ÓÃÆ½Ì¨Äںˡ±±³ºóµÄºËÐÄÒÀÀµ£¬ÆäʵÒѾÔÚ°¢Àï¶à¸ö²úÆ·±³ºóÔËÐÐÁ˱Ƚϳ¤µÄÒ»¶Îʱ¼ä£¬ÎÒ±¾ÈËĿǰҲÔÚ´óÁ¿²ÎÓëÕâЩ²úÆ·ºÍÏîÄ¿µÄÄں˽¨É蹤×÷¡£
ÕâÌ×ÄÚºËϵͳµ®Éú×Ô 2019 ÄêÄêµ×°¢ÀïÔÆÁªºÏ΢Èí¹²Í¬ÍÆ³öµÄ Open Application Model£¨¼ò³ÆOAM£©Ä£ÐÍ»ùÓÚ
Kubernetes µÄʵÏÖ£¬ÔÚ²»¶ÏÑݽøºÍµü´úÖÐÈÚºÏÁË´óÁ¿À´×Ô¿ªÔ´ÉçÇø£¨ÓÈÆäÊÇ΢Èí¡¢×Ö½ÚÌø¶¯¡¢µÚËÄ·¶Ê½¡¢ÌÚѶºÍÂú°ï¼¯ÍŵÄÉçÇø²ÎÓëÕßÃÇ£©µÄ·´À¡Óë¹±Ï×£¬×îÖÕÔÚ
2020 Äê KubeCon ±±ÃÀ·å»áÉÏÒÔ ¡°KubeVela¡± µÄÃû×ÖÕýʽÓ뿪ԴÉçÇø¼ûÃæ¡£KubeVela
ÏîÄ¿ÔÚ¹ÙÐûºóµÃµ½ÁËÕû¸öÔÆÔÉúÉú̬µÄ³ÖÐø¹Ø×¢£¬ÔÚ·¢²¼ºóµÄµÚËÄÌì¾ÍµÇÉÏÁË Go ÓïÑԵĿªÔ´Ç÷ÊÆ°ñ°ñÊס£

ͼ 1 KubeVela µÄ GitHub Star ¿ìËÙÔö³¤
KubeVela ÊÇʲô£¿
Ò»ÑÔÒÔ±ÎÖ®£¬KubeVela ÊÇÒ»¸öÃæÏòƽ̨¹¹½¨Õߵġ¢¼òµ¥Ò×Óõ«Óָ߶ȿÉÀ©Õ¹µÄÔÆÔÉúƽ̨¹¹½¨ÒýÇæ¡£
¾ßÌåÀ´Ëµ£¬KubeVela µÄÄ¿±êÊÇÈÃÈÎºÎÆ½Ì¨ÍŶӶ¼Äܹ»ÒÔ Kubernetes ÔÉúµÄ·½Ê½£¬¿ìËÙ¡¢¸ßЧµÄ´òÔì³öÊʺϲ»Í¬ÒµÎñ³¡¾°µÄ¡¢Äܹ»Ö±ÃæÓû§µÄÔÆÔÉúƽ̨³öÀ´¡£±ÈÈ磺¹¹½¨Ó¦ÓÃ
PaaS¡¢Êý¾Ý¿â PaaS¡¢AI PaaS »òÕß³ÖÐø½»¸¶ÏµÍ³µÈµÈ¡£

ͼ 2 KubeVela ¡°¹Ø×¢µã·ÖÀ롱µÄ¹¤×÷Á÷
ÔÚÉè¼ÆÉÏ£¬KubeVela ¶Ôƽ̨ÍŶӱ©Â¶ÁËÁ½´óºËÐÄ API£¬°üÀ¨£º
ÄÜÁ¦Ä£°å£º¡°ÄÜÁ¦¡±ÔÚ KubeVela ÖУ¬Ö¸Äܹ»×é³ÉÒ»¸öÍêÕûÓ¦ÓõÄÔ×Ó»¯¹¦ÄÜ£¬±ÈÈç
StatefulSet ºÍ Ingress ¾ÍÊôÓÚÁ½ÖÖ²»Í¬µÄ¡°ÄÜÁ¦¡±¡£KubeVela ÔÊÐíÆ½Ì¨ÍŶÓͨ¹ý¶¨Òå¸÷ÖÖÄÜÁ¦¡°Ä£°å¡±µÄ·½Ê½£¬ÔÚ
Kubernetes ÖÐÔ¤Öø÷ÖÖ¸÷ÑùµÄÄÜÁ¦¡£
²¿Êð»·¾³Ä£°å£ºÓë¡°ÄÜÁ¦¡±ÀàËÆ£¬Ó¦ÓõIJ¿Êð»·¾³ÔÚ KubeVela
ÖÐͨ¹ý¡°»·¾³¡±Ä£°åÀ´½øÐÐÔ¤¶¨ÒåºÍ³õʼ»¯£¬±ÈÈç¡°²âÊÔ¼¯Èº¡±ºÍ¡°Éú²ú¼¯Èº¡±£¬¾ÍÊôÓÚÁ½ÖÖ¡°»·¾³¡±¡£
¶ø×÷Ϊƽ̨µÄÓû§£¬±ÈÈçÒµÎñÍŶӣ¬ËûÃÇÖ»ÐèҪͨ¹ýƽ̨ÍŶÓÌṩµÄ»·¾³Ä£°åÀ´¡°Ò»¼ü¡±³õʼ»¯×Ô¼ºÔ¤ÆÚµÄ²¿Êð¼¯Èº£¬È»ºó°Ñ×Ô¼ºÐèÒªµÄÄÜÁ¦Ä£°å¡°×é×°¡±³ÉÒ»¸öÍêÕûµÄÓ¦Ó㬾ͿÉÒÔÖ±½ÓÏòÈκÎ
Kubernetes ¼¯Èº½øÐÐÓ¦Óý»¸¶ºÍÔËάÁË¡£
ÓÉÓÚÉÏÊöÕâЩÄÜÁ¦ºÍ»·¾³£¬¶¼Í¨¹ý¡°Ä£°å¡±µÄ·½Ê½½øÐÐÁ˳éÏó£¬ËùÒÔ¶ÔÓÚÒµÎñÍŶÓÀ´Ëµ£¬ËüÃDz¢²»ÐèҪѧϰÍêÕûµÄ
Kubernetes ¸ÅÄîÓëϸ½Ú£¬Ö»ÐèÒªÁ˽âÉÏÊöÄ£°å±©Â¶³öÀ´µÄ²ÎÊý£¬¾Í¿ÉÒÔÎÞ·ìµÄʹÓà Kubernetes
À´Íê³É×Ô¼ºÒª×öµÄÊÂÇé¡£¶ø¾ßÌåͨ¹ýÄ£°å±©Â¶³öÄÄЩ¿ÉÅäÖÃÏî¡¢±³ºóµÄÄ£°åÔõôäÖȾ¡¢äÖȾ³ÉʲôÑù Kubernetes
¶ÔÏó£¬ÔòÍêȫȫÔÚÆ½Ì¨ÍŶӵÄÕÆ¿ØÖ®ÖУ¬²¢ÇÒ¿ÉÒÔËæÊ±µ÷½ÚºÍÐ޸ġ£
ÉÏÊö¡°Æ½Ì¨ÍŶÓÌṩÄÜÁ¦Ä£°å¡±½áºÏ¡°ÒµÎñÍŶÓ×é×°Ä£°åÉùÃ÷Ó¦ÓᱵŤ×÷Á÷£¬Ò²ÕýÊǰ¢ÀïºÍ΢Èí¹²Í¬·¢²¼µÄ
OAM ÏîÄ¿ÌᳫµÄ¡°¹Ø×¢µã·ÖÀ롱˼ÏëµÄ¼¯ÖÐÌåÏÖ¡£ÔÚ¾ßÌåµÄÄ£°åÖ§³ÖÉÏ£¬KubeVela µÚÒ»ÆÚÖ§³ÖµÄÊÇ
Google ¿ªÔ´µÄ CUELang Ä£°åÓïÑÔ£¬µÚ¶þÆÚÔò»áÖ§³Ö Helm Chart °üÖ±½Ó×÷ΪÄÜÁ¦Ä£°å¡£
KubeVela ÄÜΪÄã×öʲô£¿
ÔÚÁ˽âÁË KubeVela ÊǸöʲôÏîÄ¿ÒÔºó£¬ÎÒÃÇÔÙÀ´»Ø´ðµÚ¶þ¸ö´ó¼ÒÒ»Ö±¶¼ºÜ¹ØÐĵÄÎÊÌ⣺
×÷Ϊһ¸öƽ̨¹¹½¨Õߣ¬KubeVela Äܹ»°ïÖúÄã×öʲô?
1. ¿ìËÙ¹¹½¨³éÏó
¹¹½¨¡°³éÏó¡±£¬ÊÇÈκÎÒ»¸öÔÆÔÉúƽ̨µÄ×î»ù´¡¡¢Ò²±ØÈ»»áÌṩµÄ¹¦ÄÜ¡£
ÎÒÃÇÖªµÀ£¬Kubernetes ±©Â¶³öÀ´µÄÊÇÒ»Ì×ÉùÃ÷ʽ API£¬¶øËùν³éÏ󣬯äʵ¾ÍÊÇÒ»¸öƽ̨ÔÚÕâЩÉùÃ÷ʽ
API µÄ»ù´¡ÉÏ£¬ÎªÓû§±©Â¶³öÀ´µÄ¿É²Ù×÷ÏîºÍ¿ÉÅäÖÃÏî¡£×÷Ϊƽ̨ÍŶӣ¬ÎÒÃÇÖ®ËùÒÔÒªÌṩ¡°³éÏó¡±£¬Æä×îÖÕÄ¿µÄ¶¼ÊÇΪÁ˼ò»¯Óû§µÄʹÓÃÐÄÖÇ£¬ÈÃÒµÎñÍŶÓÖ»¹Ø×¢ËûÃǹØÐĵÄÊÂÇ飬±ÜÃâÒýÈë´óÁ¿ÓëÒµÎñÎÞ¹ØµÄÆ½Ì¨²ãϸ½ÚÈÃÓû§¡°Íû¶øÈ´²½¡±¡£¿ÉÒÔ˵£¬Ìṩ¡°³éÏó¡±£¬ÊÇÈκÎÒ»¸öƽ̨ÍŶÓÂ䵨
Kubernetes µÈϵͳ¼¶¿ªÔ´ÏîÄ¿µÄµÚÒ»²½¡£
Òµ½ç×î³£¼ûµÄ³éÏó·½Ê½£¬ÊǸøÓû§Ìṩһ¸öͼÐνçÃæÀ´½øÐвÙ×÷£¨±ÈÈç Console »òÕß Dashboard£©£¬ÕâЩͼÐνçÃæµÄ¹²Í¬µã£¬¾ÍÊǽöÔÊÐíÓû§ÌîÐ´Ä³Ð©ÌØ¶¨µÄ×ֶβÎÊý£¬´Ó¶øÊµÏÖ¼ò»¯Óû§ÐÄÖǵÄÄ¿µÄ£¬±ÈÈçÏÂͼËùʾµÄij¿ªÔ´
K8s PaaS ÏîÄ¿µÄ Console£º

ͼ 3 ij¿ªÔ´ K8s PaaS ÏîÄ¿µÄ Console
»¹ÓÐһЩÏîÄ¿£¨±ÈÈç Racher Rio£©Ñ¡Ôñ¸øÓû§Ìṩһ¸öÃüÁîÐй¤¾ß£¬ÆäʵËüµÄ×÷ÓøúͼÐνçÃæÍêÈ«ÀàËÆ£¬Ö»²»¹ýÔÊÐíÌîдµÄ²ÎÊý±ä³ÉÁË
CLI µÄ²ÎÊý¶øÒÑ¡£
µ±È»£¬¶ÔÓÚһЩ¼¼Êõˮλ¸ü¸ßµÄÍŶӣ¬ËûÃÇ»á»ùÓÚ Kubernetes ÔÙ¿ª·¢ÉϲãµÄ CRD + Operator
À´×÷Ϊ¡°³éÏ󡱡£±ÈÈç Knative Æäʵ¾ÍÊÇÒ»ÖÖÃæÏò Serverless ³¡¾°µÄ³éÏó£¬Pinterest
¹«Ë¾ÔòÓÐ×Ô¼ºµÄ Application CRD ³éÏóµÈ¡£
ÄÇô£¬×÷Ϊƽ̨ÍŶӣ¬ÎÒÃÇÓÖÊÇÔõôÀ´¾ö¶¨¸øÓû§±©Â¶ÄÄЩ¿ÉÅäÖòÎÊýÄØ£¿Õâ¾ÍÉæ¼°µ½ÁË¡°³éÏó¡±µÄÈýÖÖ»ù´¡Ä£Ê½£¨¸ü¸´ÔÓµÄÇé¿ö¶¼ÊǶÔÕâÈýÖÖģʽµÄ½øÒ»²½×éºÏ£©£º
×éºÏ³éÏó£¬ÕâÖÖģʽ³£¼ûÓÚÎÒÃǰÑ2¸öÔ×ÓÄÜÁ¦×éºÏ³ÉΪһ¸öÄÜÁ¦Ìṩ£¬±ÈÈçÎÒÃÇÔÚʵ¼Ê¿ª·¢
Console ʱ£¬¾³£»á°Ñ K8s Deployment ºÍ Service ½øÐС°×éºÏ¡±£¬±©Â¶³öÒ»¸ö
Web Service µÄ¸ÅÄîÀ´ÈÃÓû§¿ÉÒÔÔÚÒ»¸ö±íµ¥Àïͬʱ¶¨ÒåÈÝÆ÷¾µÏñºÍ±©Â¶¶Ë¿Ú¡£
²ð·Ö³éÏó£¬ÕâÖÖģʽ³£¼ûÓÚÎÒÃÇÏ£ÍûÔÚʹÓÃÁ÷³ÌÉϰÑÒ»¸ö¶ÔÏóÉϵÄ×ֶηֿª³É¼¸¸ö±íµ¥À´½øÐзֲ½ÖèÌîд£¬´Ó¶ø½âñÊðʱÓëÔËάʱµÄÅäÖᣱÈÈçÒ»¸ö
Pod ÀïÃæµÄ¶à¸öÈÝÆ÷£¬ ÎÒÏ£ÍûÔÚµÚÒ»¸ö±íµ¥ÀïÈÃÓû§ÌîдҵÎñÈÝÆ÷£¬ÔÚÁíÒ»¸ö±íµ¥ÈÃÔËάÌîд Sidecar
ÈÝÆ÷¡£ÔÙ±ÈÈç ArgoRollout Õâ¸ö¶ÔÏó£¬ÎÒ»áÏ£ÍûÒ»¸ö±íµ¥ÈÃÓû§ÌîдÈÝÆ÷¾µÏñ£¬ÁíÒ»¸ö±íµ¥ÈÃÔËάÌîд»Ò¶È²ßÂÔ¡£
ת»»³éÏó£¬ÕâÖÖģʽͨ³£ÓÃÓڸĸöÃû×Ö£¬»òÕß˵ȥµôһЩÎ޹صĸÅÄ±ÈÈç
Knative Revision ¸ú Deployment ±¾ÖÊÉÏÊÇÒ»Ò»¶ÔÓ¦µÄ£¬µ«ÊÇÀïÃæÀàËÆ LabelSelector
ÕâÖÖÓû§²»ÐèÒª¹ØÐĵÄ×Ö¶ÎÔÚ Knative ¾Í»áÖ±½ÓÈ¥µôÁË¡£

ͼ 4 ³£¼û³éÏóģʽ
ÉÏÊö¼¸ÖÖ³éÏóµÄģʽ£¬ÔÚÒµ½çµÄºÜ¶àƽ̨¼¶ÏîÄ¿ºÍ²úÆ·Öж¼ÓÐÌåÏÖ¡£µ«ÁíÒ»·½Ã棬ÈçºÎÕýÈ·µÄÉè¼Æ³éÏó£¬ÒÔ¼°ÈçºÎÈ·±£³éÏóÄܹ»Âú×ãÒµÎñ·½Óû§µÄʹÓÃÐèÇóºÍϰ¹ß£¬ÆäʵÊÇÒ»¸ö·Ç³£¾ß±¸ÌôÕ½ÐÔµÄÎÊÌâ¡£ÕâÀïµÄ¹Ø¼üµãÔÚÓÚ£¬ÎÞÂÛÊÇͼÐλ¯½çÃæ£¬»¹ÊÇ
CRD Operator£¬ÕâЩ¡°³éÏó¡±Ò»µ©ÉÏÏߣ¬¶ÔËüµÄÐ޸ľͷdz£À§ÄÑ¡£¿ÉÊÇÁíÒ»·½Ã棬ҵÎñ·½Óû§µÄÐèÇó£¬ÓÖ¼¸ºõ²»¿ÉÄÜÊÇÒ»³É²»±äµÄ£¨Êµ¼ÊÇé¿öÉõÖÁÊÇ¡°Ò»ÌìÒ»¸öÑù¡±£©¡£
KubeVela ¶ÔÓÚ¡°³éÏó¡±µÄÉè¼ÆÓëʵÏÖ
×÷Ϊ°¢Àï°Í°ÍµÄƽ̨ÍŶӣ¬ÎÒÃÇÔÚ½øÐдó¹æÄ£ÔÆÔÉúÓ¦Óûù´¡ÉèÊ©µÄʵ¼ùÖУ¬Í¬ÑùÒ²Óöµ½ÁËÈçºÎÉè¼Æ¡°³éÏó¡±µÄÄÑÌâÓëÌôÕ½¡£¾¹ý´óÁ¿µÄ³¢ÊÔÓë×ܽᣬÎÒÃÇ×îÖÕºÍÑз¢Ð§ÄÜÍŶÓÒ»ÆðÑ¡ÔñÁË
GitOps + IaC£¨Infrastructure as Code£©µÄ¼¼Êõ×éºÏÀ´½â¾öÕâ¸öÎÊÌ⣨¾ßÌå´ó¼Ò¿ÉÒÔ¿´ÕâÆªÎÄÕ£º¡¶ÔÆÔÉúʱ´ú£¬Ó¦Óüܹ¹½«ÈçºÎÑݽø£¿¡·£©¡£
ÆäÖУ¬GitOps ¸ü¶àÊǶԽ»¸¶Á÷Ë®ÏߵĴ´Ð£¬¶ø IaC µÄ´æÔÚ£¬¾ÍÊÇΪÁ˽â¾ö¡°³éÏó¡±Õâ¸öÎÊÌâ¡£¾ßÌåÀ´Ëµ£¬IaC
µÄÇ¿´óÖ®´¦ÔÚÓÚ£¬Ëü¶Ô¡°³éÏ󡱵͍ÒåÊÇͨ¹ý¡°Ä£°å¡±À´±í´ïµÄ¡£ÕâÒâζ×ÅÒ»¸ö¡°³éÏó¡±±³ºó£¬²¢²»ÐèÒª CRD
Operator ÕâÑù¸´ÔӵķþÎñÆ÷¶Ë±à³Ì¹¤×÷£¬×÷Ϊƽ̨ÍŶÓÎÒÃÇÖ»ÐèÒªÌá½»Ò»¸öÄ£°å£¬Óû§¾Í¡°×Ô¶¯¡±ÓÐÁ˳éÏóºóµÄ×ֶΣ»¶øÈç¹ûÒªÐÞ¸ÄÕâЩ³éÏó×ֶΣ¬ÎÒÃÇÖ»ÐèÒª½«¶ÔӦģ°å¸üУ¬Óû§ÄDZߵijéÏóÒ²¾Í¡°×Ô¶¯¡±¸Ä±äÁË¡£ÕâÖÖ³éÏó»úÖÆµÄµ÷ÕûºÍ¸üУ¬²»ÐèÒªÈκÎÖØÐ±àÒëºÍÉÏÏߵĻ·½Ú£¬ËùÒÔÎÒÃǰÑËüÒ²³ÆÎª¡°¿Í»§¶Ë³éÏ󡱡£

ͼ 5 Óû§¡¢³éÏó¡¢Ä£°åºÍÔʼ K8s API Ö®¼äµÄ¹ØÏµ
ÔÚ¾ßÌåµÄʵÏÖÉÏ£¬°¢Àï°Í°ÍÊÇͨ¹ýCUELang Õâ¸ö Google ¿ª·¢µÄÄ£°åÓïÑÔÀ´¶¨Òå³éÏóÄ£°åµÄ£¬ÕâÒ²ÊÇΪºÎ
KubeVela µÚÒ»ÆÚÏÈ¿ªÔ´ÁË»ùÓÚ CUE µÄ³éÏó»úÖÆ¡£ÔÚ¾ßÌåʹÓÃÉÏ£¬Æ½Ì¨ÍŶÓÖ»ÐèÒª½« CUE Ä£°å°´ÕÕ
OAM ¹æ·¶£¨¼´£ºWorkloadDefinition ºÍ TraitDefinition ¶ÔÏó£©×¢²á£¨kubectl
apply£©µ½ Kubernetes ¼¯Èºµ±ÖУ¬ÒµÎñÓû§¾Í¿ÉÒÔÁ¢¿ÌʹÓÃÕâ¸ö³éÏ󣨾ßÌåµÄʹÓ÷½Ê½ÎÒÃǺóÃæ»áÏêϸ˵Ã÷£©¡£
ÁíÒ»·½Ã棬CUE Ö®ËùÒÔÊܵ½ Google ºÍ°¢ÀïµÄÇàíù£¬»¹ÔÚÓÚËü±È½ÏÍêÉÆµÄ³éÏó²ãʵÏÖÄÜÁ¦¡£±ÈÈçÇ°ÃæÎÒÃÇ×ܽáÁ˳éÏóµÄÈýÖÖģʽ£¬ÆäÖÐ
¡°×ª»»³éÏ󡱺͡°×éºÏ³éÏó¡±ÔÚÄ£°åäÖȾµÄʱºòºÜÈÝÒ××ö£¬Î޷ǾÍÊÇÄ£°åäÖȾµÄʱºò»»¸ö×Ö¶ÎÃû³Æ£¬Éú³ÉµÄÄÚÈݱä³É¶à¸ö¶ÔÏó¶øÒÑ¡£µ«ÊDzð·Ö³éÏóÆäʵÊÇÓкܴóÄѶȵģ¬ÕâÉæ¼°µ½²ð·ÖºóÄÜÁ¦µÄ¶ÀÁ¢ÔËÐÐÒÔ¼°×îÖÕÁ½¸öÄÜÁ¦ÓÖÖØÐÂ×éºÏµ½Ò»Æð£¨patch-merge£©µÄ¹ý³Ì¡£
¶ø½èÖú KubeVela£¬Õâ¸ö²ð·Ö¾Í±È½Ï¼òµ¥ÁË¡£ÒÔÇ°ÃæÌáµ½½âñîÒµÎñÈÝÆ÷Óë Sidecar ÈÝÆ÷µÄ¶¨ÒåÁ÷³ÌΪÀý£¬ÎÒÃÇÏ£Íû°Ñ¡°¶¨ÒåÒµÎñÈÝÆ÷¡±ºÍ¡°¶¨Òå
Sidecar ÈÝÆ÷¡±ÔÚÓû§²à²ðµ½Á½¸ö²»Í¬µÄ±íµ¥ÉÏÈ¥¡£ÔÚ¾ßÌåÖ´ÐÐÉÏ£¬Æ½Ì¨ÍŶÓÖ»ÐèҪע²áÒ»¸ö WorkloadDefinition
¶ÔÏó£¨Ãû½Ð worker£©£¬ÀïÃæÐ¯´øÒµÎñÈÝÆ÷µÄ Deployment Ä£°å£¬È»ºóÔÙ×¢²áÒ»¸ö TraitDefinition
¶ÔÏó£¨Ãû½Ð sidecar£©£¬ÀïÃæÖ»Ð¯´ø Sidecar ÈÝÆ÷µÄÄ£°å£¬ÄÇô KubeVela ¾Í»á¶ÔÓû§²à±©Â¶³ö
worker ºÍ sidecar Á½Ì×ÍêÈ«¶ÀÁ¢µÄ¿ÉÅäÖÃÏʹµÃÓû§¿ÉÒÔÔÚ²¿ÊðʱֻÐèÒªÌîд worker
ÖеÄÒµÎñÈÝÆ÷²ÎÊý£¬ÔËάÔò¿ÉÒÔÔÚºóÐøµÄÔËάʱ¶ÀÁ¢Ìîд sidecar µÄÅäÖòÎÊý£¬¶øÍêÈ«²»ÐèÒª¶ÔÓû§µÄ
worker ²¿·Ö½øÐÐÈκÎÐ޸ġ£

ͼ 6 KubeVela ¶Ô Kubernetes API ½øÐС°²ð·Ö¡±µÄÀý×Ó
µ±È»£¬³ýÁË CUE Ö®Í⣬ÉÏÊö³éÏó»úÖÆÒ²¿ÉÒÔͨ¹ý Helm À´ÊµÏÖ£¬²¢ÇÒͬ GitOps Á÷Ë®ÏßÎ޷켯³É¡£Õâ¸ö¹¦ÄÜ»á×÷Ϊ
KubeVela ÏÂÒ»¸öÖØÒªÌØÐÔ·¢²¼£¬½ìʱÎÒÃÇ»á·ÖÏí»ùÓÚ KubeVela ¹¹½¨³ÖÐø½»¸¶ÏµÍ³µÄ°¸ÀýÓë×î¼Ñʵ¼ù¡£
2. ¿ìËÙ¹¹½¨Óû§Ê¹ÓýçÃæ
ÔÚÓÐÁËÉÏÊö¡°³éÏó¡±Ö®ºó£¬×÷Ϊƽ̨µÄ×îÖÕÓû§£¬ÒµÎñÍŶӾͿÉÒÔͨ¹ýijÖÖ·½Ê½Ê¹ÓÃÕâЩ³éÏóÀ´½»¸¶ºÍ¹ÜÀíÓ¦ÓÃÁË¡£ÔÚÕâÒ»²ã£¬KubeVela
²»»á×öÈκÎÔ¼Êø£¬Ïà·´£¬ËüµÄÄ¿±êÊÇÈóéÏóÄܹ»±»Ö±½Ó͸³öÔÚÓû§µÄʹÓýçÃæÉÏ£¬ÕâÑù£¬µ±Æ½Ì¨ÍŶӶÔÕâЩ³éÏó½øÐÐÁ˵÷ÕûÖ®ºó£¬ÒµÎñÓû§¾Í¿ÉÒÔÁ¢¼´Ê¹Óõ½×îеijéÏ󣬲»ÐèÒª¶Ôϵͳ×öÈκθüлòÕßÉý¼¶¡£
ÔÚ¾ßÌåÖ´ÐÐÉÏ£¬KubeVela »á¸øÉÏÊö³éÏó×Ô¶¯Éú³É JSON schema£¬Õâ¸ö JSON schema
µÄÄÚÈÝ£¬¾ÍÊǸóéÏóÔÊÐíÓû§ÌîдµÄ²ÎÊýÁбíºÍÀàÐÍ¡£ËùÒÔÎÞÂÛÊÇͼÐνçÃæ£¬»¹ÊÇÆäËûÓû§½çÃæ£¬¾Í¿ÉÒÔÖ±½ÓʹÓÃÕâ¸ö
JSON schema äÖȾ³öÓû§±íµ¥£¬ÉõÖÁÉú³ÉʹÓÃÎĵµ¡£
±ÈÈçÇ°Ãæ½âñî Sidecar ÈÝÆ÷¶¨ÒåµÄÀý×Ó£¬KubeVela ¾Í»áΪÓû§±©Â¶³öÁ½·Ý JSON schema£ºÒ»¸öÓÃÀ´¶¨ÒåÒµÎñÈÝÆ÷µÄ²ÎÊýÁÐ±í£¬Ò»¸öÓÃÀ´
Sidecar ÈÝÆ÷µÄ²ÎÊýÁÐ±í£¬Ç°¶Ë¾Í¿ÉÒÔäÖȾ³ÉÁ½¸ö¶ÀÁ¢µÄ±íµ¥À´¹©Óû§Ìîд¡£
ÕýÊÇÉÏÊö IaC ³éÏó + ×Ô¶¯Éú³É Schema µÄ»úÖÆ£¬ÈûùÓÚ KubeVela ¹¹½¨ÃæÏòÓû§µÄʹÓýçÃæ²»½ö±äµÃ·Ç³£¼òµ¥£¬¶øÇÒ»¹¸ß¶È¿ÉÀ©Õ¹£ºÕâЩ³éÏ󱳺óµÄÄ£°åÖ»Òª±»Æ½Ì¨¹ÜÀíÔ±Ð޸ģ¬¾Í»áÁ¢¿ÌÌåÏÖÔÚÓû§µÄͼÐνçÃæ±íµ¥ÉÏ£¬¸ù±¾²»ÐèÒª½øÐÐϵͳÉý¼¶ºÍÖØÐÂÉÏÏß¡£
ÔÚ KubeVela ÖУ¬ËüÄÚÖÃÁËÒ»¸ö¼ò»¯°æµÄͼÐνçÃæ£¬½Ð×ö Appfile£¬ËüÆäʵ¾ÍÊǰÑÉÏÊö³éÏóµÄ
schema ÒÔ YAML µÄ·½Ê½Õ¹Ê¾Á˳öÀ´£¬´Ó¶øÔÊÐíÓû§½øÐÐÐ޸ĺÍÅäÖã¬ÔÚÏÂÃæµÄÀý×ÓÖУ¬ÎÒÃÇ¿ÉÒÔÐÎÏóµÄ¿´µ½Ã¿Ò»¸ö¡°ÄÜÁ¦³éÏó¡±£¨route£¬autoscaler
µÈµÈ£©ÔÚ Appfile ÈçºÎÌåÏÖΪһ¸ö¸ö¿ÉÅäÖÃÏîµÄ¡£

ͼ 7 ÔÚ Appfile ʹÓà KubeVela ÖеijéÏó

ͼ 8 ʹÓà vela traits ²é¿´ÒѾע²áµÄÄÜÁ¦

ͼ 9 ʹÓà vela show ²é¿´ÄÜÁ¦µÄʹÓÃÎĵµ£¨×Ô¶¯Éú³É£©
Ŀǰ£¬Appfile ÊÇ KubeVela ÄÚÖõÄʹÓá°³éÏó¡±µÄÖ÷ÒªÓû§½çÃæ¡£Óë´Ëͬʱ£¬Ïàͬ»úÖÆµÄ
Dashboard ºÍRestful API Ôò¼Æ»®ÔÚ 2021 Q2 ÔÚ KubeVela Öз¢²¼³öÀ´£¬´Ó¶øÈÃÓû§Í¨¹ýͼÐνçÃæºÍ
API µÄ·½Ê½À´¶¨ÒåºÍʹÓÃÕâÌ׳éÏó»úÖÆ¡£
ÖµµÃÒ»ÌáµÄÊÇ£¬×÷Ϊ Kubernetes ÔÉúµÄƽ̨¹¹½¨ÒýÇæ£¬KubeVela µÄÉÏÊö³éÏó»úÖÆºÍ Appfile
±¾Éí£¬È«²¿¶¼ÒÔÉùÃ÷ʽ API µÄ·½Ê½ÊµÏÖÔÚ Kubernetes µ±ÖУ¬ÆäÖÐ Appfile ¶ÔÓ¦µÄ
CRD ¾Í½Ð×ö Application ¶ÔÏó¡£
ËùÒÔ×÷Ϊƽ̨ÍŶӣ¬ËûÃÇͨ¹ý Definition CRD À´×¢²á³éÏóÄ£°å£¬×÷Ϊƽ̨µÄÓû§£¬ËûÃÇʵ¼ÊÉÏÔòÊÇͨ¹ýÕâ¸ö
Application CRD À´Ê¹ÓóéÏóÄ£°å£¬ÕûÌ×»úÖÆÍêÈ«ÒÔ Kubernetes ²å¼þµÄ·½Ê½ÔËÐУ¬ÌṩÁË×îÔÉúµÄ±»¼¯³ÉºÍ¿ÉÀ©Õ¹ÄÜÁ¦¡£
3. ½èÖú Terraform ͳһ¶¨ÒåºÍ¹ÜÀíÔÆ×ÊÔ´
¶øÓÐÁË Definition + Application ÕâÌ×Ìåϵ£¨ÕâÒ²ÕýÊÇ OAM ¹æ·¶µÄºËÐÄÄÚÈÝ£©Ö®ºó£¬KubeVela
¾Í¿ÉÒÔÔÚÒ»Ì×ͳһµÄʹÓÃÌåÑéºÍ API Ï£¬¼¯³É¸ü¶àµÄÄÜÁ¦Ìṩ·½£¬±ÈÈ磺Terraform¡£
Terraform ÊÇÒµÄÚÖªÃûµÄ´´½¨ÔÆ×ÊÔ´µÄ¹¤¾ß£¬Ëü·á¸»µÄÉú̬¼¸ºõ°üº¬ÁËËùÓÐÖ÷Á÷ÔÆ³§É̵Ĵ󲿷ÖÔÆ×ÊÔ´£¬ÊǶÔ
Kubernetes ÔÆ×ÊÔ´¹ÜÀíÄÜÁ¦²»×ã×îºÃµÄ²¹³ä¡£ ÔÚ KubeVela ÖÐʹÓà Terraform
¶¨ÒåºÍÀÆðÔÆ×ÊÔ´·Ç³£¼òµ¥£¬ÈçÏÂͼËùʾ£º

ͼ 10 KubeVela ʹÓà Terraform ÀÆðÔÆ×ÊÔ´
1£©Æ½Ì¨ÍŶӣº×¢²áÔÆ×ÊÔ´Ä£°åºÍ³éÏó
ƽ̨ÍŶӵŤ×÷ÊǶ¨ÒåÒ»¸öÃûΪ"aliyun-rds"µÄ WorkloadDefinition
¶ÔÏ󣬲¢ÇÒÔÚÀïÃæ¶¨ÒåºÃ Terraform °¢ÀïÔÆ RDS ÔÆ×ÊÔ´µÄÄ£°å¡£ÔÚÉÏÊöÀý×ÓÖÐÎÒÃÇͬÑùÊÇͨ¹ý
CUE À´±àдµÄ Terraform ÅäÖ㬠ÕâÊÇÒòΪ Terraform ÔÆ×ÊÔ´±¾ÉíÖ§³ÖʹÓà JSON
¸ñʽÃèÊö£¬¶ø CUE ÓÖÊÇ JSON µÄ³¬¼¯£¬ËùÒÔ¿ÉÒÔ×ÔÈ»µÄʹÓà Terraform ËùÓеÄÄÜÁ¦¡£
µ±È»£¬ÁíÒ»·½ÃæÎÒÃÇÒ²Ôڼƻ®Ö§³Ö Terraform µÄ HCL Óï·¨À´×÷Ϊ KubeVela µÄÁíÒ»ÖÖÄ£°åÓïÑÔ¡£ÔÚ
CUE Ä£°åÖÐÎÒÃÇÒýÓÃÁ˰¢ÀïÔÆµÄ RDS ¶¨Ò壬²¢³éÏó³É user¡¢passwordµÈÉÙÁ¿Óû§×ֶΣ¨parameter£©¡£
2£©Óû§£º¶¨ÒåºÍʹÓÃÔÆ×ÊÔ´
ÕâÑù£¬Óû§Ö»ÐèÒªÔÚ Appfile ÖУ¬Ìîдһ¸öÐ嵀 Service£¬ÃüÃûΪ sample-db
¶øÆäÀàÐ;ÍÊÇÎÒÃÇÉÏÃæ¶¨ÒåµÄ aliyun-rds£¬¾Í¿ÉÒÔÔÚÕâ¸ö²¿·Ö¶¨ÒåÄ£°åÖÐÌṩµÄ user£¬password
µÈ²ÎÊý¡£
³ý´ËÖ®Í⣬Óû§»¹¿ÉÒÔÔÚÉÏÃæµÄ express-server Õâ¸öÒµÎñÓ¦ÓÃÖж¨ÒåÊý¾Ý°ó¶¨£¬ÌîдÃûΪ
sample-db µÄÅäÖü°ÆäÓ³ÉäµÄ»·¾³±äÁ¿Ãû³Æ¡£
×îºó£¬Óû§Ö»ÐèÒªÒ»¾ä vela up ÃüÁKubeVela ¾Í»áÀÆðÒµÎñÈÝÆ÷£¬È»ºó×Ô¶¯°Ñ Terraform
´´½¨µÄ°¢ÀïÔÆRDS·µ»ØµÄÁ´½ÓÐÅÏ¢´«µÝµ½ÒµÎñµÄÈÝÆ÷ÖУ¬ÎÒÃÇ¿ÉÒÔÔÚ×îºóÒ»²¿·Ö¿´µ½Õâ¸öÓ¦ÓÃÒѾ³É¹¦Æô¶¯£¬²¢»ñµÃÁËÊý¾Ý¿âµÄÁ¬½ÓÐÅÏ¢¡£µ±È»£¬Õâ¸öÁ÷³ÌÖеÄÊý¾Ý´«µÝºÍ±àÅŹ¦ÄÜ£¬Ò²ÊÇ
KubeVela ÄÚÖõĺËÐÄÄÜÁ¦¡£
×ܽá
×÷Ϊ Kubernetes ÉϵÚÒ»¸öÔÆÔÉúƽ̨¹¹½¨ÒýÇæÒÔ¼° OAM Ä£Ð͵ÄÍêÕûʵÏÖ£¬KubeVela
Ϊƽ̨¹¹½¨ÕßÌṩµÄÄÜÁ¦Ô¶²»Ö¹ÕâЩ£¬±ÈÈçºóÐø¼´½«¿ªÔ´µÄͳһӦÓûҶȿò¼Ü¡¢¶à¼¯Èº¶à»·¾³µÄ½»¸¶×é¼þ¡¢CRD
Controller µÄÉúÃüÖÜÆÚ¹ÜÀíµÈµÈ£¬¶¼ÊÇ KubeVela ÖØµã´òÔìµÄµÄºËÐÄÄÜÁ¦¡£
|