编者按:
本文来自Rancher用户许先学的投稿。Rancher Kubernetes管理平台 ,可以或许让用户在生产情况中轻松快捷的摆设和管理容器及Kubernetes。Rancher 2.x版本内置的CI/CD Pipeline,让用户得以快速搭建团队所需的CI/CD流水线。本文将分享用户自身的最佳实践,step by step完成从集群搭建到Pipeline摆设的完备流程。
1. 搭建Rancher Server
安装Rancher 2.0
Rancher的安装过程很简朴,你可以按照官方的底子情况设置及安装文档,举行设置和安装:
http://www.cnrancher.com/docs/rancher/v2.x/cn/installation/basic-environment-configuration/。
Docker所必要的daemon.json可以直接利用下面的json代码:
要求(列出大抵要求,详细步调特殊是docker安装部门参照上面的底子情况设置):
- CPU: 4C;
- 内存:8G以上(亲测16G比力惬意,4G的也可以吧,但是摆设应用根本上起不来3个Pod);
- Centos/RedHat Linux 7.5+(64位);
- Docker 17.03.2;(用其他版本的立马重新装吧)
- 配好主机名和host,关防护墙和selinux;(/etc/hosts和/etc/hostname)
- 设置Docker镜像加快地点等信息 /etc/docker/daemon.json,如下代码
- 利用非root账户
- 主机名仅只支持包罗 - 和 .(中横线和点)两种特别符号,不能重复
设置要求最好按照官方发起的来:
# 创建 /etc/docker/daemon.json
{
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5,
"registry-mirrors": ["http://7bezldxe.mirror.aliyuncs.com/","http://IP:PORT/"],
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
# 设置好情况后实行下面下令创建rancher server(这里必要点耐烦等等)
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
创建第一个集群
快速搭建集群的更具体教程可参照官方文档:
http://www.cnrancher.com/docs/rancher/v2.x/cn/overview/quick-start-guide/#top
我搭设的是1server、2master、2node的集群 ,选择好脚色,粘贴至各主机去运行,在高级选项中写上对应的主机外网ip;master只选择etcd和control,node只选择worker;多master实现高可用也是没题目的。
添加集群
RKE & import & vsphere
2. Rancher2.0中K8S Dashboard的安装
Rancher2.0和之前不一样的地方之一就是没有原生Dashboard,必要我们手动安装。
手动安装Dashboard之前必要安装好kubectl。
安装kubectl
kubectl可以按照官方文档来,假如不能科学上网,可以利用Rancher提供的安装包,步调如下:
wget -O kubectl http://www.cnrancher.com/download/kubectl/kubectl_amd64-linux
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl cluster-info
kubectl get all
kubectl get nodes
kubectl get nodes --all-namespaces
# kebectl假如安装好实行无效 查抄~/.kube/kubeconfig 文件有没有从集群复制过来
手动安装Dashboard
现在我实验过两种方法,下面分别举行先容。
利用github上的教程手动安装:
http://gist.github.com/superseb/3a9c0d2e4a60afa3689badb1297e2a44
此中第一步是安装和验证kubectl,第二步是摆设dashboard。假如不能翻墙获取不到dashboard镜像,可以修改此中yaml文件的镜像源,这里提供一个其他人上传的源
siriuszg/kubernetes-dashboard-amd64:v1.10.0
大概直接利用这份写好的
kubectl apply -f http://raw.githubusercontent.com/usernamecantbeXXX/kubernetes-dashboard/master/kubernetes-dashboard.yaml
然后在第四步的地方,留意dashboard.yml中name是admin-user,背面天生token的describe secret的下令也必要写上对应的名字。
利用Rancher 2.1的的应用市肆做dashboard摆设,现在为止市肆上dashboard的版本照旧0.6.8大概0.8, 以是我修改了镜像源为 v.10.0版本
按应用市肆来搭建操纵很轻便,接下来只必要天生token:
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard | awk '{print $1}')
ps:
#token无穷逾期时间,修改工作负载dahbord的 yaml文件的token-ttl
- args:
- --auto-generate-certificates
- --token-ttl=0
3. Pipeline授权设置
3.1 相干设置
Rancher Pipeline设置的官方文档在此供参考:http://www.cnrancher.com/docs/rancher/v2.x/cn/tools/pipelines/configurations/
Gitlab版本必要在9以上,授权账号必须是项目标Maintainer(GitLab 8 内里是master),在GitLab中创建application,callbackurl在Rancher上复制。
设置完成后启用并表现堆栈列表:
设置镜像堆栈:
3.2 摆设流水线设置
选择一个项目,点击“编辑设置”。
如下图,进入修改流水线设置的界面,可以选择对应的分支举行设置。
步调1-Clone由Rancher主动写好;
步调2、3、4修改本身设置,各人按需修改;
我设置的流程分别是2-build(maven构建),3-publish(打包镜像并推送私有镜像堆栈),4-deploy(调用Rancher API,更新Pod镜像,完成项目主动摆设)。
3.2.1 运行脚本的当前目次
在设置Rancher Pipeline的时间,我们会实行一些Linux下令,那么起首要搞清晰下令实行的当前目次的层级。
Rancher的Pipeline,运行起来后也是一个Pod,构建也是基于Jenkins。
在集群的Default目次下的工作负载,可以找到一个x-xxxx-pipeline的定名空间,此中有一个Jenkins的Pod,这个pod启用Pipeline功能后就会出现,不停存在。
当我们运行一个pipeline后,会天生一个jenkins-slave-xxxxx的pod,睁开pod节点可检察pod的日记,也可以进入pod中实行下令,进去这个pod的控制台,实行
cd ./workspace/pipeline_p-cdk7j-13/
可以看到,pipeline第一步clone代码就是在该目次下举行的,这个也是我们在设置pipeline运行脚本的当前目次。
由于jenkins-slave-xxx这个pod是运行pipeline后动态创建的,属于用后即焚的模式,以是这个pod中拉下来的代码编译后的jar包大概前端dist目次静态文件,都要移动到将要打包的镜像目次中。
3.2.2 Build设置
那么知道了当前目次,就可以大胆的开始写设置了。
第一步 build,选择的范例是运行脚本,实行mvn clean package下令,选用的镜像是我本身打包maven3.6镜像。 假如公司有本身的maven私服,那么打包maven镜像的时间,可以设置好setting.xml文件,上传到前面设置的harbor堆栈就可以了;假如是本身的demo项目,那么也可以换成公共的maven:latest;这种环境下也可以把setting.xml上传到代码根目次中,在复制出来放到maven中,实用于不想打包maven镜像,但又有公司私服的环境
mkdir -p /root/.m2 && mv setting.xml /root/.m2
值得留意的是公共的maven:latest镜像,其jdk情况是openjdk,一些老项目用openjdk大概会有一些奇希奇怪的题目,无法通过mvn编译,我就碰到过项目中假如有图片验证码的时间,base64找不到jar包的环境,以是我才本身打包了个Oracle jdk的maven。
别的,mvn package 背面最好不要带 -U,带上会去查抄依靠的版本是否最新,会很慢很慢的。
3.2.3 Publish设置
这一步重要是用build构建后的包,根据代码中的Dockerfile打包成镜像,当前目次依然是git clone后的目次,指定Dockerfile的相对位置,并定名打包后的惊醒名,此中镜像名中的:${CICD_EXECUTION_SEQUENCE}是rancher提供的变量,我用这个来区分镜像的版本,有好几个,详细各人输入后去选择,也可以检察官方的文档。
下面讲下dockerfile的设置:
一样平常的web背景项目,mvn编译后把jar包放到tomcat目次中,此中的base_image是cnetos7 + tomcat8 + oraclejdk8:
而springboot项目由于内置了tomcat,就直接复制出jar到镜像目次中,然后直接运行:
对于前端的vue项目,底子镜像用的是dockerhub上的公共nodejs镜像node:current-slim,同样先把代码复制出来,再npm install,末了npm start (npm run dev),我是直接去跑dev情况。
ps:假如是build出静态文件的,可以再打包个nginx镜像:
别的,对于vue项目用dev情况的,要开放host限定:
/build/webpack.dev.conf.js
watchOptions: {
poll: config.dev.poll,
},
# 1.不查抄host
disableHostCheck: true
/config/index.js
proxyTable: {
'/updance': {
# 2.target指定为背景pod节点的ip+port
target: 'http://192.168.242.83:32583',
changeOrigin: true,
pathRewrite: {
'^/updance': '/updance'
}
}
},
# 3.host设置为0.0.0.0
host: '0.0.0.0'
3.2.4 Deploy设置
末了一步,调用Rancher的API更新pod节点,这里底子镜像选什么都可以了,由于不必要依靠镜像:
curl -k -u token-zcgsp:****************************************** \
-X PUT \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{"containers":[{"image":"harbor.bluemoon.com.cn/rancher/buying-center-parent:'${CICD_EXECUTION_SEQUENCE}'","name":"snc-backed"}]}' \
'http://192.168.242.80/v3/project/c-zrq7x:p-kql7m/workloads/deployment:default:snc-backed'
Rancher的API再pod节点的更多选项检察
3.3 运行pipeline
设置完成后,相干的设置会天生一份 .rancher-pipeline.yml 文件,可以下载到当地,也可以上传到对应的代码分支。
实行之前要先创建号pod节点,背面末了一步的API修改才气乐成实行。
实行过程可以及时观看运行日记, 各步调乐成实行就是绿色的,赤色的话就是失败,末了检察pod节点,可以看到pod主动更新。
以上就是Rancher 2.1从集群搭建到Pipeline摆设完成的完备的流程。
作者先容:
许先学,Java开辟工程师。
接待后续技能讨论 :[email protected]
简书地点:http://www.jianshu.com/u/749dce579f00
拓展阅读
怎样构建Kubernetes CI/CD流水线
怎样选择最佳CI工具:Drone VS. Jenkins
如安在Rancher2.0上快速摆设Datadog
About Rancher Labs
Rancher Labs由硅谷云盘算泰斗、CloudStack之父梁胜创建,致力于打造创新的开源软件,资助企业在生产情况中运行容器与Kubernetes。旗舰产物Rancher是一个开源的企业级Kubernetes平台,是业界首个且唯一可以管理全部云上、全部发行版、全部Kubernetes集群的平台。办理了生产情况中企业用户大概面对的底子办法差别的逆境,改善Kubernetes原生UI易用性不佳以及学习曲线陡峭的题目,是企业落地Kubernetes的不二之选。
Rancher在环球拥有凌驾一亿的下载量,凌驾20000家企业客户。环球着名企业如中国人寿、华为、中国安全、民生银行、兴业银行、上汽团体、海尔、米其林、天合光能、丰田、本田、霍尼韦尔、金风科技、普华永道、海南航空、厦门航空、恒大人寿、中国平静、巴黎银行、美国银行、HSCIS恒生指数、中国水利、暴雪、CCTV等均是Rancher的付费客户。
|