CI/CD:基于kubernetes的Jenkins搭建

1. 项目目标

(1)熟悉使用k8s环境搭建Jenkins

(2)熟练应用Jenkins基本配置

2. 项目准备

2.1. 规划节点

主机名

主机IP

节点规划

k8s-master

10.0.1.1

kube_master

k8s-node1

10.0.1.2

kube_node

k8s-node2

10.0.1.3

kube_node

2.2. 基础准备

系统镜像:CentOS 7.9

Jenkins镜像:

docker pull jenkins/jenkins

环境准备:kubernetes环境准备,可以参考以下内容

3. 项目实施

3.1. Jenkins在k8s上部署

(1)安装Jenkins

  • 新建命名空间:
kubectl create ns devops
  • 编写Jenkins资源清单文件:
vim jenkins-deploy.yaml

apiVersion: v1
kind: Service
metadata:
  name: jenkins
  labels:
    app: jenkins
spec:
  type: NodePort
  ports:
  - name: http
    port: 8080
    targetPort: 8080
    nodePort: 30880
  - name: agent
    port: 50000
    targetPort: agent
    nodePort: 30850
  selector:
    app: jenkins

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  labels:
    app: jenkins
spec:
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      serviceAccountName: jenkins-admin
      containers:
      - name: jenkins
        image: jenkins/jenkins:latest
        imagePullPolicy: IfNotPresent
        securityContext:
          runAsUser: 0
          privileged: true
        ports:
        - name: http
          containerPort: 8080
        volumeMounts:
        - mountPath: /var/jenkins_home
          name: jenkinshome
        - mountPath: /usr/bin/docker
          name: docker
        - mountPath: /var/run/docker.sock
          name: dockersock
        - mountPath: /usr/bin/kubectl
          name: kubectl
        - mountPath: /root/.kube
          name: kubeconfig
      volumes:
      - name: jenkinshome
        hostPath:
          path: /home/jenkins_home
      - name: docker
        hostPath:
          path: /usr/bin/docker
      - name: dockersock
        hostPath:
          path: /var/run/docker.sock
      - name: kubectl
        hostPath:
          path: /usr/bin/kubectl
      - name: kubeconfig
        hostPath:
          path: /root/.kube
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: jenkinshome
  annotations:
    volume.beta.kubernetes.io/storage-class: local-path
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1024Mi
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins-admin
  labels:
    name: jenkins
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: jenkins-admin
  labels:
    name: jenkins
subjects:
  - kind: ServiceAccount
    name: jenkins-admin
    namespace: default
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
  • 部署Jenkins:
kubectl -n devops apply -f jenkins-deploy.yaml
  • 查看Pod:
kubectl -n devops get pods

(2)访问Jenkins

  • 查看Jenkins Service端口:
kubectl -n devops get svc

在Web端使用浏览器访问Jenkins(http://ip:30880)

  • 获取Jenkins密码:
kubectl -n devops exec deploy/jenkins -- cat /var/jenkins_home/secrets/initialAdminPassword
ec64ed4c8773455392d392abefef53e1

输入密码后单击“继续”按钮。

  • 安装插件,安装不成功也没关系。

  • 创建用户

3.2. Jenkins基本使用

  • 安装成功

  • 更新版本

更新完成后重启Jenkins。

4. 项目总结

本博客使用kubernetes环境搭建了Jenkins,并进行基本配置。

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值