跳至主要内容

GitLab进阶篇之 CI/CD、Kubernetes 配合篇


---------------------------

前阵子,逛Youtube的时候,看到一条 Gitlab CI/CD DEMO,我就顺手点击进去看了下。
呦!!Gitlab多了自动部署的Kubernetes模板.

看着Gitlab 的Demo Video 在CI/CD 如此行云流水,觉得大赞!!就立即动手开始搭环境了。。。
结果这一搭,就真的是入大坑了!!!
kube我第一次接触,真的是入坑好多天,现在都还没爬出来。。你没看错,是真的没爬出来。。。


万事开头难~ 下面的需求列表牵扯的资源看起来比较简单,但是搭建过程的Debug才是难点。。。
不过不要担心,这里会给出关键路径,保证不会让你迷路。。
应该不会迷路。。
不会迷路。。


--------------我是正文吗?--------------
阅读前需要读者有以下技能和硬件资源

* VMWARE EXSI搭建或者 VBOX 虚拟机搭建技能
* Linux任意发行版本的操作技能
* 熟悉Linux系统(如不熟悉,请先恶补 
 《Linux SERVER HACK 》 O'Reilly出版)
* 能让EXSI下的虚拟机流畅的上 Google平台
 (最好路由器上实现全局顺畅上Google,不多解释,你懂的)
* 12G内存和支持VT-x的Intel处理器PC
 (用来做虚拟机)(啥?你是AMD粉?我也是呀!)


导航:

* 最低条件列表(网络,硬件,系统)
* 安装kubernetes 、Gitlab CI multi runner、Gitlab
* 小结

------------ 正文了! ------------

EXSI and Ubuntu 17.04

我找了台服务器,安装了EXSI 6.5, 在上面安装了2个 Ubuntu 17.04 server 64bit。一路默认安装,
在安装Packages的时候选择了ssh和sql 包。1个系统给了4G内存,用来安装Gitlab服务, 1个给了6G内存,用来安装 Kubernetes。

路标1: 需要在每个虚拟机的CPU选项上设置 ”硬件虚拟化” , kube需求此功能。
路标2: VBOX 也OK(如图所示)
路标3: 安装完系统后做快照!安装完系统后做快照!安装完系统后做快照!
路标4: Gitlab最好给4G内存,Kube推荐给6G内存。 时间是宝贵的,现阶段没必要调优节省内存。
路标5: 必须流畅上Google,否则你不用实操了,找国内kube镜像的事相信大家没这闲工夫。。

K8s(我把Kubernetes简称了,以下都称K8s)平台:
参考以下文章,在其中6G内存系统上,需要先安装docker-ce和kubectl以及 kubeadm。过程简单不叙述。
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/

我推荐使用weave来作为Pod network,因为flannel 始终无法让K8s的各个服务正常通讯,翻阅google和经过1天的debug,我放弃了。。。 

过程如下:
su  #切换到root (虽然百般不乐意切root操作,看在实验性质的份上忍了)
kubeadm reset  #先reset一遍??第一次搞无所谓
kubeadm init --apiserver-advertise-address=192.168.199.114 # 这里的IP替换成自己IP

export KUBECONFIG=/etc/kubernetes/admin.conf
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
# 以上4行是 init 完成后 kubeadm推荐做的操作,也就是说用普通账号运行服务

kubectl get pods --all-namespaces -o wide #非必要操作,只是确认下服务安装的怎么样了。如图:
看STATUS栏,

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')" 
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

把本节点添加到管理:
kubectl taint nodes --all node-role.kubernetes.io/master-


kubectl create -f kubernetes-dashboard.yaml (从 github 拿 yaml 文件)
kubectl proxy --address 192.168.199.114 --port=9090 --accept-hosts='^*$'



输入 http://192.168.199.114:9090/ui


未完,待续

评论

此博客中的热门博文

Gitlab CI/CD 之 gitlab-runner 用 Docker 方式如何顺利工作

前阵子,k8s 是搭建起来了.但是这玩意更新太快,3个月后, 以前的方法不好使了...又有新坑了... 干脆就只跑 Docker 吧.... 我擦,Docker也跑不起来了...说 **docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.** 以前只要在 .gitlab-ci.yml 里面填写 标红的就可以了.但是现在不行,会报  Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? services:   - docker:dind variables:   DOCKER_DRIVER: overlay build:   stage: build   script:   - export DOCKER_HOST="tcp://localhost:2375" build-master:   stage: build   script:     - echo $CI_REGISTRY_PASSWORD |  docker login -u "$CI_REGISTRY_USER" $CI_REGISTRY --password-stdin     - docker build . (注意, $CI_REGISTRY 这些环境变量是要填写在 Gitlab web 环境变量中的) 研究后,要在 gitlab-run 的 文件中包含     volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"] sudo cat /etc/gitlab-runner/config.toml concurrent = 1 check_inte

最强百元Wi-Fi 路由-----斐讯K2P

 最强百元级无线路由到来--斐讯K2P 先来王炸: 1 K2P闲鱼全新收购价在 100-140 2 K2P是全千兆有线,全千兆有线,全千兆有线!不要问为啥说三遍 3 SoC 是MT7621A 双核四线程 880Mhz 4 Wi-Fi 是单芯片MT7615DN,支持MU-MIMO特性,支持Beamforming 5 外置PA和LNA提升信号覆盖范围 6 众多第三方固件,实用性爆棚 以上六点,咱们一条一条解说。 没有对比,就没有伤害: 1 售价:小米3G,同样硬件的小米3G售价249。号称性价比、发烧的硬件都比这个贵100,还怎么玩? 2 看TP-LINK、FAST、水星的同售价产品,100多元的没千兆,有千兆的都200元起。百兆网口的东西我现在看都不看! 3 说实话,有比MT7621A 880Mhz 1004K核心更好的MIPS32 处理器,就是螃蟹家RTL8198C 1074Kc(8198C另外还多一颗500Mhz用来加速存储的核), 但是很难买到,比如这三款:ASUS RP-AC68U 、D-Link DIR-879、Edge-core ecw3350 。 PS:关于螃蟹 RTL8198C的故事有好几个段子,都是和原厂闲聊得来的...以后有时间再说,今天主角是MTK。 wiki数据: 1074K single core delivers a performance of 1.93 DMIPS/MHz and 3.49 Coremarks/MHz.  1004K single core delivers a performance of 1.6 DMIPS/MHz and 3.05 Coremarks/MHz.  24K core delivers a performance of 1.6 DMIPS/MHz and 3.1 Coremarks/MHz. 虽然只看 DMIPS和 Coremarks/MHz,觉得24Kc和1004Kc差不多,但是区别还是很大的,比如L2 Cache 24Kc就没有, 多线程多核也没有,而且7621A主频提升到了 880Mhz。 这些都是很大的进步。并非简单的胶水双核 :D  4 Wi-Fi

用Gitlab搭建 Docker Hub Registry(不踩坑指南)

Docker大家基本都用过, Registry 就是服务,简单理解就是能让你 Docker pull 和push Image的地方。 Gitlab的 Registry 是自动化部署一个环节。计划从Gitlab的自动化集成、自动化部署,以及如何配合Kubernets(谷歌的平台简称K8s),这些属于Devops的应用。 之前写过一篇文章,感慨现在的云服务实在是太方便了:快速部署的目的是让创业公司专注自己的业务,而无需浪费人力去折腾基础服务. (原文连接:  后知后觉,云服务太方便了!  ) 那么为何不使用 Docker Hub 服务?反而要自己搭建呢? 几个原因: *  Docker Hub 访问实在是太慢,甚至是访问不了.  *  使用 Docker Hub必须开源自己的仓库, 很多用户比较敏感.(当然可以花钱购买私有仓库进行扩容) *  自己机器上数据和云服务数据同步,保证数据安全 --------------------------------------------------------- Gitlab 功能太多,我也是使用 CI 、CD 配合 Kubernetes(k8s)时候偶然发现竟然还集成了Docker Registry 的功能...这下爽了,终于不用看墙的脸色决定网速了~我自己的 Docker Hub,想怎么push、pull 都行~ --------------------------------------------------------- 我们这篇主要讲怎么 避免踩坑 , 具体服务怎么搭建回头找个机会,再整理下详细步骤. 我的环境是一台 DELL 16G 的1U 服务器,在 EXSI 6.5 上给 Ubuntu17.04 server 分配了4 Core 以及 6G内存.  只跑 Gitlab 基础 +   Registry 的服务, 和这个配套的 K8s 、Gitlab-runner 等服务在另外一个系统上跑(K8s 、CI CD、 Gitlab-runner 如何搭建以及应用,会以后讲). 以下注意几点: Registry 不支持自签(Self-Signed Cretificate)      所以不要想着局域网随