小知识:Kubernetes安装Jenkins的思路详解

环境

生产实践-k8s安装Jenkins和Jenkins Kubernetes插件

环境要求:你需要一个正常可以使用的Kubernetes集群,集群中可以使用的内存大于等于4G。

Kubernetes版本1.18

思路

Jenkins插件可以在Kubernetes集群中运行动态jenkinsslave代理。

基于Kubernetes的docker,自动化在Kubernetes中运行的Jenkins-slave代理的缩放。

该插件为每个jenkins-slave代理创建Kubernetes Pod,并在每个构建后停止它。

在Kubernetes中jenkins-slave代理启动,会自动连接到Jenkins主控制器。 对于某些环境变量,会自动注入:

Jenkins_URL:Jenkins Web界面URL

jenkins_secret:身份验证的秘密密钥

jenkins_agent_name:jenkins代理的名称

jenkins_name:jenkins代理的名称(已弃用。仅用于向后兼容性)

不需要在Kubernetes内运行Jenkins Controller。

1、NFS(动态存储)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#安装
yum install -y nfs-utils rpcbind
mkdir -p /data/nfsdata
# 修改配置
$ vim /etc/exports
/data/nfsdata 192.168.31.* (rw,async,no_root_squash)
# 使配置生效
$ exportfs -r
# 服务端查看下是否生效
$ showmount -e localhost
Export list for localhost:
/data/nfsdata (everyone)

2、helm安装nfs-client

?
1
2
stable          https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm添加这个源
?
1
2
3
4
5
6
7
8
9
10
11
12
13
下载helm包
helm pull aliyuncs/nfs-client-provisioner
解压
tar -zxvf nfs-client-provisioner-1.2.8.tgz
修复values.yaml 三处
image:
repository: quay.io/external_storage/nfs-client-provisioner
tag: v3.1.0-k8s1.11
pullPolicy: IfNotPresent
nfs:
server: 192.168.31.73
path: /data/nfsdata
reclaimPolicy: Retain

%小知识:Kubernetes安装Jenkins的思路详解-猿站网-插图

3、创建namespace

?
1
2
kubectl create namespace jenkins
kubectl get namespaces

4、持久化Jenkins数据

pvc.yaml

?
1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pvc
namespace: jenkins
spec:
storageClassName: “nfsdata”
accessModes:
– ReadWriteMany
resources:
requests:
storage: 10Gi

通过kubectl部署volume

?
1
kubectl apply -f pvc.yaml

5、创建service account

创建pod时,如果不指定服务账户,则会自动为其分配一个名为default的同一namespace中的服务账户。但是通常应用程序时存在权限不足的情况,所以需要我们自己创建一个服务账户。

①下载jenkins-sa.yaml
?
1
wget https://raw.githubusercontent.com/jenkins-infra/jenkins.io/master/content/doc/tutorials/kubernetes/installing-jenkins-on-kubernetes/jenkins-sa.yaml

②通过kubectl部署jenkins-sa.yaml

?
1
kubectl apply -f jenkins-sa.yaml

或者使用下面的文件

jenkins-sa.yaml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins
namespace: jenkins
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: “true”
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: jenkins
rules:
– apiGroups:
– *
resources:
– statefulsets
– services
– replicationcontrollers
– replicasets
– podtemplates
– podsecuritypolicies
– pods
– pods/log
– pods/exec
– podpreset
– poddisruptionbudget
– persistentvolumes
– persistentvolumeclaims
– jobs
– endpoints
– deployments
– deployments/scale
– daemonsets
– cronjobs
– configmaps
– namespaces
– events
– secrets
verbs:
– create
– get
– watch
– delete
– list
– patch
– update
– apiGroups:
– “”
resources:
– nodes
verbs:
– get
– list
– watch
– update
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: “true”
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: jenkins
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: jenkins
subjects:
– apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts:jenkins

6、安装Jenkins

jenkins-deployment.yaml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
namespace: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins
template:
metadata:
labels:
app: jenkins
spec:
serviceAccountName: jenkins   #指定我们前面创建的服务账号
containers:
– name: jenkins
image: registry.cn-hangzhou.aliyuncs.com/s-ops/jenkins:2.346
ports:
– containerPort: 8080
– containerPort: 50000
volumeMounts:
– name: jenkins-home
mountPath: /var/jenkins_home
volumes:
– name: jenkins-home
persistentVolumeClaim:
claimName: jenkins-pvc     #指定前面创建的PVC

通过kubectl部署jenkins-deployment.yaml

?
1
kubectl create -f jenkins-deployment.yaml -n jenkins

7、授权对Jenkins服务的访问权限

主要目的暴露外部访问Jenkins的8080端口,我将31400定义为8080的映射端口。

jenkins-service.yaml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: jenkins
spec:
type: NodePort
ports:
– name: http
port: 8080
targetPort: 8080
nodePort: 31400
– name: agent
port: 50000
targetPort: 50000
nodePort: 31401
selector:
app: jenkins

通过kubectl部署服务

?
1
kubectl create -f jenkins-service.yaml -n jenkins

8、打开浏览器IP:31400/

查看密码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
kubectl get pod -n jenkins  //查询podname
kubectl logs podname -n jenkins
*************************************************************
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
cf8d9da9de0346fd90461be366915d76
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************

选择推荐插件安装,创建管理员~完成!

%小知识:Kubernetes安装Jenkins的思路详解-1猿站网-插图

到此这篇关于Kubernetes安装Jenkins的文章就介绍到这了,更多相关Kubernetes安装Jenkins内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/heian_99/article/details/124985786

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:VMware虚拟机的三种网络模式(桥接模式Bridged、地址转换模式NAT、仅主机模式Host-Only)详解

2023-3-6 15:59:39

建站知识

小知识:Docker容器的加载分层原理及commit镜像

2023-3-6 16:06:29

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索