Janrs.com | 杨建勇
Janrs.com | 杨建勇

CICD部署03 - jenkins + gitlab + harbor + k8s

[!Tip]
Docker 部署 jenkins 并连接 gitlab

转载请注明出处:https://janrs.com


docker 部署 jenkins

1.部署


docker run --name jenkins \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v /var/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/bin/docker:/usr/bin/docker \
jenkins/jenkins:2.373

2.替换地址

[!NOTE]
如果 jenkins 下载插件啥的太慢,可以替换源地址或者手动下载对应版本的插件手动安装。

怎么安装自行谷歌。

国内源地址

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

手动下载插件地址

清华大学源

https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/

5.连接 gitlab

[!NOTE]
此处需要注意的是:jenkins 连接 gitlabssh-key 必须是在 jenkins
容器里面生成的。

如果是在部署 jenkins 容器的宿主机生成的是无效的。

到容器里面生成 SSH Key

ssh-keygen

复制 id_rsa.pubgitlabSSH Key

进入 jenkins 的容器手动连接

[!NOTE]
直接到容器里面连接 gitlab 可以省去在 jenkins 设置凭据的繁琐。

git 地址修改为自己的 ip 地址。

git ls-remote -h -- ssh://git@172.16.222.250:1122/janrs/janrs.git HEAD

[!TIP]
以下方式是采用在 jenkins 里面直接用 pod 模板部署的教程。

对比了一下,还是使用 pipilinekubectl 部署比较方便。

1.连接 k8s

1-1.安装 kubernetes 插件

Dashboard -> 系统管理 -> Avaliable Plugins 搜索 kubernetes 插件安装

1-2.获取 kubeconfig

[!NOTE]
直接使用 kubectlkubeconfig 制作证书。

cat ~/.kube/config

1-3.制作登录到 k8s 的证书

获取 certificate-authority-data 并转成 base64 ,制作成 kube-ca.crt

echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpN... | base64 -d > ~/kube-ca.crt

获取 client-certificate-data 并转成 base64 ,制作成 kube-client.crt

echo LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2ak... | base64 -d > ~/kube-client.crt

获取 client-key-data 并转成 base64 ,制作成 kube-client.key

echo LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlF... | base64 -d > ~/kube-client.key

创建证书。创建过程中需要密码。密码需要记下来。

openssl pkcs12 -export -out kube-cert.pfx -inkey kube-client.key -in kube-client.crt -certfile kube-ca.crt

1-4.连接 k8s

[!NOTE]
以上四个文件中,kube-ca.crt 的文件内容在创建 Jenkins 连接到 kubernetes 集群时需要用,kube-cert.pfx
需要上传到 Jenkins 的凭据配置中。

连接 k8s 操作位置:Dashboard -> 系统管理 -> 节点管理 -> Configure Clouds

获取服务证书,填写到 kubernetes 服务端证书 key

cat kube-ca.crt

导入凭据证书 kube-cert.pfx。密码为上面 openssl 生成证书时设置的密码,点击测试连接即可。

2.创建权限

[!NOTE]
rbac 权限根据自己的需要配置。

创建 jenkins 所需要到权限

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: kube-system

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: jenkins
  namespace: kube-system
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/exec"]
  verbs: ["create","delete","get","list","patch","update","watch"]
- apiGroups: [""]
  resources: ["pods/log"]
  verbs: ["get","list","watch"]
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["get"]

---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins
  namespace: kube-system

至此。docker 部署 jenkins 服务成功。

如果你有任何问题,欢迎在底部留言。或者点击加入微信技术交流群 | 我的GitHub

码仔

文章作者

Janrs.com

发表回复

textsms
account_circle
email

Janrs.com | 杨建勇

CICD部署03 - jenkins + gitlab + harbor + k8s
[!Tip] Docker 部署 jenkins 并连接 gitlab 转载请注明出处:https://janrs.com docker 部署 jenkins 1.部署 docker run --name jenkins \ -u root \ -d \ -p 8080:8080 \ -p 50000:50…
扫描二维码继续阅读
2022-09-19