真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于Kubernetes1.16.0建立企業(yè)JenkinsCI/CD發(fā)布平臺(tái)

????隨著Kubernetes的普遍應(yīng)用,基于Kubernetes的jenkins發(fā)布模式也需要隨之做出一些改變,本博客基于之前搭建的Kubernetes 1.16.0高可用集群搭建一套企業(yè)級(jí)別Jenkins CI/CD發(fā)布流程。

為共和等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及共和網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、共和網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

????Jenkins采用Pipline發(fā)布,容器化部署,主從結(jié)構(gòu),Jenkins master負(fù)責(zé)調(diào)度slave,而slave進(jìn)行拉代碼,打包,構(gòu)建鏡像發(fā)布等操作,待發(fā)布完成后slave自動(dòng)消亡,不占用服務(wù)器資源。代碼存儲(chǔ)這里為了方便采用的Git倉庫,鏡像存儲(chǔ)采用最新的1.9.0 Harbor。

? ? 服務(wù)器資源:

? ? 172.30.0.109 k8smaster1 Harbor

? ? 172.30.0.81? ?k8smaster2?

? ? 172.30.0.89? ?k8snode1? ? Git倉庫

? ? 注意:master節(jié)點(diǎn)設(shè)置為可調(diào)度,也可作為node,運(yùn)行業(yè)務(wù)容器,K8S部署方案,請(qǐng)參考上一篇博客,在這里不過多描述。

????

????本博客中相關(guān)配置文件,后面會(huì)上傳到百度網(wǎng)盤中

????一、部署Harbor

????1、安裝docker-compose

? ? harbor需要基于docker-compose插件進(jìn)行安裝,管理

? ? # curl -L?https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m`?-o /usr/local/bin/docker-compose

? ? # chmod +x /usr/local/bin/docker-compose

? ? 2、安裝docker

? ? Harbor 1.9版本的docker驅(qū)動(dòng)需要至少18.03以上,請(qǐng)自行安裝

? ? 3、下載Harbor安裝包

? ? Github上面搜索Harbor

基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ? 4、修改harbor配置

? ? 修改haribor.yml,

??基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ? 若使用IP登錄,需要修改成IP地址,域名登錄,需要修改成域名,這里Harbor使用的是http模式,若要修改成https訪問,則要修改密鑰配置

? ? Harbor使用非安全認(rèn)證,docker需要修改安全配置,設(shè)置為新人非安全,否則無法上傳鏡像包

? ? docker.service配置如下

? ?基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ? 5、Harbor效果,正常上傳鏡像

基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????二、Git倉庫

? ? 生產(chǎn)建議使用Gitlab圖形化工具,方便管理

????1、初始化Git服務(wù)器

? ? 下載git

? ? # yum install git -y

? ? # useradd git

? ? # groupadd git

? ? # su - git 切換到git用戶,創(chuàng)建倉庫

? ? # mkdir tomcat-java-demo

? ? # cd tomcat-java-demo

????# git init --bare 初始化git

??基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????# git服務(wù)器初始化完成

????2、上傳代碼到Git倉庫

????解壓java demo代碼

? ? # unzip tomcat-java-demo.zip

????# cd?tomcat-java-demo

????# git init 初始化客戶端git,準(zhǔn)備上傳代碼至遠(yuǎn)程服務(wù)端

????# git add . 添加代碼至本地git倉庫

????# git commit -m 'test'

????#?git remote add origin git@172.30.0.89:/home/git/tomcat-java-demo 設(shè)置git倉庫為遠(yuǎn)程客戶端

????# git push origin master 上傳代碼至遠(yuǎn)程客戶端master分支

????驗(yàn)證代碼是否正常上傳:

????重新創(chuàng)建一個(gè)目錄,初始化git,拉取代碼

????# mkdir test && cd test

????# git init && git?remote add origin git@172.30.0.89:/home/git/tomcat-java-demo

????# git pull origin master

????代碼拉取成功,上傳代碼無誤


????上傳代碼至指定分支,如1.0.0

????本地創(chuàng)建1.0.0的分支,切換到1.0.0分支,因?yàn)槟J(rèn)是在master分支,然后上傳代碼到遠(yuǎn)程1.0.0分支

????# git branch 1.0.0 創(chuàng)建1.0.0分支

????# git checkout 1.0.0 切換到1.0.0分支

????# git push origin 1.0.0 代碼上傳到遠(yuǎn)程1.0.0

????會(huì)在遠(yuǎn)程git服務(wù)器上看到多了一個(gè)1.0.0分支

????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????三、Jenkins部署

????1、部署Jenkins master

????????[root@k8s-master1 jenkins]# cat jenkins.yml?

