登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 1009|回复: 0

Rancher2.1从集群搭建到Pipeline摆设完备教程

[复制链接]

164

主题

164

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-1-31 04:48:42 | 显示全部楼层 |阅读模式 来自 江苏徐州
编者按:


本文来自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账户
- 主机名仅只支持包罗 - 和 .(中横线和点)两种特别符号,不能重复


设置要求最好按照官方发起的来:


VIngnv77GzIVP69o.jpg

# 创建 /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



FTK1d1OGGoGy1loz.jpg

我搭设的是1server、2master、2node的集群 ,选择好脚色,粘贴至各主机去运行,在高级选项中写上对应的主机外网ip;master只选择etcd和control,node只选择worker;多master实现高可用也是没题目的。


nIPk42Qf1U54sCzD.jpg
添加集群



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 文件有没有从集群复制过来


N6iHIdxdU0iF6uxc.jpg

手动安装Dashboard


现在我实验过两种方法,下面分别举行先容。



  • 方法1:


利用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的下令也必要写上对应的名字。



  • 方法2:


利用Rancher 2.1的的应用市肆做dashboard摆设,现在为止市肆上dashboard的版本照旧0.6.8大概0.8, 以是我修改了镜像源为 v.10.0版本


zFpoTPCow08FpjcF.jpg

按应用市肆来搭建操纵很轻便,接下来只必要天生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上复制。


Z0C8wN93Nk136l6c.jpg

TqMMxK8frsf33kLJ.jpg

设置完成后启用并表现堆栈列表:


pZfeUnn424jgGOf0.jpg

设置镜像堆栈:


XB5J5r7fZ5k5R5k7.jpg

3.2 摆设流水线设置


选择一个项目,点击“编辑设置”。


rET8wxKU3trIfNp2.jpg

如下图,进入修改流水线设置的界面,可以选择对应的分支举行设置。


步调1-Clone由Rancher主动写好;
步调2、3、4修改本身设置,各人按需修改;
我设置的流程分别是2-build(maven构建),3-publish(打包镜像并推送私有镜像堆栈),4-deploy(调用Rancher API,更新Pod镜像,完成项目主动摆设)。


pkrKGsQSOsEGeQzt.jpg

3.2.1 运行脚本的当前目次


在设置Rancher Pipeline的时间,我们会实行一些Linux下令,那么起首要搞清晰下令实行的当前目次的层级。


Rancher的Pipeline,运行起来后也是一个Pod,构建也是基于Jenkins。


在集群的Default目次下的工作负载,可以找到一个x-xxxx-pipeline的定名空间,此中有一个Jenkins的Pod,这个pod启用Pipeline功能后就会出现,不停存在。


EAG7OtTYzXy7AFxn.jpg

当我们运行一个pipeline后,会天生一个jenkins-slave-xxxxx的pod,睁开pod节点可检察pod的日记,也可以进入pod中实行下令,进去这个pod的控制台,实行


cd ./workspace/pipeline_p-cdk7j-13/


可以看到,pipeline第一步clone代码就是在该目次下举行的,这个也是我们在设置pipeline运行脚本的当前目次。


RuXKkFLzJGOoAkh4.jpg

由于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,带上会去查抄依靠的版本是否最新,会很慢很慢的。


h5tTiZBjjfWTwGpl.jpg

3.2.3 Publish设置


这一步重要是用build构建后的包,根据代码中的Dockerfile打包成镜像,当前目次依然是git clone后的目次,指定Dockerfile的相对位置,并定名打包后的惊醒名,此中镜像名中的:${CICD_EXECUTION_SEQUENCE}是rancher提供的变量,我用这个来区分镜像的版本,有好几个,详细各人输入后去选择,也可以检察官方的文档。


BP15CNL1116GCsv5.jpg

下面讲下dockerfile的设置:


一样平常的web背景项目,mvn编译后把jar包放到tomcat目次中,此中的base_image是cnetos7 + tomcat8 + oraclejdk8:


Q8T64DP8wh0qfTfM.jpg

而springboot项目由于内置了tomcat,就直接复制出jar到镜像目次中,然后直接运行:


SwTTiWE1YYu7115y.jpg

对于前端的vue项目,底子镜像用的是dockerhub上的公共nodejs镜像node:current-slim,同样先把代码复制出来,再npm install,末了npm start (npm run dev),我是直接去跑dev情况。


ps:假如是build出静态文件的,可以再打包个nginx镜像:


Yt3TLQ9lT3dyT9dT.jpg

别的,对于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节点,这里底子镜像选什么都可以了,由于不必要依靠镜像:


UIixtKFtnB6LzNtJ.jpg

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节点的更多选项检察


D7fipF4YwWW4EfO7.jpg

LCXx993OY3F3yO9R.jpg

3.3 运行pipeline


设置完成后,相干的设置会天生一份 .rancher-pipeline.yml 文件,可以下载到当地,也可以上传到对应的代码分支。


实行之前要先创建号pod节点,背面末了一步的API修改才气乐成实行。


实行过程可以及时观看运行日记, 各步调乐成实行就是绿色的,赤色的话就是失败,末了检察pod节点,可以看到pod主动更新。


V0bhRffbAUVhp80m.jpg

以上就是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的付费客户。
eOFO77RsrMZosFsm.jpg




上一篇:王欣或将推出新交际产物丸子视频
下一篇:教你两小时入门Docker
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-5-18 14:18 , Processed in 0.066070 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表