美文网首页
kubernetes集群内部署jenkins

kubernetes集群内部署jenkins

作者: richard520 | 来源:发表于2020-05-18 11:03 被阅读0次

    1.首先创建pv和pvc 用于Jenkins的存储

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: opspv
    spec:
      capacity:
        storage: 20Gi
      accessModes:
      - ReadWriteMany
      persistentVolumeReclaimPolicy: Delete
      nfs:
        server: 192.168.111.118
        path: /data/nfs/jenkins
    
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: opspvc
      namespace: kube-ops
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
    

    制作jenkins对k8s集群操作的用户权限

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: jenkins2
      namespace: kube-ops
    
    ---
    
    kind: ClusterRole
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
      name: jenkins2
    rules:
      - apiGroups: ["extensions", "apps"]
        resources: ["deployments"]
        verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
      - apiGroups: [""]
        resources: ["services"]
        verbs: ["create", "delete", "get", "list", "watch", "patch", "update"]
      - 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: ClusterRoleBinding
    metadata:
      name: jenkins2
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: jenkins2
    subjects:
      - kind: ServiceAccount
        name: jenkins2
        namespace: kube-ops
    

    3.创建jenkins的Deployment和Service

    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: jenkins2
      namespace: kube-ops
    spec:
      template:
        metadata:
          labels:
            app: jenkins2
        spec:
          terminationGracePeriodSeconds: 10
          serviceAccountName: jenkins2
          containers:
          - name: jenkins
            image: jenkins/jenkins:lts
            imagePullPolicy: IfNotPresent
            ports:
            - containerPort: 8080
              name: web
              protocol: TCP
            - containerPort: 50000
              name: agent
              protocol: TCP
            resources:
              limits:
                cpu: 2000m
                memory: 2Gi
              requests:
                cpu: 1000m
                memory: 1024Mi
            livenessProbe:
              httpGet:
                path: /login
                port: 8080
              initialDelaySeconds: 60
              timeoutSeconds: 5
              failureThreshold: 12
            readinessProbe:
              httpGet:
                path: /login
                port: 8080
              initialDelaySeconds: 60
              timeoutSeconds: 5
              failureThreshold: 12
            volumeMounts:
            - name: jenkinshome
              subPath: jenkins2
              mountPath: /var/jenkins_home
            env:
            - name: LIMITS_MEMORY
              valueFrom:
                resourceFieldRef:
                  resource: limits.memory
                  divisor: 1Mi
            - name: JAVA_OPTS
              value: -Xmx$(LIMITS_MEMORY)m -XshowSettings:vm -Dhudson.slaves.NodeProvisioner.initialDelay=0 -Dhudson.slaves.NodeProvisioner.MARGIN=50 -Dhudson.slaves.NodeProvisioner.MARGIN0=0.85 -Duser.timezone=Asia/Shanghai
          securityContext:
            fsGroup: 1000
          volumes:
          - name: jenkinshome
            persistentVolumeClaim:
              claimName: opspvc
    
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: jenkins2
      namespace: kube-ops
      labels:
        app: jenkins2
    spec:
      selector:
        app: jenkins2
      type: NodePort
      sessionAffinity: ClientIP
      ports:
      - name: web
        port: 8080
        targetPort: web
        nodePort: 30006
      - name: agent
        port: 50000
        targetPort: agent
    

    相关文章

      网友评论

          本文标题:kubernetes集群内部署jenkins

          本文链接:https://www.haomeiwen.com/subject/jhfuohtx.html