编辑
2024-08-18
TechNotes
00

目录

DevOps 环境搭建
Gitlab
安装 Gitlab
页面配置
配置 Secret
为项目配置 Webhook
卸载
Harbor
安装 Harbor
配置 Secret
SonarQube
安装 SonarQube
生成服务 token
创建 Webhook 服务
创建项目
Jenkins
构建带 maven 环境的 jenkins 镜像
安装 Jenkins
安装插件
Build Authorization Token Root
Gitlab
SonarQube Scanner
Node and Label parameter
Kubernetes
Config File Provider
Git Parameter
创建 gitlab 访问凭证
案例:SpringBoot 项目 CICD
配置节点标签
创建流水线项目
Webhook 构建触发器
Pipeline 脚本配置
检查/创建相关凭证
Harbor 镜像仓库凭证
Gitlab 访问凭证
kubeconfig 文件 id
SonarQube 凭证
添加 SonarQube Webhook
项目构建

DevOps 环境搭建

image.png

Gitlab

安装 Gitlab

  • 下载安装包
    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm

  • 安装
    rpm -i gitlab-ce-15.9.1-ce.0.el7.x86_64.rpm

  • 编辑 /etc/gitlab/gitlab.rb 文件

  • 修改 external_url 访问路径 http://:

  • 其他配置修改如下
    gitlab_rails['time_zone'] = 'Asia/Shanghai'
    puma['worker_processes'] = 2
    sidekiq['max_concurrency'] = 8
    postgresql['shared_buffers'] = "128MB"
    postgresql['max_worker_processes'] = 4
    prometheus_monitoring['enable'] = false

  • 更新配置并重启
    gitlab-ctl reconfigure
    gitlab-ctl restart

页面配置

  • 查看默认密码
    cat /etc/gitlab/initial_root_password

  • 登录后修改默认密码 > 右上角头像 > Perferences > Password

  • 修改系统配置:点击左上角三横 > Admin

  • Settings > General > Account and limit > 取消 Gravatar enabled > Save changes

  • 关闭用户注册功能

  • Settings > General > Sign-up restrictions > 取消 Sign-up enabled > Save changes

  • 开启 webhook 外部访问

  • Settings > Network > Outbound requests > Allow requests to the local network from web hooks and services 勾选

  • 设置语言为中文(全局)

  • Settings > Preferences > Localization > Default language > 选择简体中文 > Save changes

  • 设置当前用户语言为中文

  • 右上角用户头像 > Preferences > Localization > Language > 选择简体中文 > Save changes

配置 Secret

  • 创建 gitlab 默认用户名密码 secret
    echo root > ./username
    echo wolfcode > password
    kubectl create secret generic git-user-pass --from-file=./username --from-file=./password -n kube-devops

为项目配置 Webhook

进入项目点击侧边栏设置 > Webhooks 进入配置即可

URL:在 jenkins 创建 pipeline 项目后

  • 触发来源:
    • 推送事件:表示收到新的推送代码就会触发
    • 标签推送事件:新标签推送才会触发
    • 评论:根据评论决定触发
    • 合并请求事件:创建、更新或合并请求触发

添加成功后,可以在下方点击测试按钮查看 jenkins 是否成功触发构建操作

卸载

  • 停止服务
    gitlab-ctl stop

  • 卸载 rpm 软件(注意安装的软件版本是 ce 还是 ee)
    rpm -e gitlab-ce

  • 查看进程
    ps -ef|grep gitlab

  • 干掉第一个 runsvdir -P /opt/gitlab/service log 进程

  • 删除 gitlab 残余文件
    find / -name *gitlab* | xargs rm -rf
    find / -name gitlab | xargs rm -rf

Harbor

安装 Harbor

  • 下载 harbor 安装包
  • 解压后执行 install.sh 就行

