apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
  namespace: monitoring
  labels:
    app: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        tier: management
        component: cicd
        app: jenkins
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "8080"
        prometheus.io/path: "/prometheus"
    spec:
      serviceAccountName: jenkins
      securityContext:
        fsGroup: 1000
        runAsUser: 0
      containers:
        - name: jenkins
          image: yurak/jenkins:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: jenkins-persistent-storage
              mountPath: /var/jenkins_home
            - name: docker-socket-volume
              mountPath: /var/run/docker.sock
          env:
            - name: PROMETHEUS_NAMESPACE
              value: "monitoring"
      volumes:
        - name: jenkins-persistent-storage
          persistentVolumeClaim:
            claimName: jenkins-pvc
        - name: docker-socket-volume
          hostPath:
            path: /var/run/docker.sock
