一.安裝kubectl
1、配置yum源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
2、安裝kubectl
yum install -y kubectl
二.關聯k8s
1.設置配置文件
此時由于沒有關聯,使用命令會報錯
去k8s主機將.kube內容拷貝過來
回來發現命令已經可以使用了
再將.kube文件考到Jenkins賬戶里
使用Jenkins賬戶登錄并使用
2.下載k8s插件并重啟
3.選擇cloud
4.查看k8s地址
5.查看證書文件,并解密
6.復制證書
7.填寫命名空間
8.終端生成Secret
創建jenkins賬戶
kubectl create sa jenkins
創建role角色
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: defaultname: pod-reader-role
rules:
- apiGroups: [""]resources: ["pods"]verbs: ["get", "list", "watch","create","update","delete"][root@k8s-master ~]# kubectl apply -f role.txt
##若要給于jenkins用戶對default命名空間下所有資源具有所有權限,可以修改為 ["*"]
添加bindroling綁定
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: defaultname: pod-reader-role-binding
subjects:
- kind: ServiceAccountname: jenkinsnamespace: default
roleRef:kind: Rolename: pod-reader-roleapiGroup: rbac.authorization.k8s.io
生成token
kubectl -n default create token jenkins?
最后將token填寫道“憑據”中
9.填寫憑證(1個小時有效)
下面把Jenkins地址填上,再點擊保存按鈕就完成了
三.創建項目
選擇pipeline
pipeline {agent anystages {stage('Checkout Code') {steps {// 使用 SSH 方式拉取 Git 代碼git branch: 'master', // 替換為你的分支名稱url: 'git@192.168.71.131:/home/git/k8s' // 替換為你的 Git 倉庫地址}}stage('Deploy LNMP') {steps {script {// 部署 LNMP 平臺sh 'kubectl apply -f /var/lib/jenkins/workspace/k8s-lnmp/nginx.yml'}}}}
}
建立git庫
創建yml文件
---apiVersion: apps/v1
kind: Deployment
metadata:name: nginxspec:replicas: 1selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80---apiVersion: v1
kind: Service
metadata:name: nginxspec:selector:app: nginxports:- protocol: TCPport: 80targetPort: 80type: NodePort---apiVersion: apps/v1
kind: Deployment
metadata:name: mysqlspec:replicas: 1selector:matchLabels:app: mysqltemplate:metadata:labels:app: mysqlspec:containers:- name: mysqlimage: mysql:5.7env:- name: MYSQL_ROOT_PASSWORDvalue: "123.com"ports:- containerPort: 3306---apiVersion: v1
kind: Service
metadata:name: mysqlspec:selector:app: mysqlports:- protocol: TCPport: 3306targetPort: 3306type: ClusterIP---apiVersion: apps/v1
kind: Deployment
metadata:name: phpspec:replicas: 1selector:matchLabels:app: phptemplate:metadata:labels:app: phpspec:containers:- name: phpimage: php:7.4-fpmports:- containerPort: 9000
更新倉庫
git add .