±à¼ÍƼö: |
ÎÄÕÂÖ÷Òª½éÉÜÁËÈçºÎ´î½¨Ò»Ìõ³ÉÊìÎȶ¨¡¢ÇÒ·ûºÏ΢·þÎñÌØÉ«µÄ¸ß¶È×Ô¶¯»¯DevOps¹ÜµÀ,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚÔÆÉçÇø,ÓÉ»ðÁú¹ûÈí¼þAlice±à¼ÍƼö¡£ |
|

ǰÑÔ
2018Äê¼ÈÊÇ΢·þÎñ¼Ü¹¹»ð±¬µÄÒ»Ä꣬ҲÊÇÈÝÆ÷ºÍKubernetesÊÕ»ñÔÞÓþÅèÂú²§ÂúµÄÒ»ÄꣻÔÚkubernetesµÄÒýÁìÏ£¬ÒÔÈÝÆ÷ΪÖÐÐIJ¿Êð΢·þÎñÒѳÉΪһÖÖÊÂʵ±ê×¼£¬²¢²»¶Ï¼ÓËÙ×Å΢·þÎñ¼Ü¹¹Ä£Ê½Â䵨£¬³ÖÐøµØ·¢»Ó×ÅËüµÄħÁ¦¡£
ÆóÒµ£¬ÌرðÊÇ»¥ÁªÍø¹«Ë¾£¬ÎªÁË¿ìËÙÏìӦǰ¶ËÓû§µÄÐèÇó£¬Ëõ¶Ì²úÆ·´ÓÐèÇóµ½½»¸¶µÄÖÜÆÚ£¬³£³£ÐèÒª¿ìËٵء¢Ï¸Äå¶ÈµØµü´ú²úÆ·£¬ÒÔÇÀÕ¼Êг¡ÏÈ»ú£»ÔÚ΢·þÎñģʽÏ£¬¿ÉÒԺܺõØÂú×ãÕâ¸öÒªÇó£¬Ö»·¢²¼±ä»¯µÄ·þÎñ£¬´Ó¶ø×îС»¯µ¥´Îµü´úµÄ·çÏÕ£¬ÊµÏÖÃô½Ý¿ª·¢ºÍ²¿Êð¡£
µ±²ÉÓÃ΢·þÎñģʽºó£¬Õû¸öÒµÎñÁ÷³Ì½«±»´¹Ö±²ð·Ö³É¶à¸öСµ¥Ôª£»Ã¿¸öСµ¥Ôª¶¼ÊÇÒ»¸ö¶ÀÁ¢¿ª·¢¡¢¶ÀÁ¢²¿ÊðºÍ¶ÀÁ¢À©Õ¹µÄ΢´¦Àí·þÎñ£¬ÕâÑùµÄÁé»îÐԷdz£ÊʺÏÃô½Ý¿ª·¢Ä£Ê½£¬µ«Ò²¸ø¿ª·¢ºÍÔËά´øÀ´Á˹ÌÓеĸ´ÔÓÐÔºÍÄѶȡ£
¶ÔÓÚ¿ª·¢Õß¶øÑÔ£¬ÓÉÓÚ΢·þÎñÓ¦ÓÃÕûÌå×÷Ϊһ¸ö·Ö²¼Ê½ÏµÍ³Ìṩ·þÎñ£¬ÐèҪѡÔñºÏÊÊ·þÎñͨѶÐÒ飬²¢´¦ÀíDZÔÚµÄÍøÂç·Ö»¯Ë²Ê±¹ÊÕϵÈÇé¿ö£¬³ý´ËÖ®Í⣬»¹ÐèÒª½¨Éè·þÎñ·¢ÏÖ¡¢ÅäÖÃÖÐÐĵȻù´¡ÉèÊ©£»
¶ÔÓÚÔËάÈËÔ±£¬ÐèÒªÀûÓÃÈÝÆ÷µÄ¿ÉÒÆÖ²ÐÔ£¬³ÖÐøµØ¼¯³ÉºÍ²¿Êð΢·þÎñµ½²»Í¬µÄ¼¯Èº»·¾³£¬ÕâЩ¶¼ÒªÇóÔËάÈËÔ±¾ßÓзdz£È«ÃæµÄÄÜÁ¦£¬±ÈÈ磺ÊìϤÈÝÆ÷¼°k8s¡¢ÄܱàдLinux
ShellÔËά½Å±¾¡¢ÊìÁ·Ò»ÖÖ³ÖÐø¼¯³É²¿Ê𹤾ߣ¨±ÈÈ磺gitlab¡¢jenkins£©µÈ¡£
×ÛÉÏËùÊö£¬ÈçºÎ´î½¨Ò»Ìõ³ÉÊìÎȶ¨¡¢ÇÒ·ûºÏ΢·þÎñÌØÉ«µÄ¸ß¶È×Ô¶¯»¯DevOps¹ÜµÀÓÖ³ÉΪÁËÁíÒ»¸öÄÑÌâ¡£
Ä¿±ê
ÒÔ×îСµÄѧϰ³É±¾£¬´î½¨Ò»Ìõ³ÉÊìÎȶ¨¡¢ÇÒ·ûºÏ΢·þÎñÌØÉ«µÄ¸ß¶È×Ô¶¯»¯DevOps¹ÜµÀ£¬°´ÐèµØ³ÖÐø¼¯³É/²¿Êð΢·þÎñµ½kubernetes¡£
¹¤¾ß - ×îСµÄѧϰ³É±¾
kubernetes + gitlab + shell
·½°¸ - Ô¸¾°
1. ³ÖÐø¼¯³É - CI
ÔÚkubernetesµÄmaster½Úµã²¿Êðgitlab-runner£¬³äµ±gitlab·þÎñÆ÷µÄ¿Í»§¶Ë£»µ±Ìá½»»òºÏ²¢´úÂëµ½Ö¸¶¨µÄ·Ö֧ʱ£¬gitlab-runner×Ô¶¯´ÓgitlabÀÈ¡´úÂ룬ÀûÓÃmasterÖ÷»úÌṩµÄ±ßÔµ¼ÆËãÄÜÁ¦À´Ö´ÐÐÒѱàÅźõÄDevOps
CI¹ÜµÀ=¡·±àÒë´úÂë¡¢ÔËÐе¥ÔªºÍ¼¯³É²âÊÔ¡¢ÈÝÆ÷»¯Î¢·þÎñ³É¾µÏñ£¬×îºóÉÏ´«µ½ÆóÒµ¾µÏñ²Ö¿â£¬Õâ¾ÍÊdzÖÐø¼¯³ÉÁ÷³Ì£¬¸Ã½×¶Î½»¸¶µÄ²úÎïΪ¾µÏñ¡£
2. ³ÖÐø²¿Êð - CD
ÔÚkubernetesµÄmaster½Úµã²¿Êðgitlab-runner£¬³äµ±gitlab·þÎñÆ÷µÄ¿Í»§¶Ë£¬µ±³ÖÐø¼¯³É½×¶Î½»¸¶ÁËа汾µÄ¾µÏñºó£¬´ÓÆóÒµ¾µÏñ²Ö¿âÀÈ¡×îа汾µÄ¾µÏñ£¬ÀûÓÃmasterÖ÷»úÌṩµÄ±ßÔµ¼ÆËãÄÜÁ¦Ö´ÐÐÒѱàÅźõÄDevOps
CD¹ÜµÀ=¡·Í¬²½·þÎñÅäÖÃÐÅÏ¢µ½ÅäÖÃÖÐÐÄ£¨k8sµÄConfigMap£©£¬²¢¹ö¶¯¸üÐÂkubernetes¼¯Èº¾µÏñ°æ±¾¡£
²¿Êð»·¾³
°²×°Ä¿Â¼£º/root/gitrunner
¹¤×÷Ŀ¼£º/home/devops/gitrunner
mkdir -p /root/gitrunner
&& mkdir -p /home/devops/gitrunner; |
1. ²¿Êðgitlab-runner
ÔÚkubernetesµÄmaster½Úµã²¿Êðgitlab-runner£¬ÃüÁîÈçÏ£º
> wget -O
/root/gitrunner/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64;
> cd /root/gitrunner;
> chmod +x gitlab-runner;
> # ×¢Ò⣺½¨ÒéʹÓÃrootÓû§½øÐа²×°£¬ÒÔ±ÜÃâ²»±ØÒªµÄȨÏÞÎÊÌâ¡£
> ./gitlab-runner install --user=root --working-directory=/home/devops/gitrunner;
> ./gitlab-runner start; |
2. ×¢²ágitlab-runner
gitlabÖ§³Ö×¢²áÁ½ÖÖÀàÐ͵Ärunner£º
1.Specific Runners
ÕâÊÇÁ¥ÊôÓÚÌØ¶¨ÏîÄ¿µÄרÓй¤ÈË£¬²»½ÓÊÜÆäËûÏîÄ¿µ÷Dz¡£
2. Shared Runners
ÕâÊÇÁ¥ÊôÓÚgitlab-serverµÄ¹¤ÈË£¬¿ÉÒÔ¹²Ïí¸øËùÓеÄÏîÄ¿µ÷Dz¡£
ÕâÁ½ÖÖRunner¸÷ÓÐǧÇÈç¹ûΪÿһ¸öÏîÄ¿¶¼×¢²áרÓÃRunner£¬»áÏԵñȽϷ±ËöºÍ¶àÓ࣬¶øÊ¹Óù²ÏíRunner¾ÍºÜʡʣ¬µ«ÊÇÒ»¸ö¹¤ÈËÒ»´ÎÖ»ÄÜ×öÒ»¼þÊÂÇ飬µ±Í¬Ê±µ÷Dzһ¸ö¹¤ÈËʱ£¬ÄÇô¾Í»á³öÏÖ¾ºÕùµÈ´ý£¬¹Ê´ó¼Ò»¹ÊÇʵ¼ÊÇé¿öÀ´×¢²á¹¤È˰ɣ¬Ö»Òª²»ÑÓÎó¹¤ÆÚ¾ÍÐУ¬ºÙºÙ¡£
×¢²árunner
ÔÚ¿ª·¢¡¢Ô¤Éú²ú¡¢Éú²ú»·¾³×¢²áRunner£¬²¢ÌùÉϱêÇ©£ºbuild¡¢staging¡¢prod¡£
±¸×¢£ººóÃæ´î½¨ DevOps ¹ÜµÀʱ£¬½«¸ù¾Ý±êÇ©À´µ÷Dz¹¤ÈË¡£
²½Öè
1. »ñÈ¡ÏîÄ¿µØÖ·ºÍ×¢²átoken£¬ÒÀ´Î²éÕÒ·¾¶£ºSettings
=> CI / CD => Runners settings£¬ÈçÏ£º

