#云原生征文# 持续集成CI/CD之工具快速搭建

网友投稿 229 2022-10-19

#云原生征文# 持续集成CI/CD之工具快速搭建

下一章:持续集成CI/CD之配置管理最佳实践

jenkins快速搭建与配置

安装文档:network create jenkins

2.增加daemon.json配置

设置insecure-registrie是因为,后续使用docker编译时,需要docker镜像仓库存储镜像的。

sudo mkdir /data/jenkins cat <

3.部署运行docker

docker run --name jenkins-docker --privileged \ --network jenkins --network-alias docker \ -e DOCKER_TLS_CERTDIR=/certs \ -e TZ=Asia/Shanghai \ -v /etc/localtime:/etc/localtime:ro \ -v /data/jenkins/jenkins-docker-certs:/certs/client \ -v /data/jenkins/jenkins-data:/var/jenkins_home \ -v /data/jenkins/daemon.json:/etc/docker/daemon.json \ -p 2376:2376 --restart=always -m 4GB --cpus 2 -d docker:dind \ --storage-driver overlay2

修改jenkins-data目录权限

docker run --rm --privileged -u root --name jenkins-test \ -v /data/jenkins/jenkins-data:/var/jenkins-data \ jenkins/jenkins:2.332.2-lts mkdir .m2 && chown -R jenkins:jenkins /var/jenkins-data

jenkins部署(docker)

1.自定义jenkins的docker镜像

(注意编译的 jenkins插件版本号问题)

#生成dockerfile文件 cat <<\EOF | tee Dockerfile FROM jenkins/jenkins:2.332.2-lts USER root RUN sed -e 's/deb.debian.org/mirrors.aliyun.com/g' -i /etc/apt/sources.list; \ apt-get update && apt-get install -y lsb-release && rm -rf /var/lib/apt/lists/* RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \ https://mirrors.aliyun.com/docker-ce/linux/debian/gpg RUN echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \ \ $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list RUN apt-get update && apt-get install -y docker-ce-cli && rm -rf /var/lib/apt/lists/*; USER jenkins RUN jenkins-plugin-cli --plugins "blueocean:1.25.3 docker-workflow:1.28" EOF #编译 docker build -t my-jenkins-blueocean:1.1 .

2.部署运行jenkins容器

默认本地映射目录在/data/jenkins中

docker run --name jenkins-blueocean \ --network jenkins --env DOCKER_HOST=tcp://docker:2376 \ --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \ --env TZ=Asia/Shanghai \ --publish 8080:8080 --publish 50000:50000 \ --volume /data/jenkins/jenkins-data:/var/jenkins_home \ --volume /data/jenkins/jenkins-docker-certs:/certs/client:ro \ --volume /etc/localtime:/etc/localtime:ro \ --restart=always -m 4GB --cpus 2 -d my-jenkins-blueocean:1.1

jenkins插件安装

1.标准推荐安装

访问: --> 选择标准推荐安装

2.设置账号、pwd

标准插件安装完成后,进入到账号设置阶段

账号:admin pwd: xxx

3.选择安装权限、git参数、参数多选插件

安装权限控制插件 Role-based Authorization Strategy 安装git参数插件 Git Parameter 安装参数多选(Active Choices)插件 Active Choices

jenkins修改授权策略

1.选择Role-Based Strategy授权策略

系统管理 -> 全局安全配置 -> 授权策略 -> Role-Based Strategy -> 保存

2.增加角色

(管理角色设置可读read,创建执行任务create_job角色)

系统管理 -> Manage and Assign Roles -> Manage Roles Global roles中增加:build-job【权限:全部read、任务build】 create-job【权限:任务 create】

3.用户分组权限配置

以开放平台为例前缀为ssop-开头