????????apiVersion: apps/v1

????????kind: StatefulSet

????????metadata:

????????? name: jenkins

????????? labels:

????????? ? name: jenkins

????????spec:

????????? serviceName: jenkins

????????? replicas: 1

????????? updateStrategy:

????????? ? type: RollingUpdate

????????? selector:

????????? ? matchLabels:

????????? ? ? name: jenkins

????????? template:

????????? ? metadata:

????????? ? ? name: jenkins

????????? ? ? labels:

????????? ? ? ? name: jenkins

????????? ? spec:

????????? ? ? terminationGracePeriodSeconds: 10

????????? ? ? serviceAccountName: jenkins

????????? ? ? #imagePullSecrets:

????????? ? ? #? - name: registry-pull-secret?

????????? ? ? nodeName: k8s-master1

????????? ? ? containers:

????????? ? ? ? - name: jenkins

????????? ? ? ? ? image: jenkins/jenkins:lts

????????? ? ? ? ? imagePullPolicy: IfNotPresent

????????? ? ? ? ? ports:

????????? ? ? ? ? ? - containerPort: 8080

????????? ? ? ? ? ? - containerPort: 50000

????????? ? ? ? ? resources:

????????? ? ? ? ? ? limits:

????????? ? ? ? ? ? ? cpu: 1

????????? ? ? ? ? ? ? memory: 1Gi

????????? ? ? ? ? ? requests:

????????? ? ? ? ? ? ? cpu: 0.5

????????? ? ? ? ? ? ? memory: 500Mi

????????? ? ? ? ? env:

????????? ? ? ? ? ? - name: LIMITS_MEMORY

????????? ? ? ? ? ? ? valueFrom:

????????? ? ? ? ? ? ? ? resourceFieldRef:

????????? ? ? ? ? ? ? ? ? resource: limits.memory

????????? ? ? ? ? ? ? ? ? divisor: 1Mi

????????? ? ? ? ? ? - name: JAVA_OPTS

????????? ? ? ? ? ? ? # value: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XX:MaxRAMFraction=1 -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85

????????? ? ? ? ? ? ? value: -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85

????????? ? ? ? ? volumeMounts:

????????? ? ? ? ? ? - name: data

????????? ? ? ? ? ? ? mountPath: /var/jenkins_home

????????? ? ? securityContext:

????????? ? ? ? fsGroup: 1000

????????? ? ? volumes:

????????? ? ? - name: data

????????? ? ? ? hostPath:

????????? ? ? ? ? path: /app/jenkins

????????

????????---

????????apiVersion: v1

????????kind: Service

????????metadata:

????????? name: jenkins

????????spec:

????????? type: NodePort

????????? selector:

????????? ? name: jenkins

????????? ports:

????????? ? -

????????? ? ? name: http

????????? ? ? port: 80

????????? ? ? targetPort: 8080

????????? ? ? protocol: TCP

????????? ? ? nodePort: 30009

????????? ? -

????????? ? ? name: agent

????????? ? ? port: 50000

????????? ? ? protocol: TCP

????對(duì)jenkins容器進(jìn)行授權(quán)

????[root@k8s-master1 jenkins]# cat rbac.yaml?

????# In GKE need to get RBAC permissions first with

????# kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin [--user=|--group=]

????

????---

????apiVersion: v1

????kind: ServiceAccount

????metadata:

????? name: jenkins

????

????---

????kind: Role

????apiVersion: rbac.authorization.k8s.io/v1beta1

????metadata:

????? name: jenkins

????rules:

????- apiGroups: [""]

????? resources: ["pods"]

????? verbs: ["create","delete","get","list","patch","update","watch"]

????- apiGroups: [""]

????? resources: ["pods/exec"]

????? verbs: ["create","delete","get","list","patch","update","watch"]

????- apiGroups: [""]

????? resources: ["pods/log"]

????? verbs: ["get","list","watch"]

????- apiGroups: [""]

????? resources: ["secrets"]

????? verbs: ["get"]

? ?---

????apiVersion: rbac.authorization.k8s.io/v1beta1

????kind: RoleBinding

????metadata:

????? name: jenkins

????roleRef:

????? apiGroup: rbac.authorization.k8s.io

????? kind: Role

????? name: jenkins

????subjects:

????- kind: ServiceAccount

????? name: jenkins

? ? # kubectl apply -f rbac.yaml? ?

????# kubectl apply -f jenkins.yaml

? ? 訪問http://172.30.0.109:30009?打開Jenkins web頁面,插件安裝默認(rèn)就好,之后再到插件管理頁面自行安裝需要的插件