2.×¢²á£º
> cd /root/gitrunner;
> ./gitlab-runner register
> # »Ø³µ£¬¸ù¾ÝÌáʾÌîдÏîÄ¿µØÖ·¡¢×¢²áToken¡¢±êÇ©¡¢Ö´ÐÐÆ÷
> # ¼ÙÈ磬ÏîÄ¿µØÖ·Îª£ºhttp://gitlab.justmine.cn:8002/£¬
ÏîĿע²átokenΪ£º6iS4GBCh18NR4GPoMyef¡£
> ## ÒÔ¿ª·¢»·¾³ÎªÀý£¨½ö¹©²Î¿¼£©
> Please enter the gitlab-ci coordinator URL
(e.g. https://gitlab.com/):
http://gitlab.justmine.cn:8002/
> Please enter the gitlab-ci token for this
runner:
6iS4GBCh18NR4GPoMyef
> Please enter the gitlab-ci description for
this runner:
[justmine.com]: development environment
> Please enter the gitlab-ci tags for this
runner (comma separated):
build
> Registering runner... succeeded runner=4iS4GwCh
> Please enter the executor: ssh, docker+machine,
kubernetes, virtualbox, docker-ssh+machine, docker,
docker-ssh, parallels, shell:
shell
> Runner registered successfully. Feel free
to start it, but if it's running already the config
should be automatically reloaded!
> # ÆäËû»·¾³Í¬Àí |

´î½¨DevOps¹ÜµÀ - PipeLines
ÉÏÃæµÄ·½°¸½ö½öÃèÊöÁËÔ¸¾°£¬Ò²¾ÍÊÇÆÚÍû´ï³ÉÄ¿±êµÄ×îºó½á¹û£¬µ«¶ÔÓÚÈçºÎÂäµØÒ»ÌõÕæÕýµÄ¹ÜµÀ¶øÑÔ£¬»¹ÊÇÏԵ÷dz£µÄ¿Õ¶´¡£ÆäʵÕâÕýÊÇDevOpsµÄÄѵ㣬´óÌåÁ÷³ÌÉ϶¼ÏþµÃÓиö³ÖÐø¼¯³É¡¢³ÖÐø²¿Ê𣬽²ÆðÀ´ÈçÊý¼ÒÕ䣬ÂäµØÊ±¶¼Ö®ºõÕßÒ²¡£
ͬÑù£¬±ü³Ð΢·þÎñµÄ˼Ï룬·Ö¶øÖÎÖ®£¬ÎÒÃǽ«¹ÜµÀ·ÖΪÁ½¸ö²¿·Ö£º´´½¨¡¢¸üУ¬¼´ÏÈ´´½¨Ò»¸öÖ÷°å´Î£¬È»ºóÔÙ»ùÓÚ´ËÖ÷°å´Î½øÐÐС°æ±¾µü´ú£¬²»¶ÏµØÀ©Õ¹Ð¹¦ÄÜ¡£Í¨¹ýÕâÑùÓÐЧµÄ²ð·Ö£¬ÊDz»ÊǾͲ»ÄÇôµÄ¿Õ¶´ÁË£¬¾ÍÏñÁìÓòÇý¶¯Éè¼ÆµÄCQRSģʽһÑù£¬Çø±ðµØ¶Ô´ý¶Áд£¬´Ó¶ø´ó´óµØ¼õÉÙÁË×迹£¬Ò²·Ç³£µØÇкϲúÆ·µÄ´´Ðµü´ú£¬±ÈÈ罫ÐèÇó²ð·ÖΪ3ÆÚ£¬Ã¿Ò»ÆÚ¶¼¶ÔÓ¦Ò»¸öÖ÷°æ´Î£¬È»ºóÔÙС°æ±¾µü´úÿһÆÚµÄÐèÇó£¬Íê³ÉÒ»ÆÚ£¬·â°åÒ»ÆÚ£¬±Ë´Ë¸ôÀ룬»¥²¹Ó°Ï죬ͬʱҲ·½±ã×·ËÝ¡£
ÀíÇåÁËÕû¸ö¹ÜµÀµÄÂöÂ磬ÏÖÔÚ¾ÍÐèҪ˼¿¼Ò»Ð©Êµ¼ÊÎÊÌâÁË£¬±ÈÈ磺
ÈçºÎ½«³ÖÐø¼¯³É/²¿Êð΢·þÎñÁ÷³Ì½Å±¾»¯£¬¼´ÈçºÎʵÏÖ»ù´¡ÉèÊ©´úÂ뻯£¿
ÈçºÎ¶¯Ì¬½âÎögitµ±Ç°±ä»¯ÈÕÖ¾£¬ÊµÏÖ׼ȷµØ°´Ðè·¢²¼Î¢·þÎñ£¿
ÈçºÎ±£ÁôÏÖ³¡£¬²¢ÒÔ×îСµÄ³É±¾ÖØÊԹܵÀ£¿
ÔÚ²»Ð޸ĹܵÀ½Å±¾µÄÇé¿öÏ£¬ÈçºÎÊÖ¹¤¿ØÖư´Ðè·¢²¼¡¢×Ô¶¯ÉìËõºÍ»Ø¹ö΢·þÎñ£¿
ÈçºÎ¼æÈÝÐÂÔöµÄ΢·þÎñ£¿
ÈçºÎ¿ìËÙµ÷ÊÔÕû¸ö¹ÜµÀ½Å±¾£¿
Ö»ÓаÑÉÏÃæµÄÎÊÌâ¶¼´¦ÀíÁË£¬²ÅËãÊÇÒ»Ìõ³ÉÊì¿ÉÓõġ¢ÆóÒµ¼¶±ðµÄCI/CD¹ÜµÀ£¬²Å·ûºÏ¸ß¶È×Ô¶¯»¯¡¢Îȶ¨¡¢¿ìËÙ¡¢ÈÝ´íµÈÌØµã£»ÔÚ»¥ÁªÍø¹«Ë¾£¬¿ÉÄÜÒ»ÌìÒªÌá½»ºÃ¼¸¸ö°æ±¾µ½²»Í¬µÄ»·¾³£¬²»ÄÜÒòΪ¿¼ÂDz»ÖܶøÓ°ÏìÁ¬Ðø²¿ÊðµÄ½ø¶È£¬¹ÜµÀÒ»µ©Í¶ÈëʹÓþÍÐèÒª¶ÔÐ޸ıպϣ¬Ö»¶ÔÀ©Õ¹¿ª·Å¡£
Ö»ÓаÑÉÏÃæµÄÎÊÌâ¶¼´¦ÀíÁË£¬²ÅËãÊÇÒ»Ìõ³ÉÊì¿ÉÓõġ¢ÆóÒµ¼¶±ðµÄCI/CD¹ÜµÀ£¬²Å·ûºÏ¸ß¶È×Ô¶¯»¯¡¢Îȶ¨¡¢¿ìËÙ¡¢ÈÝ´íµÈÌØµã£»ÔÚ»¥ÁªÍø¹«Ë¾£¬¿ÉÄÜÒ»ÌìÒªÌá½»ºÃ¼¸¸ö°æ±¾µ½²»Í¬µÄ»·¾³£¬²»ÄÜÒòΪ¿¼ÂDz»ÖܶøÓ°ÏìÁ¬Ðø²¿ÊðµÄ½ø¶È£¬¹ÜµÀÒ»µ©Í¶ÈëʹÓþÍÐèÒª¶ÔÐ޸ıպϣ¬Ö»¶ÔÀ©Õ¹¿ª·Å¡£
¹ÜµÀÒ»ÀÀͼ£º

ΪÁËÑéÖ¤¹ÜµÀµÄÌØÐÔ£¬ÎÒÌØÒâ×öÁËÒÔϲâÊÔ£º
1. ´´½¨»·¾³ - ·¢²¼Ö÷°å±¾
ÕâÊÇÒ»¸ö´Ó0µ½1¡¢´ÓÎÞµ½ÓеĹý³Ì£¬ÕâÀïһС²½£¬È´ÊÇÂ䵨DevOps¹ÜµÀµÄÒ»´ó²½¡£
°æ±¾µü´úµÄµÚÒ»²½¾ÍÊÇ´´½¨Î¢·þÎñ¼¯Èº»·¾³£¬ÄÇôÈçºÎ¿ì½ÝµØ´´½¨Õâ¸ö»·¾³ÄØ£¿ÎÒ½«Ê¹ÓÃkubernetesµÄ°ü¹ÜÀíÆ÷helmÀ´Íê³ÉÕâ¸öÈÎÎñ£¬¿ÉÄܺܶàͬѧ¶¼Ã»ÓùýÕâ¸ö¹¤¾ß£¬Æ½Ê±²¿Êð×é¼þ¶¼ÊÇÊÖ¹¤±àдºÃyaml×ÊÔ´²¿ÊðÎļþ£¬ËäÈ»ÕâÖÖ·½Ê½·½±ã¿ì½Ý£¬µ«ÊǶÔÓÚ´óÁ¿×é¼þ£¬ÒÔ¼°ÐèҪʵÏÖ»ù´¡ÉèÊ©´úÂ뻯µÄ³¡¾°£¬ÊÖ¹¤´¦ÀíÕâÖÖ·½Ê½¾Í²»ÄÜÂú×ãÐèÇóÁË¡£
Ä£°åÎļþÇë²Î¿¼Ê¾ÀýÏîÄ¿£¬ÏÂÃæÊÇ´´½¨»·¾³µÄ½Å±¾»¯ÃüÁ
helm install
/root/AutoDevOpsPipeLinesCharts \
--name=${releaseName} \
--set environment.upper=${Environment} \
--set environment.lower=${environment} \
--set namespace=${namespace} \
--set image.registryhost=${RegistryHost} \
--set image.username=${registryUserName} \
--set image.version=${version} \
--set replicas=${replicas} |
´ÓÉÏÃæ¿ÉÒÔ¿´³ö£¬ÊµÏÖ²¿Êð·þÎñ½Å±¾»¯µÄÄ¿µÄÒѾ´ïµ½ÁË¡£
ÏÂÃæÎÒÃÇÔÚÀ´¿´¿´ÈçºÎ½Å±¾»¯Õû¸ö´´½¨»·¾³¹ÜµÀÏߣº
# 001 Continuous
integration image to registry.
bash ./devops/PipeLines/Creation/001_CI.sh
. # 002 Create config information to k8s's configmap.
bash ./devops/PipeLines/Creation/002_CreateConfig.sh
. # 003 Release major to k8s's cluster.
bash ./devops/PipeLines/Creation/003_ReleaseMajor.sh
. # 004 Create gateway route.
bash ./devops/PipeLines/Creation/Gateways/Kong/ 004_CreateGatewayRoute.sh |
±¸×¢£º¹ÜµÀÏ߽ű¾Çë²Î¿¼Ê¾ÀýÏîÄ¿(AspnetCore)£ºMicroService.AutoDevOpsPipeLines/devops/PipeLines/Creation¡£
1.1¡¢²âÊÔ
½«¸Õ¸Õ´´½¨µÄhelmÄ£°åÎļþÉÏ´«µ½gitlab-runnerËùÔÚ·þÎñÆ÷µÄ/rootĿ¼Ï£¬²¢Ìí¼ÓÅäÖã¬ÈçÏ£º
<Project>
<PropertyGroup> <Major>1</Major>
<Minor>0</Minor> <Patch>0</Patch>
</PropertyGroup>
</Project> |
È»ºóºÏ²¢´úÂëµ½·ÖÖ§release/staging£¬ÈçÏ£º

´ÓÉÏÃæ¿ÉÒÔ£¬µÚÒ»¸öÖ÷°å´Î(1.0.0)ÒѾ³É¹¦·¢²¼µ½Ô¤Éú²ú»·¾³¡£


·¾³Í¬Àí£¬ÔÚÔ¤Éú²ú»·¾³ÅÜÍê¸÷ÖÖ²âÊԺ󣬺ϲ¢´úÂëµ½·ÖÖ§release/production¼´¿É¡£
2. ¹ö¶¯¸üР- µü´úС°æ±¾
Õâ¸ö½×¶Î½«Ä£ÄâÔÚµÚÒ»¸öÖ÷°å´Î(1.0.0)ÉϽøÐÐС°æ±¾µü´úÐèÇ󣬾àÀëÉϴη¢²¼ÒѾһÖÜÁË£¬¿ª·¢²¿ÃÅÒ²Íê³ÉÁ˵ÚÒ»¸öС°æ±¾µÄ¿ª·¢¹¤×÷£¬ÏÖÔÚÐèÒª·¢²¼°æ±¾1.0.1µ½Ô¤Éú²ú»·¾³½øÐвâÊÔ£¬Ê×ÏÈÐÞ¸ÄÎļþversion.props£¬ÈçÏ£º
<Project>
<PropertyGroup> <Major>1</Major>
<Minor>0</Minor> <Patch>1</Patch>
</PropertyGroup>
</Project> |
³ýÁË·¢²¼±¾´ÎÐèÇóÐ޸ĵÄÁ½¸ö΢·þÎñ£ºIdentity.API¡¢Marketing.APIÒÔÍ⣬»¹ÐèÇ¿ÖÆ·¢²¼Î¢·þÎñBasket.API£¬Ìí¼ÓÅäÖã¬ÔÚgitlab²Ö¿âÒÀ´Î²éÕÒ
(Settings => CI/CD => Secret variables)£¬ÈçÏ£º

×îºóºÏ²¢´úÂëµ½·ÖÖ§staging¡£
ÏÈÀ´¿´¿´ÊÇ·ñÕýÈ·½âÎögit±ä¸üÈÕÖ¾ºÍÈ«¾Ö±äÁ¿£¬×¼È·µØÊµÏÖ×Ô¶¯»¯ºÍÊÖ¹¤¿ØÖÆ£º

ÔÙÀ´¿´¿´Õû¸ö¹ÜµÀµÄÖ´ÐÐÇé¿ö£º

×îºó¿´Ò»ÏÂÔ¤Éú²ú»·¾³µÄЧ¹û


3. ×Ô¶¯ÉìËõ
3.1¡¢ÉìËõµ¥¸ö΢·þÎñ
¾¹ýÒ»¶Îʱ¼äµÄ¹Û²ì·¢ÏÖÔ¤Éú²ú»·¾³µÄ¹ºÎï³µ(Basket.API)΢·þÎñÍÌÍÂÁ¿ÆÄ¸ß£¬¹Ê¾ö¶¨À©ÈÝËüµÄʵÀýÊýÁ¿µ½2¸ö£¬Ê×ÏÈÐÞ¸ÄÏîÄ¿ÊôÐÔÎļþdeploy.props£¬ÈçÏ£º
È»ºóÌí¼ÓÅäÖã¬ÈçÏ£º

×îºóºÏ²¢´úÂëµ½·ÖÖ§scaling/staging£¬ÈçÏ£º

3.2¡¢ÉìËõËùÓÐ΢·þÎñ
ͬÀí£¬Ê×ÏÈÐÞ¸ÄÏîÄ¿ÊôÐÔÎļþdeploy.props£¬ÈçÏ£º
È»ºóÌí¼ÓÅäÖã¬ÈçÏ£º


´ÓÉÏÃæ²âÊÔ¿´µ½£¬Ö»ÐèÒªÐÞ¸ÄÅäÖ㬾ͿÉÒÔÖ§³Ö²»Í¬Á£¶ÈµØÉìËõ΢·þÎñ£¬Ò²²»ÓÃÐÞ¸ÄCI/CD¹ÜµÀ½Å±¾¡£
4. »Ø¹ö
4.1¡¢»Ø¹öµ¥¸ö΢·þÎñ
¾¹ýÒ»¶Îʱ¼äµÄ¹Û²ì£¬·¢ÏÖ¸Õ¸Õ·¢²¼µ½Ô¤Éú²ú»·¾³µÄ°æ±¾1.0.1ÓÐÎÊÌ⣬¹Ê¾ö¶¨»Ø¹öµ½ÉÏÒ»¸ö°æ´Î1.0.0£¬Ê×ÏÈÐÞ¸ÄÏîÄ¿ÊôÐÔÎļþdeploy.props£¬ÈçÏ£º
<!--»Ø¹ö²½³¤-->
<RollBackStep>1</RollBackStep> |
È»ºóÌí¼ÓÅäÖã¨Ö»»Ø¹ö¹ºÎﳵ΢·þÎñ£©£¬ÈçÏ£º

×îºóºÏ²¢´úÂëµ½·ÖÖ§rollback/staging£¬ÈçÏ£º


4.2¡¢»Ø¹öËùÓÐ΢·þÎñ
ͬÀí£¬Ê×ÏÈÐÞ¸ÄÏîÄ¿ÊôÐÔÎļþdeploy.props£¬ÈçÏ£º
<!--»Ø¹ö²½³¤-->
<RollBackStep>1</RollBackStep> |
È»ºóÌí¼ÓÅäÖûعöËùÓÐ΢·þÎñ£¬ÈçÏ£º

×îºóºÏ²¢´úÂëµ½·ÖÖ§rollback/staging£¬»òÕßÖ±½ÓÖØÊԹܵÀµÄroll-back½×¶Î£¬ÈçÏ£º


5. ¿ÉÀ©Õ¹ÐÔ - ¼æÈÝÐÂÔö΢·þÎñ
5.1¡¢Ìí¼ÓеÄËÑË÷΢·þÎñ
¾¹ýÒ»¶Îʱ¼äµÄµü´ú£¬Ò»ÆÚÒѾÍ깤£¬¶þÆÚÐÂÔöÁËËÑË÷΢·þÎñ£¬ÕâʱÐÞ¸ÄhelmÄ£°åÎļþÖ§³Ö²¿ÊðËÑË÷΢·þÎñ£¬È»ºóºÏ²¢´úÂëµ½release/staging£¬²âÊÔÈçÏ£º
k8s

Íø¹ØÂ·ÓÉ

´ÓÉÏÃæ¿ÉÒÔ¿´µ½£¬ÐÂÔöµÄËÑË÷΢·þÎñÒѾ³É¹¦·¢²¼µ½µÚ¶þ¸öÖ÷°æ´ÎÁË¡£³ýÁËÐÞ¸ÄhelmÄ£°åÎļþÒÔÍ⣬Õû¸ö¹ý³Ì²¢Ã»ÓÐÐÞ¸ÄCI/CD¹ÜµÀ½Å±¾£¬Ô²ÂúÍê³ÉÁ˼æÈÝÐÂÔö΢·þÎñµÄÌØÐÔ¡£
±¸×¢£ºÎÒÃÇ¿ÉÒÔ½«helmÄ£°å¿´³É·þÎñ±àÅÅÎļþ¡£
ÔËά˵Ã÷
1¡¢·ÖÖ§
1¡¢build
¹¹½¨ºÍ±àÒë´úÂë¡£
2¡¢release/staging
´´½¨Ô¤Éú²ú»·¾³¡£
3¡¢staging
¹ö¶¯¸üÐÂÔ¤Éú²ú»·¾³¡£
4¡¢release/production
´´½¨Éú²ú»·¾³¡£
5¡¢master
¹ö¶¯¸üÐÂÉú²ú»·¾³¡£
6¡¢scaling/staging
ÉìËõÔ¤Éú²ú»·¾³
7¡¢scaling/production
ÉìËõÉú²ú»·¾³
8¡¢rollback/staging
»Ø¹öÔ¤Éú²ú»·¾³
9¡¢rollback/production
»Ø¹öÉú²ú»·¾³
2¡¢ÅäÖÃÎļþ
Ó¦ÓóÌÐòÅäÖà - app.props
<!-- k8sÃüÃû¿Õ¼äǰ׺£¬±ÈÈ磺microservice -autodevopspipeline-v1
-->
<NameSpace>microservice-autodevopspipeline</NameSpace>
<!-- Ó¦ÓóÌÐòÃû³Æ£¬Ö÷ÒªÓÃÓÚTips -->
<AppName>MicroService.AutoDevOpsPipeLine</AppName>
<!-- ½â¾ö·½°¸Ãû³Æ£¬ÓÃÓÚÉú³ÉÏîÄ¿ -->
<SolutionName>MicroService.AutoDevOpsPipeLines.sln </SolutionName> |
°æ±¾ÅäÖà - version.props
<!-- Ö÷°å´Î£¬²»¼æÈÝÉý¼¶
-->
<Major>1</Major>
<!-- ´Î°å´Î£¬¼æÈÝÉý¼¶ -->
<Minor>0</Minor>
<!-- ²¹¶¡°æ´Î£¬¾²Ä¬ÐÞ¸´½Ó¿Ú -->
<Patch>1</Patch> |
²¿ÊðÅäÖà - deploy.props
<!-- Auto-scaling
ʵÀýÊýÁ¿ -->
<Replicas>1</Replicas>
<!-- Rollback ²½³¤ -->
<RollBackStep>1</RollBackStep>
<!-- ¾µÏñ²Ö¿âÓû§Ãû -->
<ImageUserName>devopspipelines</ImageUserName> |
ÌØ¶¨»·¾³ÅäÖã¬È磺deploy.staging.props
<!-- ¾µÏñ²Ö¿âÖ÷»úÓòÃû
-->
<RegistryHost>registry.staging.com:8100</RegistryHost>
<!-- k8s restfulµØÖ· -->
<K8sApiServer>https://192.168.2.110:6443</K8sApiServer>
<!-- k8s ½Ó¿Ú·ÃÎÊÁîÅÆ -->
<AccessToken>utyeyerye.ytryeryeryyyyyyr.jhddghdhdhdhd< /AccessToken>
<!-- kong restfulµØÖ· -->
<KongApiServer>http://192.168.2.110:81</KongApiServer>
<!-- kong ÓòÃû°ó¶¨ -->
<KongRouteDomain>staging.devops.com</KongRouteDomain> |
·ÖÖ§»·¾³ÅäÖà - branch.env.props
<!-- ½âñĿǰÓÃÓÚ¹ö¶¯¸üÐÂ
-->
<!-- key: branch name(last keyword), value:
environment -->
<staging>Staging</staging>
<master>Production</master> |
×ܽá
ÉÏÃæµÄ²âÊÔ¼¸ºõº¸ÇÁ˽áºÏk8s¹ÜÀíÓ¦ÓÃÉúÃüÖÜÆÚµÄËùÓÐÁ÷³Ì(²¿Êð¡¢ÉìËõ¡¢»Ø¹ö¡¢·¢²¼)£¬´ó¼Ò¿ÉÒÔ·ÅÐĵØÔËÓûòÕßÀ©Õ¹Õâ¸ö¹ÜµÀµ½×Ô¼ºµÄ΢·þÎñÏîÄ¿ÖУ¬±ÈÈ磺Ŀǰ½öÖ§³Ö×Ô¶¯´´½¨Â·Óɵ½kongÍø¹Ø£¬½¨Òé´ó¼ÒforkÏîÄ¿ºó£¬×ÔÐÐÀ©Õ¹£¬²âÊÔÍê³Éºó£¬Ò²¿ÉÒÔÌáÈ¡PR¡£Èç¹ûÄã²ÉÓÃʾÀýÒ»ÑùµÄÏîÄ¿½á¹¹£¬Ö»ÐèÒªÐÞ¸ÄÅäÖÃÐÅÏ¢£¬È»ºó¿ªÏä¼´Óá£
|