k8s+jenkins+harbor構建Devops平臺

一、環境準備

1、準備一主一從k8s機器,(設備好可以一主多從也行)

2、一臺harbor倉庫機器(dockerhub訪問不了)

二、安裝nfs服務

1、在k8s機器上

yum install nfs-utils -y
systemctl start nfs
systemctl enable nfs

2、創建共享目錄

mkdir /data/v1 -p    #看你喜歡chown -R 1000.1000 /data/v1
vim /etc/exportfs/data/v1 192.168.200.0/24(rw,no_root_squash)
##使配置文件生效
exportfs -arv
systemctl restart nfs

#######為了后面pod的pv和pvc持久化存儲

三、安裝jenkins

1、創建命名空間

kubectl create namespace jenkins-k8s

2、創建pv

[root@master1 ~]# cat pv.yaml 
apiVersion: v1 
kind: PersistentVolume 
metadata: name: jenkins-k8s-pv 
spec: capacity: storage: 10Gi accessModes: - ReadWriteMany nfs: server: 192.168.200.20 path: /data/v2#創建資源清單kubectl apply -f pv.yaml

查看pv是否創建成功

kubectl get pv

3、創建pvc

[root@master1 ~]# cat pvc.yaml 
kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: name: jenkins-k8s-pvc namespace: jenkins-k8s 
spec: resources: requests: storage: 10Gi accessModes: - ReadWriteMany#創建資源清單
kubectl apply -f pvc.yaml
kubectl get pvc -n jenkins-k8s

4、創建sa賬號(在k8s中與Kubernetes API 的交互)

kubectl create sa jenkins-k8s-sa -n jenkins-k8s

做rbac授權

kubectl create clusterrolebinding jenkins-k8s-sa-cluster -n jenkins-k8s --clusterrole=cluster-admin --serviceaccount=jenkins-k8s:jenkins-k8s-sa###把名為 jenkins-k8s-sa 的 ServiceAccount 綁定到 cluster-admin ClusterRole,從而賦予它 整個集群的管理員權限。
Jenkins 使用這個 SA 啟動后,通過 Kubernetes 插件或 kubectl 調用 API 時,會有集群管理員權限。

5、過 deployment 部署 jenkins

#jenkins的鏡像要在2.4版本上,否則有一些插件安裝不了、

[root@master1 ~]# cat jenkins-deployment.yaml 
kind: Deployment
apiVersion: apps/v1
metadata:name: jenkinsnamespace: jenkins-k8s
spec:replicas: 1selector:matchLabels:app: jenkinstemplate:metadata:labels:app: jenkinsspec:serviceAccount: jenkins-k8s-sacontainers:- name: jenkinsimage: jenkins/jenkins:ltsimagePullPolicy: IfNotPresentports:- containerPort: 8080name: webprotocol: TCP- containerPort: 50000name: agentprotocol: TCPresources:limits:cpu: 1000mmemory: 1Girequests:cpu: 500mmemory: 512MilivenessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 90timeoutSeconds: 45failureThreshold: 2readinessProbe:httpGet:path: /loginport: 8080initialDelaySeconds: 90timeoutSeconds: 45failureThreshold: 2volumeMounts:- name: jenkins-volumesubPath: jenkins-homemountPath: /var/jenkins_homevolumes:- name: jenkins-volumepersistentVolumeClaim:claimName: jenkins-k8s-pvc
kubectl apply -f jenkins-deployment.yaml

6、service外部網絡訪問

[root@master1 ~]# cat jenkins-service.yaml 
apiVersion: v1
kind: Service
metadata:name: jenkins-servicenamespace: jenkins-k8slabels:app: jenkins
spec:selector:app: jenkinstype: NodePortports:- name: webport: 8080targetPort: webnodePort: 30002- name: agentport: 50000targetPort: agent

7、登陸web頁面配置

192.168.200.20:30002

1、獲取密碼

不是頁面顯示那個

cat /data/v1/jenkins-home/secrets/initialAdminPassword

2、按照頁面顯示安裝推薦插件(不行的話也沒事)

3、創建管理員用戶

四、jenkins 的 CI/CD

1、安裝kubernetes插件

(我已經安裝了)

2、安裝 blueocean 插件

這是一個提供現代化、可視化、用戶友好的 Pipeline 展示界面

重啟之后登陸 jenkins,插件即可生效

五、配置 jenkins 連接?k8s 集群

這個地址由Kubernetes 中 Service 的名字+命名空間+svc.cluster.local+端口號

