rancher的使用

一 CICD的意思

1 持续集成(CI)

持续集成指在和向远程仓库 push 代码后,在这次提交合并入主分支前进行一系列测试,构建等流程。假设现在有个应用的代码存储在 gitlab 上,每天开发者都 push 很多次提交,针对每次 push,你可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率。这就是持续集成,它可应用在包括开发分支在内的多个分支上。

2 持续交付(CD)

持续交付的英文全称是:Continuous delivery,缩写也是CD,它是一种软件工程手法。

它可以让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。它的目标在于让软件的建置、测试与释出变得更快以及更频繁。这种方式可以减少软件开发的成本与时间,减少风险。

3 持续部署(CD)

持续部署在持续集成的基础上更进一步,指将推送指仓库默认分支的部署至产品环境。如果这部分需要手动触发,这就是一个持续交付(Continuous Delivery)环节。

二 常用的CICD软件对比

所以这次主要介绍rancher的使用,它的官网文档为https://rancher2.docs.rancher.cn/,详情请查看官方文档

三 rancher的安装和使用

1 安装(这里我用的是单节点容器安装)


docker run -d --restart=unless-stopped 
    -p 80:80 -p 443:443 
    rancher/rancher:latest

单节点安装很方便。然后等待一会,可以去浏览器访问即可。如下图:需要自己设置一下密码

2 导入k8s集群

点击web页面导入集群,然后出现两行命令(都是自动生成的,只需要去master节点执行一下即可)

在主节点上面执行,绑定一个用户 --user 后面的用户,去你.kube/cofig里面查看
kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user kubernetes-admin

然后再在主节点运行下面命令


curl --insecure -sfL https://192.168.0.211/v3/import/7kgj6rwfg88c7pttkzp7w7ztdsf77wcfwgtr84sh6dw482zr58lm5s.yaml | kubectl apply -f -

然后等待一会,集群就导入成功了

3 设置流水线

3.1 前提

设置流水线之前,需要安装gitlab代码仓库和harbor镜像仓库,这里我的gitlab是用容器安装的,harbor仓库是用的官方的仓库,自己注册一个就行

安装gitlab,可以先下载镜像,在运行,然后更改一下gitlab配置文件里面的host

docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce

3.2 rancher设置

认证harbor镜像仓库:


然后添加harbor仓库

gitlab生成需要的ID和Key

认证gitlab代码仓库:


然后就可以自动同步代码,设置流水线了

第一步克隆是默认的(是认证仓库的时候自动生成的),不能更改,我这里是一个java项目,然后打包

然后构建镜像,需要提交认证镜像仓库地址

最后发布

deploy.yml文件内容如下:(这个文件也要放到gitlab仓库里面)

---
apiVersion: extensions/v1beta1 
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: java-demo
  template:
    metadata:
      labels:
        app: java-demo 
    spec:
      containers:
      - name: tomcat 
        image: huningfei/rancher:docker_tag
        ports:
        - containerPort: 8080
          name: web
        livenessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          timeoutSeconds: 5
          failureThreshold: 12


---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  type: NodePort
  selector:
    app: java-demo 
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 30002

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: web 
spec:
  rules:
  - host: www.hu.com
    http:
      paths:
      - path: /
        backend:
          serviceName: web 
          servicePort: 80

最后发布完成之后,可以去资源---工作负载里面查看
也可以通过命令查看
查看pod

查看svc

最终去浏览器访问www.hu.com

4 用rancher部署pod

找到工作负载

创建成功之后显示

然后就可以利用nodeport端口去浏览器访问了

原文地址:https://www.cnblogs.com/huningfei/p/12836862.html