国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD

這篇具有很好參考價(jià)值的文章主要介紹了Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、什么是CICD

CIDI(Continuous Integration,Continuous Delivery & Deployment),持續(xù)集成,持續(xù)部署,持續(xù)發(fā)布。

也就是說,在本地開發(fā)完代碼之后,push到遠(yuǎn)程倉庫,然后代碼打包、部署的這個(gè)過程完全是自動(dòng)化完成的。
Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD,云原生,kubernetes,jenkins,容器
但是我們不要進(jìn)入一個(gè)誤區(qū),CICD并不意味著一定就是這一套流程,只要實(shí)現(xiàn)了代碼提交后自動(dòng)部署即可,不管是部署在k8s還是tomcat中,這是由應(yīng)用規(guī)模和使用的工具來決定的。

二、準(zhǔn)備k8s環(huán)境

Kubernetes(k8s)集群搭建,完整無坑,不需要科學(xué)上網(wǎng)~

三、jenkins環(huán)境準(zhǔn)備(選擇一臺(tái)服務(wù)器)

1、安裝java(最新版jenkins只支持jdk11以上)

(1)找到j(luò)dk資源上傳到指定機(jī)器

# 解壓
tar -zxvf jdk-17_linux-x64_bin.tar.gz

(2)配置環(huán)境變量

vi /etc/profile
# 在最后添加上
export JAVA_HOME=/root/jenkins/jdk-17.0.7
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
export PATH=$PATH:${JAVA_HOME}/bin
# 保存后執(zhí)行
source /etc/profile 
# 確保安裝完成
java -version

2、安裝maven

(1)找到maven資源上傳到指定機(jī)器

# 解壓
tar -zxvf apache-maven-3.6.2-bin.tar.gz

(2)配置環(huán)境變量

vi /etc/profile
# 在最后添加
export MAVEN_HOME=/root/jenkins/apache-maven-3.6.2
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
# 保存后執(zhí)行
source /etc/profile 
# 確保安裝完成
mvn -version

(3)配置maven的阿里云鏡像

apache-maven-3.6.2/conf/settings.xml中,修改鏡像

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>        
</mirror>

3、安裝和配置git(使用gitee)

(1)安裝git

# 下載安裝
yum install git 
# 配置git
git config --global user.name "cxf"
git config --global user.email "cxf@qq.com"

(2)在服務(wù)器上生成公鑰

# -t key 類型 -C 注釋 中間三次enter即可
ssh-keygen -t ed25519 -C "Gitee SSH Key"
# 查看公鑰 私鑰文件 id_ed25519	公鑰文件 id_ed25519.pub
ls ~/.ssh/

復(fù)制生成后的 ssh key,通過倉庫主頁 「管理」->「部署公鑰管理」->「添加部署公鑰」 ,將生成的公鑰添加到倉庫中。
Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD,云原生,kubernetes,jenkins,容器

(3)驗(yàn)證

# 通過 ssh -T 測(cè)試時(shí),輸出 Anonymous:添加成功后,就可以使用 SSH 協(xié)議對(duì)倉庫進(jìn)行拉取。
$ ssh -T git@gitee.com
Hi Anonymous! You've successfully authenticated, but GITEE.COM does not provide shell access.

4、準(zhǔn)備springboot項(xiàng)目

(1)編寫springboot項(xiàng)目

@RestController
public class K8SController {
    @RequestMapping("/k8s")
    public String k8s(){
        return "hello K8s <br/>111222 ";
    }
}

(2)將springboot項(xiàng)目提交到gitee

(3)git clone測(cè)試

git clone git@gitee.com:xiangno1/springboot-demo.git

拉下來代碼,說明服務(wù)器配置沒問題。

5、安裝jenkins

jenkins官網(wǎng):https://jenkins.io/
入門指南:https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/

必須在k8s集群中,因?yàn)楹竺嫘枰趈enkins的目錄下創(chuàng)建文件執(zhí)行,比如這里選用m1節(jié)點(diǎn)。

(1)下載jenkinx

wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war

(2)啟動(dòng)jenkins(需要java環(huán)境)

# 啟動(dòng)報(bào)錯(cuò),需要先安裝字體
# java.lang.NullPointerException: Cannot load from short array because "sun.awt.FontConfiguration.head" is null
yum install fontconfig
fc-cache --force

