Skip to content

Instantly share code, notes, and snippets.

@rcosnita
Created November 28, 2019 12:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rcosnita/dee6946c0e00560403d251338e70f2ed to your computer and use it in GitHub Desktop.
Save rcosnita/dee6946c0e00560403d251338e70f2ed to your computer and use it in GitHub Desktop.
Jenkins operator k8s definition
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: jenkins.jenkins.io
spec:
group: jenkins.io
names:
kind: Jenkins
listKind: JenkinsList
plural: jenkins
singular: jenkins
scope: Namespaced
versions:
- name : v1alpha2
served: true
storage: true
- name : v1alpha1
served: true
storage: false
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: jenkins-operator
namespace: ${NAMESPACE}
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: jenkins-operator
namespace: ${NAMESPACE}
rules:
- apiGroups:
- ""
resources:
- services
- configmaps
- secrets
verbs:
- get
- create
- update
- list
- watch
- apiGroups:
- apps
resources:
- deployments
- daemonsets
- replicasets
- statefulsets
verbs:
- "*"
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- apiGroups:
- rbac.authorization.k8s.io
resources:
- roles
- rolebindings
verbs:
- create
- update
- apiGroups:
- ""
resources:
- pods/portforward
verbs:
- create
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- pods
- pods/exec
verbs:
- "*"
- apiGroups:
- ""
resources:
- events
verbs:
- watch
- list
- create
- patch
- apiGroups:
- apps
resourceNames:
- jenkins-operator
resources:
- deployments/finalizers
verbs:
- update
- apiGroups:
- jenkins.io
resources:
- "*"
verbs:
- "*"
- apiGroups:
- ""
resources:
- persistentvolumeclaims
verbs:
- get
- list
- watch
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: jenkins-operator
namespace: ${NAMESPACE}
subjects:
- kind: ServiceAccount
name: jenkins-operator
roleRef:
kind: Role
name: jenkins-operator
apiGroup: rbac.authorization.k8s.io
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-operator
namespace: ${NAMESPACE}
spec:
replicas: 1
selector:
matchLabels:
name: jenkins-operator
template:
metadata:
labels:
name: jenkins-operator
spec:
serviceAccountName: jenkins-operator
nodeSelector:
os: linux
high_cpu: "true"
high_networking: "true"
public: "false"
containers:
- name: jenkins-operator
image: "${JENKINS_OPERATOR_VERSION}"
ports:
- name: http
containerPort: 80
protocol: TCP
command:
- jenkins-operator
args: []
env:
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: OPERATOR_NAME
value: "jenkins-operator"
resources:
requests:
cpu: 1
memory: 1Gi
---
apiVersion: jenkins.io/v1alpha2
kind: Jenkins
metadata:
name: veridium
namespace: ${NAMESPACE}
spec:
master:
basePlugins:
- name: kubernetes
version: 1.21.3
- name: command-launcher
version: "1.3"
- name: workflow-job
version: "2.34"
- name: workflow-aggregator
version: "2.6"
- name: git
version: 4.0.0
- name: job-dsl
version: "1.76"
- name: configuration-as-code
version: "1.33"
- name: configuration-as-code-support
version: "1.19"
- name: kubernetes-credentials-provider
version: "0.13"
- name: bouncycastle-api
version: "2.17"
containers:
- name: jenkins-master
image: ${JENKINS_VERSION}
imagePullPolicy: Always
livenessProbe:
failureThreshold: 12
httpGet:
path: /login
port: http
scheme: HTTP
initialDelaySeconds: 80
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 5
readinessProbe:
failureThreshold: 3
httpGet:
path: /login
port: http
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
resources:
requests:
cpu: 2
memory: 3Gi
seedJobs:
- id: ***
credentialType: basicSSHUserPrivateKey
credentialID: ***
targets: "cicd/jobs/*.jenkins"
description: "*** repository"
repositoryBranch: develop
repositoryUrl: ***
---
apiVersion: v1
kind: Secret
metadata:
name: ***
namespace: ${NAMESPACE}
data:
privateKey: ***
username: ***
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-internal-lb
namespace: ${NAMESPACE}
labels:
name: jenkins-internal-lb
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
name: http
- port: 50000
targetPort: 50000
name: jenkins-slave
selector:
app: jenkins-operator
jenkins-cr: veridium
---
apiVersion: v1
kind: Service
metadata:
name: jenkins-public
namespace: ${NAMESPACE}
labels:
name: jenkins-public
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: ${SERVICE_PORT}
name: http
selector:
app: jenkins-operator
jenkins-cr: veridium
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment