架构介绍
Git环境准备
本次使用gitee来进行代码管理
生成/添加SSH公钥
git 命令使用
cat .git/
git status
git config --global user.name "***"
git commit
git config --global user.email "***"
git commit
git push origin master
git commit
git remote add origin git@github.com:**
git push -u origin master
ssh -T git@github.com
Jenkins 部署
Jenkins容器使用宿主机Docker
构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。
设置Jenkins容器使用宿主机Docker
-
设置宿主机docker.sock权限:
sudo chown root:root /var/run/docker.sock sudo chmod o+rw /var/run/docker.sock
-
添加数据卷
version: "3.1" services: jenkins: image: jenkins/jenkins container_name: jenkins ports: - 8080:8080 - 50000:50000 volumes: - ./data/:/var/jenkins_home/ - /usr/bin/docker:/usr/bin/docker - /var/run/docker.sock:/var/run/docker.sock - /etc/docker/daemon.json:/etc/docker/daemon.json
harbor部署
测试验证
git代码提交
1195 git add .
1196 git commit .
1197 git push .
1198 git push
方法1:创建工程
cd /var/jenkins_home/workspace/helloworld
docker build -t 192.168.3.50:81/public/web:$tag .
docker login -u admin -p Harbor12345 192.168.3.50:81
docker push 192.168.3.50:81/public/web:$tag
kubectl create deployment myapp$tag --image=harbor.test.com:81/public/web:$tag
构建成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/882a2cf2ce1c4c1e988b96621a6f
e887.png)
集群验证 镜像已经更新过来
方法2:流水线构建
Groovy脚本
pipeline {
agent any
// 存放所有任务的合集
stages {
stage('拉取Git代码') {
steps {
git 'git@gitee.com:yangle92/devops.git'
}
}
stage('制作自定义镜像并发布Harbor') {
steps {
sh '''cd /var/jenkins_home/workspace/helloworld
docker build -t 192.168.3.50:81/public/web:$tag .
docker login -u admin -p Harbor12345 192.168.3.50:81
docker push 192.168.3.50:81/public/web:$tag
'''
}
}
stage('镜像发布到kubernetes集群') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'k8smaster', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: 'kubectl create deployment myapp$tag --image=harbor.test.com:81/public/web:$tag', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/root', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}