ÔõÑùʹÓÃGitlabºÍKubernetesʵÏÖ×Ô¶¯»¯°²ÅÅ
gitlabk8s×Ô¶¯»¯°²ÅÅ
Ëæ×ÅÔÆÅÌËãºÍÈÝÆ÷»¯ÊÖÒÕµÄÆÕ¼°£¬ÆóÒµÔ½À´Ô½¶àµØ½«Ó¦ÓóÌÐò°²ÅÅÔÚ Kubernetes ÉÏ¡£¶øΪÁ˸üºÃµØÖÎÀí Kubernetes ÇéÐÎÖеÄÓ¦ÓóÌÐò£¬Ô½À´Ô½¶àµÄÆóҵѡÔñʹÓà Gitlab ºÍ Kubernetes µÄÍŽᣬʵÏÖÁËÈÝÆ÷»¯Ó¦ÓõÄ×Ô¶¯¹¹½¨¡¢²âÊԺͰ²ÅÅ¡£±¾ÎĽ«ÏÈÈÝÔõÑùʹÓà Gitlab ºÍ Kubernetes ʵÏÖ×Ô¶¯»¯°²ÅÅ¡£
ʲôÊÇ Gitlab£¿
GitLab ÊÇÒ»¸ö»ùÓÚ Git ¿ÍÕ»µÄ Web Ó¦ÓóÌÐò£¬ÓÃÓÚ´æ´¢¡¢ÖÎÀíºÍÐ×÷¿ª·¢ÕßÖ®¼äµÄ´úÂë¡£GitLab ÌṩÁËһϵÁй¤¾ß£¬Èç´úÂëÖÎÀí¡¢ÎÊÌâ¸ú×Ù¡¢´úÂëÉó²é¡¢¹¹½¨¡¢°²Åŵȹ¤¾ß£¬Àû±ã¿ª·¢Õß¾ÙÐÐÍŶÓÐ×÷ºÍ°æ±¾¿ØÖÆ¡£GitLab µÄ¿ªÔ´°æ±¾ÊÇÃâ·ÑµÄ£¬¶øÆóÒµ°æÔòÌṩÁ˸ü¶àµÄ¹¦Ð§ºÍÖ§³Ö¡£
ʲôÊÇ Kubernetes£¿
Kubernetes ÊÇÒ»¸öÓÃÓÚÈÝÆ÷»¯Ó¦ÓõĿªÔ´Æ½Ì¨£¬ÓÉ Google Ìᳫ£¬²¢Òƽ»¸ø Cloud Native Computing Foundation£¨CNCF£©ÖÎÀí¡£Kubernetes ÌṩÁËÒ»×é API ½Ó¿Ú£¬ÓÃÓÚ×Ô¶¯»¯°²ÅÅ¡¢À©Õ¹ºÍÖÎÀíÈÝÆ÷»¯Ó¦ÓóÌÐò¡£ËüÖ§³Ö¶à¸öÈÝÆ÷»¯Æ½Ì¨£¬Èç Docker ºÍ rkt£¬²¢ÇÒ¿ÉÒÔÔÚÖÖÖÖÔÆƽ̨ÉÏʹÓá£
GitlabK8s ×Ô¶¯»¯°²ÅŵÄÀûÒæ
ʹÓà GitlabK8s ×Ô¶¯»¯°²ÅŵÄÀûÒæÔÚÓÚ£º
×Ô¶¯»¯¹¹½¨ºÍ°²ÅÅÁ÷³Ì£¬Ìá¸ß°²ÅÅЧÂÊ¡£
×Ô¶¯»¯²âÊÔ£¬ÔöÌí°²ÅÅÐÅÐÄ¡£
³ÌÐò°æ±¾¿ØÖƺÍÉó²é£¬Àû±ãά»¤Ó¦ÓóÌÐò¡£
GitlabK8s ×Ô¶¯»¯°²ÅŵÄʵÏÖ
ʵÏÖ GitlabK8s ×Ô¶¯»¯°²ÅÅÐèÒªÒÔÏ°취£º
ÔÚ GitLab Öн¨Éè¿ÍÕ»£¬´æ·ÅÓ¦ÓóÌÐò´úÂë¡£
ÔÚ GitLab Öн¨ÉèÒ»¸ö CI/CD ÉèÖÃÎļþ£¨.gitlab-ci.yml£©ÓÃÓÚ×Ô¶¯»¯¹¹½¨¡¢²âÊԺͰ²ÅÅ¡£
ÉèÖÃ GitLab Runner¡£
ÔÚ Kubernetes Öн¨ÉèÒ»¸öÃüÃû¿Õ¼ä£¨namespace£©ºÍÒ»¸ö°²ÅÅ£¨deployment£©£¬ÓÃÓÚ´æ·ÅºÍÔËÐÐÓ¦ÓóÌÐò¡£
ÉèÖà Kubernetes µÄ´æ´¢¾í£¬ÓÃÓÚ´æ·ÅÓ¦ÓóÌÐòµÄÊý¾Ý¡£
ÏÂÃæÊÇÒ»¸öʾÀýµÄ .gitlab-ci.yml Îļþ£º
image: docker:latest services: - docker:dind stages: - build - test - deploy variables: DOCKER_DRIVER: overlay2 CONTAINER_TEST_IMAGE: registry.example.com/app-container:$CI_COMMIT_SHA CONTAINER_PROD_IMAGE: registry.example.com/app-container:latest before_script: - docker info - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.example.com build: stage: build script: - docker build -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE test: stage: test script: - docker run --rm $CONTAINER_TEST_IMAGE npm test deploy: stage: deploy script: - kubectl config set-cluster kubernetes --server=https://kubernetes.example.com - kubectl config set-credentials gitlab --token=$KUBE_TOKEN - kubectl config set-context default --cluster=kubernetes --user=gitlab - kubectl apply -f kubernetes/
µÇ¼ºó¸´ÖÆ
ÔÚÕâ¸öʾÀýÖУ¬ÎÒÃÇʹÓà Docker ¾µÏñ×÷Ϊ¹¹½¨ºÍ²âÊÔÇéÐΣ¬²¢½«¹¹½¨ºóµÄ Docker ¾µÏñÍÆË͵½Ë½ÓÐ Docker ¾µÏñ¿ÍÕ»¡£×îºóʹÓà kubectl ÏÂÁîÓ¦Óà Kubernetes ÖÐµÄ YAML Îļþ¾ÙÐÐÓ¦ÓóÌÐòµÄ°²ÅÅ¡£
×ܽá
ͨ¹ý GitlabK8s ×Ô¶¯»¯°²ÅÅ£¬ÎÒÃÇ¿ÉÒÔʵÏÖ¶Ô Kubernetes ÉϵÄÓ¦ÓóÌÐò¸üºÃµØÖÎÀí¡£×Ô¶¯»¯¹¹½¨¡¢²âÊԺͰ²ÅÅ¿ÉÒÔÌá¸ß°²ÅÅЧÂʺÍÐÅÐÄ£¬°æ±¾¿ØÖƺÍÉó²éÀû±ãÁËÓ¦ÓóÌÐòµÄά»¤¡£GitlabK8s ×Ô¶¯»¯°²ÅÅÒ²ÌṩÁËÎÞаµÄÉèÖ㬿ÉÒÔƾ֤ÆóÒµµÄÏÖÕæÏàÐξÙÐе÷½âºÍÓÅ»¯¡£
ÒÔÉϾÍÊÇÔõÑùʹÓÃGitlabºÍKubernetesʵÏÖ×Ô¶¯»¯°²ÅŵÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