1.系统管理 -> Manage and Assign Roles -> Manage Roles Item roles中增加:安装到maven仓库【Role to add: 开发平台 Pattern: ssop-.+】【权限:凭据:create、update、view, 任务:全选】 2.系统管理 -> Manage and Assign Roles -> Assign Roles User/group to add:输入用户名 --> 勾选read create-job Item roles:输入用户名 -->开放平台

jenkins-LDAP认证配置

系统管理 -> 全局安全配置 -> 安全域 -> LDAP

####LDAP 服务器 Server:ldap://[IP地址]:489 User search base:dc=XXX User search filter:cuuid={0} Group membership attribute:[ldap组的属性] Manager DN: [ldap管理DN] Manager Password: [ldap管理DN的pwd] Display Name LDAP attribute:displayname Email Address LDAP attribute:mail

当ldap服务挂调用,需要在后台的配置文件中去掉ldap认证,才能访问 <!-- 修改../jenkins-data/config.xml的securityRealm如下:--> <securityRealm class="hudson.security.HudsonPrivateSecurityRealm"> <disableSignup>true</disableSignup> <enableCaptcha>false</enableCaptcha> </securityRealm> 当ldap使用ssl私有证书情况,需要增加以下操作,才能正常访问ldap服务 # 生成证书cacerts,复制ldap的证书到/data/jenkins/ldapserver.crt jdk_sec_dir=/opt/java/openjdk/lib/security docker run --rm -u root --name test-jenkins -w ${jdk_sec_dir} -v /data/jenkins/ldapserver.crt:${jdk_sec_dir}/ldapserver.crt -d jenkins/jenkins:2.332.2-lts docker exec test-jenkins keytool -import -trustcacerts -alias ldap.talkweb.com.cn -file ldapserver.crt -keystore cacerts -storepass changeit -noprompt docker cp test-jenkins:/opt/java/openjdk/lib/security/cacerts /data/jenkins docker stop test-jenkins # 重新启动jenkins docker stop jenkins-blueocean docker rm jenkins-blueocean docker run --name jenkins-blueocean \ --network jenkins --env DOCKER_HOST=tcp://docker:2376 \ --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \ --env TZ=Asia/Shanghai \ --publish 8080:8080 --publish 50000:50000 \ --volume /data/jenkins/jenkins-data:/var/jenkins_home \ --volume /data/jenkins/jenkins-docker-certs:/certs/client:ro \ --volume /etc/localtime:/etc/localtime:ro \ --volume /data/jenkins/cacerts:/opt/java/openjdk/lib/security/cacerts:ro \ --restart=always -m 4GB --cpus 2 -d my-jenkins-blueocean:1.1

docker镜像仓库registry快速搭建

1.生成登录password

mkdir -p /data/docker-registry/{auth,certs,registry}; docker run --rm --entrypoint htpasswd -Bbn [user] [password] > /data/docker-registry/auth/htpasswd

2.生成证书

自己生成证书

cd /data/docker-registry/certs ########生成发布机构的证书###### #1、创建ca.key openssl genrsa -out ca.key 4096 #2、生成ca.crt openssl req -x509 -new -nodes -sha512 -days 3650 \ -subj "/C=CN/ST=Huna/L=Changsha/O=XXX/OU=manager/CN=XXX.XXX.com" \ -key ca.key \ -out ca.crt ########生成服务端证书###### #1、生成服务的domain.key openssl genrsa -out domain.key 4096 #2、生服务的domain.csr openssl req -sha512 -new \ -subj "/C=CN/ST=Huna/L=Changsha/O=mqm/OU=manager/CN=XXX.XXX.com" \ -key domain.key \ -out domain.csr #3、生成V3.ext文件 cat > v3.ext <<-EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment extendedKeyUsage = serverAuth subjectAltName = @alt_names [alt_names] DNS.1=XXX.XXX.com IP.1=192.168.XXX.XXX IP.2=127.0.0.1 EOF #4、使用v3.ext文件生成证书domain.crt openssl x509 -req -sha512 -days 3650 \ -extfile v3.ext \ -CA ca.crt -CAkey ca.key -CAcreateserial \ -in domain.csr \ -out domain.crt