# 后臺(tái)啟動(dòng)
nohup java -jar jenkins.war --httpPort=8080 & 
tail -f nohup.out 

# 啟動(dòng)日志會(huì)提示密碼
#4c7341496d044ef7849576ccddc20d11
#This may also be found at: /root/.jenkins/secrets/initialAdminPassword

(3)windows訪問192.168.56.101:8080

jenkins啟動(dòng)時(shí)會(huì)打印一串密碼,需要填上

點(diǎn)擊【安裝推薦的插件】,需要等一段時(shí)間自動(dòng)完成。

下載完插件之后,需要?jiǎng)?chuàng)建第一個(gè) 管理員用戶 我們?cè)O(shè)置為admin/admin。

(4)配置jenkins的get、maven、java

在全局配置,新版的在tools中,配置maven。默認(rèn)是使用系統(tǒng)環(huán)境變量中的。

(5)新建任務(wù)測(cè)試

新建一個(gè)任務(wù)(item),輸入名稱(springboot-demo),選擇流水線
Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD,云原生,kubernetes,jenkins,容器
配置springboot-demo的task,修改pipeline內(nèi)容 ,增加maven構(gòu)建,然后“保存和立即構(gòu)建“,同時(shí)可以查看“Console Output”

因?yàn)槲覀冎鞍惭bgit的時(shí)候已經(jīng)配置了公鑰,所以拉取的時(shí)候并不需要用戶密碼了!

node {
   def mvnHome
   stage('Preparation') {
      git 'git@gitee.com:xiangno1/springboot-demo.git'
   }
   
   stage('Maven Build') { 
      sh "mvn clean package"
   }
}

編寫完之后保存,然后點(diǎn)擊【立即構(gòu)建】。
在/root/.jenkins/workspace 中,會(huì)下載springboot-demo,并使用maven打成一個(gè)jar包。

(6)設(shè)置push之后自動(dòng)構(gòu)建

當(dāng)用戶進(jìn)行g(shù)it commit/push提交代碼到github時(shí),能夠通知jenkins自動(dòng)構(gòu)建

注意:jenkins的ip一定要是github能夠訪問到的地址

在gitee上配置jenkins的webhook地址:http://192.168.56.101:8080/springboot-demo (需要外網(wǎng)訪問)
Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD,云原生,kubernetes,jenkins,容器
生成Personal access tokens
Jenkins訪問github需要授權(quán),所以在github上生成token交給jenkins使用,即Personal access tokens
github的Settings[個(gè)人信息右上角]–>Developer settings–>Personal access tokens–>Generate new token
最后保存好該token,比如:**72f048b514e95d6fe36f86d84374f2dcce402b43

jenkins安裝插件
01 安裝github plugin插件:[系統(tǒng)管理]->[插件管理]->[可選插件]
02 安裝gitlab插件和gitlab hook插件:[系統(tǒng)管理]->[插件管理]->[可選插件]

配置GitHub Server
[系統(tǒng)管理]->[系統(tǒng)配置]->[找到github服務(wù)器]->[添加github服務(wù)器]

在流水線觸發(fā)器勾選GitHub hook trigger for GITScm polling

6、dockerhub準(zhǔn)備(阿里云)

(1)創(chuàng)建一個(gè)springboot-demo 的鏡像倉庫

docker鏡像深入學(xué)習(xí),docker鏡像發(fā)布公有云與私有云

# 登錄 ,需要輸入密碼
docker login --username=沙里溝第二小學(xué)扛把子 registry.cn-hangzhou.aliyuncs.com
# 私有云的話,需要在k8s添加憑證
kubectl create secret docker-registry <secret-name> \
     --docker-username=<username> \
     --docker-password=<password> \
     --docker-email=<email> \
     --docker-server=<registry>
<secret-name> 是您為 secret 指定的名稱,例如 my-registry-secret。
<username> 是您在鏡像倉庫的用戶名。
<password> 是您在鏡像倉庫的密碼。
<email> 是與您在鏡像倉庫的賬號(hào)相關(guān)聯(lián)的電子郵件。
<registry> 是您的鏡像倉庫地址。
接下來,您需要在使用該憑證的部署(deployment)或其他相關(guān)資源中引用該 secret??梢栽谙嚓P(guān)資源的定義文件中添加以下部分
spec:
     template:
       spec:
         imagePullSecrets:
         - name: <secret-name>