http://jenkins-service.jenkins-k8s.svc.cluster.local:8080

六、配置pod模板

這個看主要項目是怎么執行的

這個jnlp鏡像作用是:

Jenkins 構建任務的執行容器

它的職責就是:啟動后用 JNLP 協議連上 Jenkins Master,然后等著執行任務。

Jenkins Master 不負責跑任務,只負責調度,真正的構建/部署任務是在 Agent(jnlp 容器)里跑的

(因為我的jenkins是用k8s跑的)

鏡像是在harbor倉庫里,也可以直接用其他的,就是會慢

##添加卷
/var/run/docker.sock 
/var/run/docker.sock /root/.kube 
/home/jenkins/.kube

保存就可以了

七、配置憑據

我用harbor倉庫,配的是harbor的賬號密碼

八、通過 Jenkins 部署應用發布到 k8s 開發環境、測試環境、生產環境

1、編寫pipeline腳本

主要就是看腳本怎么編寫了

最后大功告成,流程是這么個流程,大差不差


####差不多是點點點,主要是pod.yaml編寫和pipeline腳本的編寫,怎么去貫通,提升效率,最重要的也是這個了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98658.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98658.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98658.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

為什么 socket.io 客戶端在瀏覽器能連上,但在 Node.js 中報錯 transport close?

網羅開發(小紅書、快手、視頻號同名)大家好,我是 展菲,目前在上市企業從事人工智能項目研發管理工作,平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術,包括iOS、前端、Harmony OS、Java、Python等方…

人才教育導向下:老年生活照護實訓室助力提升學生老年照護服務能力