??基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????2、Jenkins系統(tǒng)配置

? ? ①集成Kubernetes到Jenkins中

? ? 在系統(tǒng)管理的系統(tǒng)設(shè)置中,修改配置

? ??基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????修改后可以進(jìn)行連接測試,在右下角

????②下載Jenkins與Kubernetes集成的插件

? ? ? 在系統(tǒng)管理的插件管理中

? ? ? Kubernetes

? ? ? Kubernetes Continuous Deploy

? ? ? Extended Choice Parameter

? ? ③配置Git倉庫訪問密鑰以及Jenkins容器訪問Kubernetes使用的kubeconfig配置

? ? 在憑據(jù)中

? ?基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ??????訪問Git服務(wù)器的密鑰,只需要做Jenkins服務(wù)器到Git無密登錄,并復(fù)制Jenkins所在服務(wù)器的私鑰到以上位置,即可實(shí)現(xiàn)代碼拉取過程的無密登錄

????????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????將K8S集群/root/.kube/config文件復(fù)制到以上地區(qū),使Jenkins可以訪問K8S集群,部署pod

????3、Jenkins slave

?????構(gòu)建Jenkins Slave,再Jenkins上通過Pipline流水線調(diào)用JnekinsFile進(jìn)行發(fā)布操作?

??????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ? ?Jenkins Slave Dockerfile:

??????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ? 構(gòu)建鏡像

? ? # docker build -t 172.30.0.109/wujqc/jenkins-slave:lts -f dockerfile-jenkins-slave .

? ? 上傳到Harbor上

? ? # docker login 172.30.0.109

? ? 輸入harbor管理員賬號(hào)密碼,進(jìn)行登錄

? ? # docker push?172.30.0.109/wujqc/jenkins-slave:lts

? ?

????4、創(chuàng)建Pipline發(fā)布Java項(xiàng)目到K8S環(huán)境

? ? ①創(chuàng)建流水線項(xiàng)目

?????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????②設(shè)置參數(shù)化構(gòu)建

????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????可以通過標(biāo)簽,字符參數(shù)指定代碼分支,Branch等多種方式去拉取Git,Gitlab指定位置的代碼,進(jìn)行編譯,這里采用的是字符參數(shù)指定代碼分支的方式

????③配置Pipline流水線

????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????設(shè)置git地址,配置能夠拉取git的免登錄密鑰(前面配置的)

????通過字符參數(shù)Tag,獲取到想要編譯的代碼分支,如1.0.0,載入變量origin/1.0.0拉取代碼,在拉取的代碼中讀取JenkinsFile進(jìn)行下一步Jenkins Slave的maven構(gòu)建,鏡像構(gòu)建,K8S deploy操作

????可以說整個(gè)Jenkins項(xiàng)目中,是通過${Tag}版本去拉取指定分支的JenkinsFile以及代碼,在此基礎(chǔ)上進(jìn)行的流水線式部署,JenkinsFile中封裝的就是整個(gè)打包編譯,拉取指定服務(wù)的dockerfile,deploy.yaml,構(gòu)建鏡像,上傳鏡像,部署K8S deploy.yaml的流水線操作。

????注意:JenkinsFile需要在git代碼路徑中,要不然Jenkins識(shí)別不到,會(huì)報(bào)NotFoundFile

? ? JenkinsFile文件如下:

? ??基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????注意:這兩處ID,需要替換成Jenkins上面的git,kubeconfig密鑰ID

????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

? ? 因?yàn)镴enkins Slave需要要到Docker進(jìn)行鏡像構(gòu)建,上傳操作,于是將docker以掛載的方式放入Jenkins Slave中,讓其能夠使用

????Download Deploy File操作,是為了區(qū)分各個(gè)系統(tǒng)服務(wù),微服務(wù)模塊,因?yàn)椴煌姆?wù)模塊,其deploy.yaml以及Dockerfile可能都不一樣,所以需要有一個(gè)統(tǒng)一管理的路徑去獲取到這兩個(gè)文件,方便管理,只需要將目錄掛載到Jenkins Slave中即可,這個(gè)路徑,可以采用NFS,在這里為了方便使用的hostpath,生產(chǎn)不建議這么使用

????

????5、啟動(dòng)Pipline項(xiàng)目,輸入分支號(hào)1.0.0

????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????基于Kubernetes 1.16.0 建立企業(yè)Jenkins CI/CD發(fā)布平臺(tái)

????構(gòu)建成功!


當(dāng)前名稱:基于Kubernetes1.16.0建立企業(yè)JenkinsCI/CD發(fā)布平臺(tái)
文章分享:http://weahome.cn/article/pjcodh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部