1. 首页
  2. 技术知识

Kubernetes安装Jenkins的思路详解

目录

    环境思路1、NFS(动态存储)2、helm安装nfs-client3、创建namespace4、持久化Jenkins数据5、创建service account6、安装Jenkins7、授权对Jenkins服务的访问权限8、打开浏览器IP:31400/

环境

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

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

Kubernetes版本1.18

思路

Jenkins插件可以在Kubernetes集群中运行动态jenkins-slaveX。

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

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

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

Jenkins_URL:Jenkins Web界面URL

jenkins_secret:身份验证的秘密密钥

jenkins_agent_name:jenkinsX的名称

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

不需要在Kubernetes内运行Jenkins Controller。

1、NFS(动态存储)

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

复制代码
2、helm安装nfs-client

  1. stable               https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
  2. helm添加这个源

复制代码

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

复制代码


3、创建namespace

  1. kubectl create namespace jenkins
  2. kubectl get namespaces

复制代码
4、持久化Jenkins数据

pvc.yaml

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

复制代码
6、安装Jenkins

jenkins-deployment.yaml

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

复制代码 通过kubectl部署服务

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

复制代码
8、打开浏览器IP:31400/

查看密码

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

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

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

原创文章,作者:starterknow,如若转载,请注明出处:https://www.starterknow.com/108979.html

联系我们