(2)準(zhǔn)備shell腳本實(shí)現(xiàn)docker push

# mkdir /root/.jenkins/workspace/scripts/
# vi /root/.jenkins/workspace/scripts/springboot-demo-build-image.sh
# 記得chmod +x /root/.jenkins/workspace/scripts/springboot-demo-build-image.sh
# 腳本開始
# 進(jìn)入到springboot-demo目錄
cd ../springboot-demo

# 編寫Dockerfile文件

cat <<EOF > Dockerfile
FROM openjdk:8-jre-alpine
COPY target/springboot-demo-0.0.1-SNAPSHOT.jar /springboot-demo.jar
ENTRYPOINT ["java","-jar","/springboot-demo.jar"]
EOF

echo "Dockerfile created successfully!"

# 基于指定目錄下的Dockerfile構(gòu)建鏡像
docker build -t registry.cn-hangzhou.aliyuncs.com/cxf01/springboot-demo:v1.0 .

# push鏡像,這邊需要阿里云鏡像倉庫登錄,在w1上登錄
docker push registry.cn-hangzhou.aliyuncs.com/cxf01/springboot-demo:v1.0

(3)jenkins的pipeline增加步驟

node {
   def mvnHome
   stage('Preparation') {
      git 'git@gitee.com:xiangno1/springboot-demo.git'
   }
   
   stage('Maven Build') { 
      sh "mvn clean package"
   }
   
   stage('Build Image') { 
      sh "/root/.jenkins/workspace/scripts/springboot-demo-build-image.sh"
   }
}

(4)再次執(zhí)行jenkins的構(gòu)建

構(gòu)建成功!并且上傳阿里云docker鏡像成功!
Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD,云原生,kubernetes,jenkins,容器
Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD,云原生,kubernetes,jenkins,容器

四、Kubernetes拉取鏡像運(yùn)行

1、準(zhǔn)備springboot-demo.yaml文件

在/root/.jenkins/workspace/scripts/目錄下創(chuàng)建springboot-demo.yaml

# 以Deployment部署Pod
apiVersion: apps/v1
kind: Deployment
metadata: 
  name: springboot-demo
spec: 
  selector: 
    matchLabels: 
      app: springboot-demo
  replicas: 1
  template: 
    metadata:
      labels: 
        app: springboot-demo
    spec: 
      imagePullSecrets: # 私有云憑證
      - name: springboot-demo
      containers: 
      - name: springboot-demo
        image: registry.cn-hangzhou.aliyuncs.com/cxf01/springboot-demo:v1.0
        ports: 
        - containerPort: 8080
---
# 創(chuàng)建Pod的Service
apiVersion: v1
kind: Service
metadata: 
  name: springboot-demo
spec: 
  ports: 
  - port: 80
    protocol: TCP
    targetPort: 8080
  selector: 
    app: springboot-demo
---
# 創(chuàng)建Ingress,定義訪問規(guī)則
apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
  name: springboot-demo
spec: 
  rules: 
  - host: springboot.cxf.com
    http: 
      paths: 
      - path: /
        backend: 
          serviceName: springboot-demo
          servicePort: 80

2、準(zhǔn)備shell文件,用于k8s自動(dòng)拉取鏡像部署

編寫k8s-deploy-springboot-demo.sh文件文章來源地址http://www.zghlxwxcb.cn/news/detail-528486.html

# vi /root/.jenkins/workspace/scripts/k8s-deploy-springboot-demo.sh
# chmod +x /root/.jenkins/workspace/scripts/k8s-deploy-springboot-demo.sh
kubectl delete -f springboot-demo.yaml
kubectl apply -f /root/.jenkins/workspace/scripts/springboot-demo.yaml
echo "k8s deploy success!"

3、修改jenkins的pipeline

node {
   def mvnHome
   stage('Preparation') {
      git 'git@gitee.com:xiangno1/springboot-demo.git'
   }
   
   stage('Maven Build') { 
      sh "mvn clean package"
   }
   
   stage('Build Image') { 
      sh "/root/.jenkins/workspace/scripts/springboot-demo-build-image.sh"
   }

   stage('K8S Deploy') { 
      sh "/root/.jenkins/workspace/scripts/k8s-deploy-springboot-demo.sh"
   }
}

