[!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
发表回复