[TOC]
## 準備部署的yml文件
```yml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: test
name: pipeline
labels:
app: pipeline
spec:
replicas: 2
selector:
matchLabels:
app: pipeline
template:
metadata:
labels:
app: pipeline
spec:
containers:
- name: pipeline
image: 192.168.11.102:80/repo/pipeline:v4.0.0
imagePullPolicy: Always
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
namespace: test
labels:
app: pipeline
name: pipeline
spec:
selector:
app: pipeline
ports:
- port: 8081
targetPort: 8080
type: NodePort
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: test
name: pipeline
spec:
ingressClassName: ingress
rules:
- host: mashibing.pipeline.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pipeline
port:
number: 8081
```
### Harbor私服配置
在嘗試用kubernetes的yml文件啟動pipeline服務時,會出現Kubernetes無法拉取鏡像的問題,這里需要在kubernetes所在的Linux中配置Harbor服務信息,并且保證Kubernetes可以拉取Harbor上的鏡像
- 設置Master和Worker的私服地址信息
| 設置Harbor私服地址 |
| :------------------------------------------: |
|  |
- 在Kuboard上設置私服密文信息
| 設置密文并測試 |
| :------------------------------------------: |
|  |
按照復制指令的位置測試認證,效果如下
| 測試效果 |
| :------------------------------------------: |
|  |
### 測試使用效果
執行kubectl命令,基于yml啟動服務,并且基于部署后服務的提示信息以及Ingress的設置,直接訪問
| |
| -------------------------------------------- |
|  |
|  |
### Jenkins遠程調用
- 將pipeline.yml配置到Gitlab中
| 配置yml文件 |
| :------------------------------------------: |
|  |
- 配置Jenkins的目標服務器,可以將yml文件傳輸到K8s的Master上
| 設置目標服務器 |
| :------------------------------------------: |
|  |
- 修改Jenkinsfile,重新設置流水線任務腳本,并測試效果
| 傳遞yml文件腳本 |
| :------------------------------------------: |
| |
| |
- 設置Jenkins無密碼登錄k8s-master
將Jenkins中公鑰信息復制到k8s-master的~/.ssh/authorized_keysz中,保證遠程連接無密碼
| 遠程執行命令無需密碼 |
| :------------------------------------------: |
|  |
- 設置執行kubectl的腳本到Jenkinsfile
| 設置Jenkinsfile |
| :------------------------------------------: |
| |
- 執行查看效果
| 執行流水線 |
| :------------------------------------------: |
|  |
可以查看到yml文件是由變化的, 這樣k8s就會重新加載
- 查看效果
| 效果 |
| :------------------------------------------: |
| |
Ps:這種方式更適應與CD操作,將項目將基于某個版本部署到指定的目標服務器
- DevOps介紹
- 持續集成流程
- git工作流實踐
- 新人準備git環境
- git工作流最佳實踐
- jenkins基礎入門
- jenkins簡介
- jenkins安裝(docker)
- 源碼拉取
- maven構建
- 應用發布
- 結合gitlab版本管理
- jenkins-docker部署
- harbor鏡像發布
- jenkins集成SonarQube
- SonarQube代碼檢測
- 集成SonarQube
- jenkins-pipeline
- 構建pipeline任務
- pipeline基礎結構
- pipeline核心語法
- jenkinsfile構建
- 完整案例
- 整合釘釘發送通知
- 腳本使用憑證信息
- jenkins結合k8s使用
- k8s架構及基礎概念
- k8s操作命令
- jenkins部署k8s
- 附錄(其他未完成)
- jenkins高可用服務搭建
- gitlab-docker環境搭建
- 開發人員安裝git
- JDK與maven
- docker安裝gitlab
- docker安裝
- docker-compose安裝
- harbor安裝
- SonarQube安裝
- 2.暫時沒寫的內容
- 構建結果郵件發送
- 已有項目上傳gitlab