4、w1執(zhí)行不了kubectl 命令

切換到master上,cd ~  --->   cat ~/.kube/config  --->復(fù)制內(nèi)容
切換到worker02上   cd ~  ---> mkdir ~/.kube   vi ~/.kube/config   --->粘貼內(nèi)容

5、大功告成 !

到了這里,關(guān)于Kubernetes(k8s)實(shí)戰(zhàn):使用k8s+jenkins實(shí)現(xiàn)CICD的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 云原生Kubernetes: K8S 1.29版本 部署Jenkins

    云原生Kubernetes: K8S 1.29版本 部署Jenkins

    目錄 ?一、實(shí)驗(yàn) 1.環(huán)境 2.K8S 1.29版本 部署Jenkins 服務(wù) 3.jenkins安裝Kubernetes插件 二、問題 1.創(chuàng)建pod失敗 2.journalctl如何查看日志信息 2.容器內(nèi)如何查詢jenkins初始密碼 3.jenkins離線安裝中文包報(bào)錯(cuò) 4.jenkins插件報(bào)錯(cuò) (1)主機(jī) 表1 主機(jī) 主機(jī) 架構(gòu) 版本 IP 備注 master K8S master節(jié)點(diǎn) 1.29.0 1

    2024年04月25日
    瀏覽(27)
  • Kubernetes(K8S)學(xué)習(xí)(三):K8S實(shí)戰(zhàn)案例

    Kubernetes(K8S)學(xué)習(xí)(三):K8S實(shí)戰(zhàn)案例

    附:查看命名空間命令 kubectl get namespace kubectl get ns 創(chuàng)建wordpress-db.yaml文件,這里以mysql作為wordpress的db: yaml內(nèi)容: 根據(jù)wordpress-db.yaml配置,創(chuàng)建資源mysql數(shù)據(jù)庫: yaml中MySQL配置說明: 用戶:root ??????密碼:rootPassW0rd 數(shù)據(jù)庫名稱:wordpress 用戶:wordpress ??????密碼:wo

    2024年04月09日
    瀏覽(30)
  • Kubernetes(k8s)實(shí)戰(zhàn):深入詳解Volume,詳解k8s文件同步存儲(chǔ)

    Kubernetes(k8s)實(shí)戰(zhàn):深入詳解Volume,詳解k8s文件同步存儲(chǔ)

    Volume官網(wǎng):https://kubernetes.io/docs/concepts/storage/volumes/ On-disk files in a Container are ephemeral, which presents some problems for non-trivial applications when running in Containers. First, when a Container crashes, kubelet will restart it, but the files will be lost - the Container starts with a clean state. Second, when running Containers to

    2024年02月13日
    瀏覽(20)
  • Kubernetes、k8s從入門到實(shí)戰(zhàn)

    Kubernetes、k8s從入門到實(shí)戰(zhàn)

    本文章用到k8s安裝包及工具文件鏈接:https://pan.baidu.com/s/1gYU9xxwxI9cXfJ1IJGQjwg?pwd=ye11 提取碼:ye11 我們對(duì)于云計(jì)算的概念,維基百科有以下定義: Cloud computing is a new form of Internet-based computing that provides shared computer processing resources and data to computers and other devices on demand. 云計(jì)算就是

    2024年01月19日
    瀏覽(65)
  • 【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實(shí)現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins

    【業(yè)務(wù)功能115】微服務(wù)-springcloud-springboot-Kubernetes-k8s集群-Kubesphere實(shí)現(xiàn)DevOps流水線-CI/CD-SonarQube- Jenkins

    dev 怎么開發(fā) ops 怎么運(yùn)維 參考項(xiàng)目鏈接:https://github.com/kubesphere/devops-maven-sample 持續(xù)集成是指軟件個(gè)人的部分向軟件整體部分交付,頻繁進(jìn)行集成以便更快地發(fā)現(xiàn)其中錯(cuò)誤。 CI需要具備這些: 全面的自動(dòng)化測(cè)試 這是實(shí)踐持續(xù)集成持續(xù)部署的基礎(chǔ),同時(shí),選擇合適的自動(dòng)化測(cè)

    2024年02月04日
    瀏覽(43)
  • Kubernetes實(shí)戰(zhàn)(十六)-k8s節(jié)點(diǎn)打標(biāo)簽

    pod可以根據(jù)調(diào)度策略讓pod調(diào)度到想要的節(jié)點(diǎn)上運(yùn)行,或者不在某節(jié)點(diǎn)運(yùn)行。 3.1.1 生成deployment文件 3.1.2 執(zhí)行生成pod? 3.1.3 查看結(jié)果? 遷移過程相當(dāng)于刪除當(dāng)前節(jié)點(diǎn)pod,再在新node上生成pod,生產(chǎn)環(huán)境操作時(shí)需要謹(jǐn)慎。 3.2.1 調(diào)整pod運(yùn)行標(biāo)簽 3.2.2 查看結(jié)果? ?pod已經(jīng)切換至ops-wor

    2024年01月16日
    瀏覽(41)
  • Kubernetes實(shí)戰(zhàn)(九)-kubeadm安裝k8s集群

    Kubernetes實(shí)戰(zhàn)(九)-kubeadm安裝k8s集群

    ip hostname 10.220.43.203 ops-master-1 10.220.43.204 ops-worker-1 10.220.43.205 ops-worker-2 master/與worker主機(jī)均需要設(shè)置。 master/worker均安裝 docker二進(jìn)制安裝參考:docker部署及常用命令-CSDN博客? 為kubernetes添加國內(nèi)阿里云YUM軟件源 。 如果k8s版本低于1.24版,可以忽略此步驟。 由于1.24版本不能直接

    2024年02月04日
    瀏覽(49)
  • 實(shí)戰(zhàn)-基于Jenkins+K8s構(gòu)建DevOps平臺(tái)(九)

    實(shí)戰(zhàn)-基于Jenkins+K8s構(gòu)建DevOps平臺(tái)(九)

    第一部分:安裝持久化存儲(chǔ)nfs 1、在k8s-master和k8s-node1上安裝nfs服務(wù) [root@k8s-master ~]# yum install nfs-utils -y [root@k8s-master ~]# systemctl start nfs [root@k8s-master ~]# systemctl enable nfs [root@k8s-node1 ~]# yum install nfs-utils -y [root@k8s-node1 ~]# systemctl start nfs [root@k8s-node1 ~]# systemctl enable nfs [root@k8s-node2 ~

    2024年02月08日
    瀏覽(29)
  • 服務(wù)器-Kubernetes (K8S)單機(jī)部署實(shí)戰(zhàn) -- 001

    服務(wù)器-Kubernetes (K8S)單機(jī)部署實(shí)戰(zhàn) -- 001

    ? ? ?本篇博文是 centos 7 系統(tǒng)安裝 kubernetes 單機(jī) master 節(jié)點(diǎn)操作。 一: 查看 服務(wù)器 配置信息 ? ? ? 1. 執(zhí)行命令查看服務(wù)器cpu信息。安裝 kubernetes 服務(wù),cpu核心數(shù)必須大于2,內(nèi)存大于2G。 ? ? ? 2.? 修改服務(wù)器設(shè)置信息,避免安裝出現(xiàn)問題。 ? ? ? ? a.? 臨時(shí)關(guān)閉swap,防止

    2024年02月19日
    瀏覽(31)
  • 使用 Jenkins、Gitlab、Harbor、Helm、k8s 來實(shí)現(xiàn)流水線作業(yè)

    使用 Jenkins、Gitlab、Harbor、Helm、k8s 來實(shí)現(xiàn)流水線作業(yè)

    使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 來實(shí)現(xiàn)一個(gè)完整的持續(xù)集成和持續(xù)部署的流水線作業(yè) 開發(fā)人員提交代碼到 Gitlab 代碼倉庫 通過 Gitlab 配置的 Jenkins Webhook 觸發(fā) Pipeline 自動(dòng)構(gòu)建 Jenkins 觸發(fā)構(gòu)建構(gòu)建任務(wù),根據(jù) Pipeline 腳本定義分步驟構(gòu)建 先進(jìn)行代碼靜態(tài)分析,單元測(cè)試

    2024年04月27日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包