配置 Secret

  • 创建 harbor 访问账号密码(需要将下访问的配置信息改成你自己的)
    kubectl create secret docker-registry harbor-secret --docker-server=192.168.113.122:8858 --docker-username=admin --docker-password=wolfcode -n kube-devops

  • 需要添加信任 image.png

SonarQube

安装 SonarQube

  • 进入 /opt/k8s/devops
    kubectl apply -f sonarqube/

生成服务 token

  • 登录到 sonarqube 后台,点击头像 > MyAccount > Security > Generate Tokens > generate 生成 token 并复制

创建 Webhook 服务

  • 点击顶部菜单栏的配置 > 配置(小三角) > 网络调用
    Name:wolfcode-jenkins
    URL:http://<sonar ip>:<sonar port>/sonarqube-webhook/

创建项目

  • SonarQube 顶部菜单栏 Projects > Create new project > 配置基础信息并保存 > Provide a token > Generate 生成 token > Continue

  • 分别选择 Java / Maven 后,按照脚本配置 Jenkinsfile 中的 sonar 配置信息
    mvn sonar:sonar -Dsonar.projectKey=k8s-cicd-demo

Jenkins

构建带 maven 环境的 jenkins 镜像

  • 构建带 maven 环境的 jenkins 镜像
    docker build -t 192.168.113.122:8858/library/jenkins-maven:jdk-11 .

  • 登录 harbor
    docker login -uadmin 192.168.113.122:8858

  • 推送镜像到 harbor
    docker push 192.168.113.122:8858/library/jenkins-maven:jdk-11

安装 Jenkins

  • 进入 jenkins 目录,安装 jenkins
    kubectl apply -f manifests/

  • 查看是否运行成功
    kubectl get po -n kube-devops

  • 查看 service 端口,通过浏览器访问
    kubectl get svc -n kube-devops

  • 查看容器日志,获取默认密码
    kubectl logs -f pod名称 -n kube-devops

安装插件

Build Authorization Token Root

  • 构建授权 token

Gitlab

  • gitlab 配置插件

SonarQube Scanner

  • 代码质量审查工具

  • 在 Dashboard > 系统管理 > Configure System 下面配置 SonarQube servers

  • Name:sonarqube # 注意这个名字要在 Jenkinsfile 中用到

  • Server URL:http://sonarqube:9000

  • Server authentication token:创建 credentials 配置为从 sonarqube 中得到的 token

  • 进入系统管理 > 全局工具配置 > SonarQube Scanner > Add SonarQube Scanner Name:sonarqube-scanner

  • 自动安装:取消勾选 SONAR_RUNNER_HOME:/usr/local/sonar-scanner-cli

Node and Label parameter

  • 节点标签参数配置

Kubernetes

  • jenkins + k8s 环境配置

  • 进入 Dashboard > 系统管理 > 节点管理 > Configure Clouds 页面

  • 配置 k8s 集群

  • 名称:kubernetes

  • 点击 Kubernetes Cloud details 继续配置

  • Kubernetes 地址:

    • 如果 jenkins 是运行在 k8s 容器中,直接配置服务名即可 https://kubernetes.default
    • 如果 jenkins 部署在外部,那么则不仅要配置外部访问 ip 以及 apiserver 的端口(6443),还需要配- - 置服务证书
  • Jenkins 地址:

  • 配置完成后保存即可

Config File Provider

  • 用于加载外部配置文件,如 Maven 的 settings.xml 或者 k8s 的 kubeconfig 等

Git Parameter

  • git 参数插件,在进行项目参数化构建时使用

创建 gitlab 访问凭证

  • 系统管理 > 安全 > Manage Credentials > System > 全局凭据(unrestricted) > Add Credentials

  • 范围:全局

  • 用户名:root

  • 密码:wolfcode

  • ID:gitlab-user-pass

案例:SpringBoot 项目 CICD

