1、在k8s集羣安裝jenkins前端
(1)在master1上安裝nfs服務node
yum install nfs-utils -yweb
systemctl start nfsdocker
(2)在master1上建立nfs共享目錄api
mkdir /data/v1 -p瀏覽器
cat /etc/exports網絡
/data/v1 192.168.80.0/24(rw,no_root_squash)app
exportfs -arv 使配置文件生效ide
systemctl restart nfs測試
(1)建立名稱空間
kubectl create namespace jenkins-k8s
(2)建立pv
cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-k8s-pv
spec:
capacity:
storage: 10Gi
accessModes:
ReadWriteMany
nfs:
server: 192.168.80.180
path: /data/v1
kubectl apply -f pv.yaml
(3)建立pvc
cat pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: jenkins-k8s-pvc
namespace: jenkins-k8s
spec:
resources:
requests: storage: 10Gi
accessModes:
- ReadWriteMany
查看pvc和pv綁定狀態
kubectl get pvc -n jenkins-k8s
(4)建立sa帳號
kubectl create sa jenkins-k8s-sa -n jenkins-k8s
(5)把sa帳號作rbac受權
kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa
(6)經過deployment部署jenkins
cat jenkins-deployment.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
name: jenkins
namespace: jenkins-k8s
spec:
replicas: 1
selector:
matchLabels: app: jenkins
template:
metadata: labels: app: jenkins spec: serviceAccount: jenkins-k8s-sa containers: - name: jenkins image: jenkins/jenkins:lts imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: web protocol: TCP - containerPort: 50000 name: agent protocol: TCP resources: limits: cpu: 1000m memory: 1Gi requests: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: /login port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 failureThreshold: 12 readinessProbe: httpGet: path: /login port: 8080 initialDelaySeconds: 60 timeoutSeconds: 5 failureThreshold: 12 volumeMounts: - name: jenkins-volume subPath: jenkins-home mountPath: /var/jenkins_home volumes: - name: jenkins-volume persistentVolumeClaim: claimName: jenkins-k8s-pvc
chown -R 1000 /data/v1
kubectl apply -f jenkins-deployment.yaml
kubectl get pods -n jenkins-k8s
(7)把jenkins前端加上service,提供外部網絡訪問
cat jenkins-service.yaml
apiVersion: v1
kind: Service
metadata:
name: jenkins-service
namespace: jenkins-k8s
labels:
app: jenkins
spec:
selector:
app: jenkins
type: NodePort
ports:
name: web
port: 8080
targetPort: web
nodePort: 30002
name: agent
port: 50000
targetPort: agent
kubectl apply -f jenkins-service.yaml
kubectl get svc -n jenkins-k8s
2、配置Jenkins
在瀏覽器訪問jenkins的web界面:
http://192.168.80.199:30002/login?from=%2F
在nfs服務端,也就是master1節點獲取密碼:
cat /data/v1/jenkins-home/secrets/initialAdminPassword
把上面獲取到的密碼拷貝到上面管理員密碼下的方框裏
點擊繼續,出現以下界面
安裝插件
插件安裝好以後顯示以下:
修改好以後點擊保存並完成,出現以下界面
點擊保存並完成,出現以下界面
點擊保存並完成,出現以下界面
3、測試jenkins的CI/CD
(1)在jenkins中安裝k8s插件
Manage Jnekins------>Manage Plugins------>可選插件------>搜索kubernetes------>出現以下
選中kubernetes以後------>點擊下面的直接安裝------>安裝以後選擇從新啓動jenkins--->重啓以後登錄jenkins便可
(1)點擊系統管理->系統設置-新增一個雲,在下拉菜單中選擇kubernets並添加
(2)填寫雲kubernetes配置內容
(3)測試jenkins和k8s是否能夠通訊
點擊鏈接測試,若是顯示Connection test successful,說明測試成功,Jenkins能夠和k8s進行通訊
應用------>保存
(1)配置pod template
系統管理------>系統設置------>添加Pod模板------>Kubernetes Pod Template--->按以下配置
(2)在上面的pod template下添加容器
添加容器------>Container Template------>按以下配置------>
在pod template右下腳有一個Advanced,點擊Advanced,出現以下
在Service Account處輸入jenkins-k8s-sa,這個sa就是咱們開始安裝jenkins時的sa
(3)給上面的pod template添加捲
添加捲------>選擇Host Path Volume
上面配置好以後,應用------>保存
首頁------>憑據------>點擊Stores scoped to Jenkins下的jenkins,顯示以下----->
點擊這個全局憑據,出現以下------>
username:xianchao
password:1989*****
ID:dockerhub
描述:
上面改好以後選擇肯定便可
3、測試經過Jenkins部署k8s
回到首頁:
新建一個任務------>在任務名稱處輸入jenkins-variable-test-deploy------>流水線------>肯定------>在Pipeline script處輸入以下內容
node('testhan') {
stage('Test') { echo "Test Stage" } }
應用------>保存------>當即構建便可
打開BlueOcean,出現以下界面
願與你們共勉之