一、老年生活照護實訓室建設背景與意義 (一)適應老齡化社會需求 我國老齡化程度持續加深,老年照護服務人才缺口不斷擴大。培養專業照護人才成為當務之急,職業教育需承擔重要責任。點擊獲取實訓室建設方案 (二&…

我在嘉順達藍海的安全堅守

作為嘉順達藍海的資深安全員,每天清晨 6 點,我都會站在物流基地的入口處,看著一隊隊橙色的嘉順達藍海危險品運輸車整齊列隊。那抹醒目的橙色,不僅是嘉順達藍海的標志,更是我和 200 多名同事堅守 12 年的安全承諾。今天…

云原生監控系統 Prometheus大總結 20250909

本章內容如下: Prometheus 介紹 Prometheus 部署和配置 Node Exporter 采集數據 Pushgateway 采集數據 PromQL 查詢語言 Grafana 圖形化展示 Prometheus 標簽管理 Prometheus 告警機制 Prometheus 服務發現 各種Exporter 高級功能 Prometheus 實現容器監控 Promethe…

EPNN:基于嵌入式偏振神經網絡的水下成像增強方法(未做完)

Enhancing Underwater Imaging for Robot through Embedded Polarization Neural Network EPNN:基于嵌入式偏振神經網絡的水下成像增強方法 1 論文核心概念 本文提出了一種名為嵌入式偏振神經網絡(Embedded Polarization Neural Network, EPNN) 的方法,用于顯著提升水下…

基于單片機冷藏運輸車環境檢測/水產品運輸環境檢測設計

傳送門 👉👉👉👉單片機作品題目速選一覽表🚀 👉👉👉👉單片機作品題目功能速覽🚀 🔥更多文章戳👉小新單片機-CSDN博客&#x1f68…

基于STM32設計的人體健康監護系統(華為云IOT)_280

文章目錄 一、前言 1.1 項目介紹 【1】項目開發背景 【2】設計實現的功能 【3】項目硬件模塊組成 【4】設計意義 【5】國內外研究現狀 【6】摘要 1.2 設計思路 1.3 系統功能總結 1.4 開發工具的選擇 【1】設備端開發 【2】上位機開發 1.5 參考文獻 1.6 系統框架圖 1.7 系統原理…

先買實現煩過

#include <myhead.h> #define ERR_LOG(msg)do{perror(msg);printf("%d %s %s\n",__LINE__,__func__,__FILE__);}while(0) //定義TFTP默認端口號&#xff08;69&#xff09;和數據包大小&#xff08;516字節&#xff09; #define PORT 69 #define N 516 …

ACD智能分配:輪流分配和排序上限分配的設置

在客戶服務中&#xff0c;合理的對話分配是提高服務質量的關鍵。一洽客服系統針對不同業務場景,提供靈活的客服分配策略,幫助企業實現智能化的客戶服務管理&#xff0c;今天我們了解一下對話的輪流分配、排序上限分配、排序優先分配的設置一、輪流分配按照客服登錄系統的先后順…

【postMan / apifox 文件上傳】

apifox 需要提供相關插件 失敗的請求 { “timestamp”: “2025-09-10T14:44:24.91900:00”, “status”: 500, “error”: “Internal Server Error”, “path”: “/student/import” } 錯誤&#xff1a;Post “http://localhost:8080/student/import”: dial tcp [::1]:8080:…

視頻加水印,推薦使用運營大管家-視頻批量加水印軟件

運營大管家-視頻批量加水印軟件介紹“運營大管家-視頻批量加水印”是一款功能強大的桌面應用程序&#xff0c;旨在幫助用戶高效地為多個視頻批量添加自定義水印。無論是品牌宣傳、版權保護&#xff0c;還是個性化展示&#xff0c;本軟件都能提供靈活的文字水印和圖片水印選項&a…

基于 Dockerfile 構建鏡像

1.準備構建上下文[roothost1 ~]# mkdir dockerfile-test && cd dockerfile-test [roothost1 dockerfile-test]# touch nginx.repo [roothost1 dockerfile-test]# touch Dockerfile [roothost1 dockerfile-test]# vi nginx.repo [roothost1 dockerfile-test]# cat nginx…

[Dify實戰]插件編寫- 如何讓插件直接輸出文件對象(支持 TXT、Excel 等)

在大多數 Dify 插件開發中,我們習慣于讓插件返回結構化文本、字典或 JSON 數據。但隨著應用場景拓展,例如翻譯文件、生成報表、處理數據分析結果等,我們需要讓插件支持“直接返回文件對象”給用戶,而不是讓用戶復制粘貼文本再手動保存。 本文將基于實戰經驗,詳細介紹如何…

Thread類的基本用法(上)

一、線程創建方法&#xff08;5種&#xff09;1.繼承Thread類class MyThread extends Thread {Overridepublic void run() {System.out.println("MyThread is running");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}…

ARM內存映射與啟動地址重映射機制解析

目錄 內存映射 1. 核心概念&#xff1a;內存映射 (Memory Map) 2. 啟動過程與地址重映射 (Remapping) 關鍵&#xff1a;啟動引腳 (Boot Pins) 這個過程可以類比&#xff1a; 3. 為什么設計成這樣&#xff1f; 4. 一圖流總結 圖解說明&#xff1a; 核心要點&#xff1a;…

網絡原理——傳輸層協議TCP基本認識

文章目錄傳輸層協議TCP基本認識TCP協議的格式TCP的可靠性初步理解——確認應答機制暫時理解TCP的通信過程TCP的確認號和確認序號確認號和確認序號的意義捎帶應答TCP中其他字段的理解16位窗口大小標志位標志位的本質標志位的意義以SYN ACK標志位簡單理解TCP連接三次握手以FIN標…

Java HTTP響應的流式處理技術

第1章 引言 1.1 傳統HTTP響應處理的局限性 在現代Web應用開發中,HTTP通信是系統間數據交換的核心方式。隨著數據量的不斷增長和實時性要求的提高,傳統的HTTP響應處理方式逐漸暴露出諸多問題。 傳統處理方式通常需要將整個HTTP響應體一次性加載到內存中,然后再進行處理。這…

D01-【計算機二級】Python(1)基本操作第41題

1、考生文件夾下存在一個文件 PY101.py&#xff0c;請寫代碼替換橫線&#xff0c;不修改其他代碼&#xff0c;實現以下功能: 鍵盤輸入正整數 n&#xff0c;按要求把 n 輸出到屏幕&#xff0c;格式要求&#xff1a;寬度為 20 個字符&#xff0c;減號字符 - 填充&#xff0c;右對…

工程師 - Onion Architecture in Software Development

Introduction 介紹 In the ever-evolving world of software development, finding the right architectural pattern is akin to selecting the foundation for a building. One such architectural paradigm that has gained recognition for its ability to promote mainta…

TightVNC功能介紹

TightVNC是一款跨平臺的遠程桌面工具&#xff0c;支持Windows、Linux等系統&#xff0c;通過高效壓縮技術實現低帶寬環境下的流暢控制。以下是詳細的使用說明&#xff1a; 一、安裝與配置 1. Windows系統 下載與安裝 訪問TightVNC官網下載安裝包&#xff0c;運行后選擇“Comp…