配置节点标签

  • 系统管理 > 节点管理 > 列表中 master 节点最右侧的齿轮按钮

  • 修改标签的值与项目中 Jenkinsfile 中 agent > kubernetes > label 的值相匹配

创建流水线项目

  • 在首页点击 Create a Job 创建一个流水线风格的项目

Webhook 构建触发器

----------- Jenkins 流水线项目 Webhook 配置 -----------

  • 在 Jenkins 项目配置下找到构建触发器栏目

  • 勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.113.121:31216/project/k8s-cicd-demo

  • 上方的 URL 就是用于配置到 gitlab 项目 webhook 的地址

  • 启用 Gitlab 构建触发器: Push Events:勾选,表示有任意推送到 git 仓库的操作都会触发构建 Opend Merge Request Events:勾选,表示有请求合并时触发构建

  • 点击高级 > Secret Token > Generate 按钮,生成 token

  • 保存以上配置

----------- GitLab 项目 Webhook 配置 -----------

  • 进入 GitLab 项目设置界面 > Webhooks

  • 将上方 Jenkins 中的 URL 配置到 URL 处

  • 将上方生成的 Secret Token 配置到 Secret 令牌

  • 按照需求勾选触发来源,这里我依然勾选 推送事件、合并请求事件

  • 取消 SSL 验证

  • 点击添加 webhook 按钮,添加后可以点击测试确认链接是否可以访问

Pipeline 脚本配置

  • 流水线:选择定义为 Pipeline script from SCM 从远程仓库拉取 Jenkinsfile 配置
  • 配置 SCM 为 Git
  • Repositories:
    • Repository URL:仓库地址
    • Credentials:仓库访问的账号密码
    • Branches to build:选择拉取哪个分支下的代码
    • 脚本路径:Jenkinsfile 脚本文件名称以及所在路径

检查/创建相关凭证

Harbor 镜像仓库凭证

  • 通过系统管理 > Manage Credentials > 凭据 > System > 全局凭证 > Add Credentials 添加 Username with password 类型凭证

  • 填写好用户名密码后,需要注意凭证 id 要与 Jenkinsfile 中的 DOCKER_CREDENTIAL_ID 一致

Gitlab 访问凭证

  • 通过系统管理 > Manage Credentials > 凭据 > System > 全局凭证 > Add Credentials 添加 Username with password 类型凭证

  • 填写好用户名密码后,需要注意凭证 id 要与 Jenkinsfile 中的 GIT_CREDENTIAL_ID 一致

kubeconfig 文件 id

  1. 事先安装 Config File Provider 插件
  2. 进入系统管理 > Mapped files > Add a new Config 添加配置文件
    2.1 Type 选择 Custom file 点击 next
    2.2 在 k8s master 节点执行 cat ~/.kube/config 查看文件内容,并将所有内容复制
    2.3 将复制的内容贴到 Config file 的 Content 中后点击 Submit 保存并提交
  3. 复制保存后文件 id 到 Jenkinsfile 中的 KUBECONFIG_CREDENTIAL_ID 处

SonarQube 凭证

  1. 进入 SonarQube 系统,点击右上角用户头像 > 我的账号 进入设置页面
  2. 点击 安全 > 填写令牌名称 > 点击生成按钮生成 token > 复制生成后的 token
  3. 进入 jenkins 添加凭证管理页面,添加 Secret Text 类型的凭证,将 token 贴入其中
  4. 保证凭证 id 与 Jenkinsfile 文件中的 SONAR_CREDENTIAL_ID 一致

添加 SonarQube Webhook

  1. 进入 SonarQube 管理页面,点击顶部菜单栏的配置 > 配置(小三角) > 网络调用
  2. 点击右侧创建按钮创建新的 Webhook,并填写名称与地址

项目构建

  • 方式一:在 Jenkins 管理后台,进入项目中点击立即构建进行项目构建

  • 方式二:在开发工具中修改代码,并将代码提交到远程仓库自动触发构建

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:GYC

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!