1.选用什么linux发行版?
大多数教程都使用centos 8,但是centos 8已经不再更新,官方也不提供源,所以使用了原作者开发的rocky linux 8,操作基本一样
但是没有network service,使用ifdown ,if up命令重启网卡;网卡配置文件在
/etc/sysconfig/network-script/ 这个目录下面
2.下载rocky linux8 更换源,安装docker
下载
http://mirrors.163.com/rocky/8.6/isos/x86_64/
更换源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i.bak \
/etc/yum.repos.d/Rocky-*.repo
dnf makecache
安装docker
https://www.linuxtechi.com/install-docker-and-docker-compose-rocky-linux/
3.通过docker-compose 启动docker 镜像
设置restart:always 跟随docker服务启动
#启动
docker-compose up -d
#重启
docker-compose restart 名字
#查看日志
docker-compose logs -f 名字
4.安装gitlab
docker search gitlab-ce
然后就去官方找一个稳定版的镜像
然后pull下来,在./usr/local 下面创建 docker 目录
然后在docker 目录创建 gitlab_docker 目录
然后开始编写docker-compose.yml文件
示例
services:
gitlab:
image: 'gitlab/gitlab-ce:14.10.4-ce.0'
container_name: gitlab
restart: always
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.80.133:8929'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
ports:
- '8929:8929'
- '2224:2224'
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
然后在那个目录下面执行docker-compse up -d
docker-compose logs -f
5. 安装jenkins
基本上和安装gitlab一样的
但是需要给data目录777权限(这个不太懂,这个是什么都行,可能有更低的权限也行)
services:
jenkins:
image: 'jenkins/jenkins:2.332.3-lts'
restart: always
container_name: jenkins
ports:
- '8080:8080'
- '50000:50000'
volumes:
- './data:/var/jenkins_home/'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/etc/docker/daemon.json:/etc/docker/daemon.json'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/bin/docker:/usr/bin/docker'
- '/etc/docker/daemon.json:/etc/docker/daemon.json'
这个三个映射就可以在让jenkins使用宿主机上的docker,得给docker.sock
# 给docekr.sock更换docker所有者到root
chown root:root 文件路径
# 给docker.sock其他用户读和写的权限
chmod o+rw 文件路径
6.安装sonarqube
需要设置vm.max_map_count参数>=262144,否则会在启动时报错
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#修改文件
sudo vim /etc/sysctl.conf
#添加参数
vm.max_map_count = 262144
#重新加载/etc/sysctl.conf配置
sysctl -p
这个估计是sonarqbe使用了es,
sonar-scanner-cli,这个主要是配置jenkins做代码质量分析
下载地址:https://binaries.sonarsource.com/?prefix=Distribution/sonar-scanner-cli/(科学上网)
解压之后移动到你jenkins /var/jenkins_home 映射的文件夹,然后进入到那个conf目录
这个sonar.host.url改成你的,然后启动sonarqube去生成一个token,然后去配置你的jenkins
这里的配置就对应命令里面的-Dsonar.source= 这种
7.安装harbor
https://baijiahao.baidu.com/s?id=1707816679863571585&wfr=spider&for=pc
去官网下载一个稳定长期的压缩包
然后解压到/usr/local/ 下面,然后配置harbor.yml
就配置一下hostname: 你的harbor主机地址
关闭443,https.ssl.相关的所有配置.
然后可以看下harbor_admin_password: 这个是默认管理密码
然后运行install.sh就行了
然后把这个镜像仓库加入到doker里面,更改一个文件vi /etc/docker/daemon.json
{
“insecure-registries”: [“192.168.80.137:80”]
}
这样然后去每次拉取或者推送,使用它的格式就行了
8.使用jenkins构建docker镜像
自由风格(___)
这个其实就是配置一下docker构建的命令,然后push到harbor仓库里面
mv target/*.jar docker/
docker image prune -f
docker build -t test:$tag docker/
docker login -u admin -p Harbor12345 192.168.80.137:80
docker tag test:$tag 192.168.80.137:80/repo/test:$tag
docker push 192.168.80.137:80/repo/test:$tag
然后就是需要部署的服务器收到jenkins构建完成的通知然后运行部署镜像的脚本
# 接受参数
horbar_addr=$1
horbar_repo=$2
project=$3
version=$4
host_port=$5
container_port=$6
imageName=$horbar_addr/$horbar_repo/$project
echo $project
echo $imageName
containerId=`docker ps -a | grep ${project} | awk '{print $1}'`
echo $containerId
# 判断要部署的容器是否在运行,是就删除它
if [ "$containerId" != "" ] ; then
docker stop $containerId
docker rm $containerId
fi
tag=`docker images | grep ${imageName} | awk '{print $2}'`
echo $tag
echo "$imageName:$version"
# 判断拉取的镜像是否存在,存在就删除
if [[ "$tag" =~ "$version" ]] ; then
docker rmi -f "$imageName:$version"
fi
# 登录到harhor镜像仓库
docker login -u admin -p Harbor12345 $horbar_addr
docker pull "$imageName:$version"
echo $project
docker run -d -p $host_port:$container_port --name $project "$imageName:$version" \
&& echo "SUCCESS"
9.安装k8s
教程https://kuboard.cn/install/history-k8s/install-k8s-1.22.x.html
常用命令
# 这个命令可以启动你的配置文件
kubectl apply -y 你的配置文件
# 这个命令可以删除你的配置文件
kubectl delete -y 你的配置文件
# 查看namespace
kubectl get ns
# 查看pod详情
kubectl describe podName -n namespace
jenkins 必装插件(我也是刚学,不太懂)
- publish over ssh
- sonarqube scanner
- git
jenkins 设置时区
docker exec -it -u root jenkins bash
然后cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
配置构建服务器
安装jdk8 解压到/usr/local/jdk8 其他也行,然后去jenkins配置一下
安装maven 解压到/usr/local/maven 其他也行,然后去jenkins配置一下