Janrs.com | 杨建勇

  • 首页
  • 站点地图
  • 所有文章
  • 加入学习群
Janrs.com | 杨建勇
Go/Kubernetes/Istio/CloudNative
  1. 首页
  2. CICD
  3. 正文

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

2022年9月19日 143点热度 686人点赞 1条评论

[!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 连接 gitlab 的 ssh-key 必须是在 jenkins
容器里面生成的。

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

到容器里面生成 SSH Key

ssh-keygen

复制 id_rsa.pub 到 gitlab 的 SSH 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 模板部署的教程。

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

1.连接 k8s

1-1.安装 kubernetes 插件

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

1-2.获取 kubeconfig

[!NOTE]
直接使用 kubectl 的 kubeconfig 制作证书。

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 服务成功。

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: cicd docker gitlab go golang harbor jenkins k8s kubernetes 架构 自动化
最后更新:2023年3月25日

码仔

Janrs.com

点赞
< 上一篇
下一篇 >

文章评论

  • 匿名

    666

    2023年2月23日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复
    有关Go/istio/k8s/云原生直接搜
    文章目录
    • docker 部署 jenkins
      • 1.部署
      • 2.替换地址
      • 5.连接 gitlab
      • 1.连接 k8s
        • 1-1.安装 kubernetes 插件
        • 1-2.获取 kubeconfig
        • 1-3.制作登录到 k8s 的证书
        • 1-4.连接 k8s
      • 2.创建权限
      • 至此。docker 部署 jenkins 服务成功。

    COPYRIGHT © 2023 Janrs.com | 杨建勇. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang

    闽ICP备20002184号