3.启动registry服务

#!/bin/bash docker run -d -p 5000:5000 --restart=always \ --name registry \ -v /data/docker-registry/auth:/auth \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /data/docker-registry/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ -v /data/docker-registry/registry:/var/lib/registry \ registry:2

4.验证

#登录 docker login 192.168.XXX.XXX:5000 --username=[user] --password=[password]

gitlab快速搭建

假设安装目录在 /data/gitlab

1.初始化

# 数据目录 export GITLAB_HOME=/data/gitlab # 版本号依次改变 export GITLAB_VERSION=latest # 可以是具体的版本号:如14.8.2-ce.0 # 创建数据目录 mkdir -p ${GITLAB_HOME}/{config,logs,data} # 复制配置文件 docker run --rm --detach \ --hostname gitlab.example.com \ --name gitlab-test \ --shm-size 256m \ gitlab/gitlab-ce:$GITLAB_VERSION docker cp gitlab-test:/etc/gitlab/gitlab.rb /data/gitlab/config # 根据具体的需求修改gitlab.rb

2.使用docker部署gitlab

# 数据目录 export GITLAB_HOME=/data/gitlab # 版本号依次改变 export GITLAB_VERSION=latest # 可以是具体的版本号:如14.8.2-ce.0 # 运行服务 docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 22:22 \ --name gitlab --restart always -e TZ=Asia/Shanghai \ --volume /etc/localtime:/etc/localtime:ro \ --volume $GITLAB_HOME/config:/etc/gitlab:Z \ --volume $GITLAB_HOME/logs:/var/log/gitlab:Z \ --volume $GITLAB_HOME/data:/var/opt/gitlab:Z \ --shm-size 256m \ gitlab/gitlab-ce:$GITLAB_VERSION

gitlab-runner快速搭建

1.gitlab-runner运行

# 数据目录 export GITLAB_RUNNER_HOME=/data/gitlab-runner # 版本号依次改变 export GITLAB_RUNNER_VERSION=latest # 可以是具体的版本号:如v14.8.2 #运行 docker run -d --name gitlab-runner --restart always \ -e TZ=Asia/Shanghai \ -v /etc/localtime:/etc/localtime:ro \ -v $GITLAB_RUNNER_HOME/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:$GITLAB_RUNNER_VERSION

2.gitlab-runner注册

docker exec -i gitlab-runner gitlab-runner register

rancher快速搭建

githup官网:run --privileged -d --restart=unless-stopped \ --name=rancher -p 80:80 -p 443:443 \ -v /etc/localtime:/etc/localtime:ro \ -v /data/rancher/db:/var/lib/rancher \ -e TZ=Asia/Shanghai \ -m 4GB --cpus 2 rancher/rancher:v2.6.4

2.rancher配置

# 访问https://127.0.0.1 设置账号:admin, password:XXX 创建开发环境可读用户:dev,password:XXX

portainer快速搭建

官网:服务端运行容器 docker run -d -p 8000:8000 -p 9443:9443 --name portainer \ --restart=always --env TZ=Asia/Shanghai \ -v /etc/localtime:/etc/localtime:ro \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /data/portainer/portainer_data:/data \ portainer/portainer-ce:2.11.0

访问配置

# 访问 https://localhost:9443/ #设置账号 账号:admin password:XXX

2.portainer代理端安装

# 代理端运行容器 docker run -d -p 9001:9001 --name portainer_agent \ --restart=always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/lib/docker/volumes:/var/lib/docker/volumes \ portainer/agent:2.11.0

【本文正在参加云原生有奖征文活动】,活动链接:https://ost./posts/12598

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Docker容器实战九:容器生命周期管理
下一篇:spring配置不扫描service层的原因解答
相关文章

 发表评论

暂时没有评论,来抢沙发吧~