1、k8s1.28.2、helm3.12.0,集群搭建
查看節點運行情況
kubectl get node -o wide
openebs部署情況
kubectl get sc -n openebs
2、添加Jenkins Helm倉庫
helm repo add jenkins https://charts.jenkins.iohelm repo update# 查看版本
helm search repo -l jenkins/jenkins
3、創建命名空間
kubectl create namespace jenkins
看看有哪些 可用的StorageClass
kubectl get storageclass
4、配置jenkins-values.yaml:(順帶JDK17、調度到zk3節點,用openebs-hostpath存儲)
controller:numExecutors: 2image:registry: docker.iorepository: jenkins/jenkinstag: lts-jdk17serviceType: NodePortnodePort: 30080persistence:enabled: truestorageClass: openebs-hostpathsize: 8GinodeSelector:kubernetes.io/hostname: zk3additionalVolumes:- name: host-mavenhostPath:path: /opt/maventype: DirectoryadditionalVolumeMounts:- name: host-mavenmountPath: /opt/mavensidecars:containers:- name: kanikoimage: gcr.io/kaniko-project/executor:latestimagePullPolicy: IfNotPresentcommand: ["/busybox/cat"]tty: truevolumeMounts:- name: kaniko-secretmountPath: /kaniko/.docker- name: host-mavenmountPath: /opt/mavenvolumes:- name: kaniko-secretsecret:secretName: regcredresources:limits:cpu: 2memory: 4Girequests:cpu: 1memory: 2Girbac:create: trueserviceAccount:create: true
執行安裝:
#如果之前存在,則先清空
helm uninstall jenkins -n jenkins#安裝
helm upgrade --install jenkins jenkins/jenkins \-n jenkins \-f jenkins-values.yaml
安裝完成:
?5、進入http://ip:30080,配置Manage Jenkins ---->Plugins
gitlab、harbor、maven、docker、Kubernetes、Config File Provider等插件,
所有提示更新的插件都要更新,尤其是Kubernetes
拿到初始密碼
kubectl -n jenkins get secret jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 -d && echo
配置gitlab:(配置api-token,用的是gitlab中頭像下preferences的Access Tokens,沒有就創建一個)
?
docker部署nexus私有庫、在jenkins中全局Tools中配置maven的settings.xml
6、Manage Jenkins ---->Managed files配置setting私有庫nexus連接
#如果沒安裝nexus私有庫,找一個node節點用docker安裝即可
docker run -d --name nexus -p 8081:8081 -v /opt/sonatype/sonatype-work:/nexus-data sonatype/nexus3#在/opt/sonatype/sonatype-work下找到admin.password拿到密碼登錄
http://ip:8081#登錄后修改賬號/密碼,settings.xml要用到,這個settings.xml就是maven的,也可以本地構建推送到nexus倉庫#新增一個配置
Add a new Config#選擇
Maven settings.xml#改掉下面的id為:
my-settings #點擊下一步#在Content中配置加入以下內容<servers><server><id>nexus</id><username>admin</username><password>ok5201314</password> <!-- 換成你自己的密碼 --></server></servers><mirrors><!-- 阿里云倉庫,個人配置 --><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror></mirrors><profiles><profile><id>use-nexus</id><repositories><repository><id>nexus</id><url>http://192.168.3.60:8081/repository/maven-snapshots/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository></repositories></profile></profiles><activeProfiles><activeProfile>use-nexus</activeProfile></activeProfiles>
7、在微服務的pipeline script中配置如下:
gitlab-pat配置gitlab的賬號/密碼憑證,?通過mvn clean deploy -DskipTests --settings $MAVEN_SETTINGS推送到微服務中配置的私有庫
pipeline {agent anytools {maven 'Maven-3.6.3'}environment {GIT_USER_NAME = 'root' #gitlab賬號GIT_USER_EMAIL = 'admin@example.com' #gitlab郵箱}stages {stage('Checkout') {steps {checkout([$class: 'GitSCM',branches: [[name: '*/main']],extensions: [submodule(parentCredentials: true, recursiveSubmodules: true),[$class: 'UserIdentity', email: "${env.GIT_USER_EMAIL}", name: "${env.GIT_USER_NAME}"]],userRemoteConfigs: [[credentialsId: 'gitlab-pat',url: 'http://192.168.3.60:9980/spring_cloud_java/spring-cloud-parent.git']]])}}stage('Deploy to Nexus') {steps {configFileProvider([configFile(fileId: 'my-settings', variable: 'MAVEN_SETTINGS')]) {sh 'mvn clean deploy -DskipTests --settings $MAVEN_SETTINGS'}}}}post {failure {echo "構建失敗!請檢查日志。"}success {echo "構建并部署成功!"}}
}
代碼中引入nexus私有庫
8、spring-cloud-parent、common微服務中配置
<project>
<distributionManagement><snapshotRepository><id>nexus</id><url>http://192.168.3.60:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>
</project>
9、在user-center配置
<project>
<dependencyManagement><dependencies><!-- 引入 common 的 dependencyManagement 配置 --><dependency><groupId>org.algorithm</groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies>
<dependency><groupId>org.algorithm</groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version><scope>compile</scope></dependency></dependencies><repositories><repository><id>nexus</id><url>http://192.168.3.60:8081/repository/maven-snapshots/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository></repositories></project>
10、首先構建spring-cloud-parent、再構建common,如果有版本修改common,需要先構建common,再構建user-center。
11、如果在項目中用http的鏈接方式訪問nexus私有庫(如http://192.168.3.60:8081/repository/maven-snapshots/),Maven installations配置的maven版本要用3.6.3,因為3.8.1以后都要用https,所以Install automatically配置時候選了3.6.3。