Add helm chart
This commit is contained in:
		
							parent
							
								
									cb1e49ea42
								
							
						
					
					
						commit
						dc59674cd4
					
				|  | @ -0,0 +1,22 @@ | ||||||
|  | # Patterns to ignore when building packages. | ||||||
|  | # This supports shell glob matching, relative path matching, and | ||||||
|  | # negation (prefixed with !). Only one pattern per line. | ||||||
|  | .DS_Store | ||||||
|  | # Common VCS dirs | ||||||
|  | .git/ | ||||||
|  | .gitignore | ||||||
|  | .bzr/ | ||||||
|  | .bzrignore | ||||||
|  | .hg/ | ||||||
|  | .hgignore | ||||||
|  | .svn/ | ||||||
|  | # Common backup files | ||||||
|  | *.swp | ||||||
|  | *.bak | ||||||
|  | *.tmp | ||||||
|  | *~ | ||||||
|  | # Various IDEs | ||||||
|  | .project | ||||||
|  | .idea/ | ||||||
|  | *.tmproj | ||||||
|  | .vscode/ | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | apiVersion: v1 | ||||||
|  | appVersion: "1.0" | ||||||
|  | description: Jenkins operator is a Kubernetes native operator which fully manages Jenkins on Kubernetes | ||||||
|  | name: jenkins-operator | ||||||
|  | version: 0.2.0 | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | 1. Watch Jenkins instance being created: | ||||||
|  | $ kubectl get pods -w | ||||||
|  | 
 | ||||||
|  | 2. Get Jenkins credentials: | ||||||
|  | $ kubectl get secret jenkins-operator-credentials-{{ .Values.jenkins.name }} -o 'jsonpath={.data.user}' | base64 -d | ||||||
|  | $ kubectl get secret jenkins-operator-credentials-{{ .Values.jenkins.name }} -o 'jsonpath={.data.password}' | base64 -d | ||||||
|  | 
 | ||||||
|  | 3. Connect to Jenkins (minikube): | ||||||
|  | $ minikube service jenkins-operator-http-{{ .Values.jenkins.name }} --url | ||||||
|  | Connect to Jenkins (actual Kubernetes cluster): | ||||||
|  | $ kubectl port-forward jenkins-{{ .Values.jenkins.name }} 8080:8080 | ||||||
|  | @ -0,0 +1,45 @@ | ||||||
|  | {{/* vim: set filetype=mustache: */}} | ||||||
|  | {{/* | ||||||
|  | Expand the name of the chart. | ||||||
|  | */}} | ||||||
|  | {{- define "jenkins-operator.name" -}} | ||||||
|  | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} | ||||||
|  | {{- end -}} | ||||||
|  | 
 | ||||||
|  | {{/* | ||||||
|  | Create a default fully qualified app name. | ||||||
|  | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). | ||||||
|  | If release name contains chart name it will be used as a full name. | ||||||
|  | */}} | ||||||
|  | {{- define "jenkins-operator.fullname" -}} | ||||||
|  | {{- if .Values.fullnameOverride -}} | ||||||
|  | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} | ||||||
|  | {{- else -}} | ||||||
|  | {{- $name := default .Chart.Name .Values.nameOverride -}} | ||||||
|  | {{- if contains $name .Release.Name -}} | ||||||
|  | {{- .Release.Name | trunc 63 | trimSuffix "-" -}} | ||||||
|  | {{- else -}} | ||||||
|  | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} | ||||||
|  | {{- end -}} | ||||||
|  | {{- end -}} | ||||||
|  | {{- end -}} | ||||||
|  | 
 | ||||||
|  | {{/* | ||||||
|  | Create chart name and version as used by the chart label. | ||||||
|  | */}} | ||||||
|  | {{- define "jenkins-operator.chart" -}} | ||||||
|  | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} | ||||||
|  | {{- end -}} | ||||||
|  | 
 | ||||||
|  | {{/* | ||||||
|  | Common labels | ||||||
|  | */}} | ||||||
|  | {{- define "jenkins-operator.labels" -}} | ||||||
|  | app.kubernetes.io/name: {{ include "jenkins-operator.name" . }} | ||||||
|  | helm.sh/chart: {{ include "jenkins-operator.chart" . }} | ||||||
|  | app.kubernetes.io/instance: {{ .Release.Name }} | ||||||
|  | {{- if .Chart.AppVersion }} | ||||||
|  | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} | ||||||
|  | {{- end }} | ||||||
|  | app.kubernetes.io/managed-by: {{ .Release.Service }} | ||||||
|  | {{- end -}} | ||||||
|  | @ -0,0 +1,59 @@ | ||||||
|  | apiVersion: apps/v1 | ||||||
|  | kind: Deployment | ||||||
|  | metadata: | ||||||
|  |   name: {{ include "jenkins-operator.fullname" . }} | ||||||
|  |   labels: | ||||||
|  | {{ include "jenkins-operator.labels" . | indent 4 }} | ||||||
|  | spec: | ||||||
|  |   replicas: {{ .Values.replicaCount }} | ||||||
|  |   selector: | ||||||
|  |     matchLabels: | ||||||
|  |       app.kubernetes.io/name: {{ include "jenkins-operator.name" . }} | ||||||
|  |       app.kubernetes.io/instance: {{ .Release.Name }} | ||||||
|  |   template: | ||||||
|  |     metadata: | ||||||
|  |       labels: | ||||||
|  |         app.kubernetes.io/name: {{ include "jenkins-operator.name" . }} | ||||||
|  |         app.kubernetes.io/instance: {{ .Release.Name }} | ||||||
|  |     spec: | ||||||
|  |       serviceAccountName: jenkins-operator | ||||||
|  |     {{- with .Values.imagePullSecrets }} | ||||||
|  |       imagePullSecrets: | ||||||
|  |         {{- toYaml . | nindent 8 }} | ||||||
|  |     {{- end }} | ||||||
|  |       containers: | ||||||
|  |         - name: {{ .Chart.Name }} | ||||||
|  |           image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" | ||||||
|  |           imagePullPolicy: {{ .Values.image.pullPolicy }} | ||||||
|  |           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: | ||||||
|  |             {{- toYaml .Values.resources | nindent 12 }} | ||||||
|  |       {{- with .Values.nodeSelector }} | ||||||
|  |       nodeSelector: | ||||||
|  |         {{- toYaml . | nindent 8 }} | ||||||
|  |       {{- end }} | ||||||
|  |     {{- with .Values.affinity }} | ||||||
|  |       affinity: | ||||||
|  |         {{- toYaml . | nindent 8 }} | ||||||
|  |     {{- end }} | ||||||
|  |     {{- with .Values.tolerations }} | ||||||
|  |       tolerations: | ||||||
|  |         {{- toYaml . | nindent 8 }} | ||||||
|  |     {{- end }} | ||||||
|  | @ -0,0 +1,6 @@ | ||||||
|  | apiVersion: {{ .Values.jenkins.apiVersion }} | ||||||
|  | kind: Jenkins | ||||||
|  | metadata: | ||||||
|  |     name: {{ .Values.jenkins.name }} | ||||||
|  | master: | ||||||
|  |         {{- toYaml .Values.jenkins.master | nindent 4 }} | ||||||
|  | @ -0,0 +1,19 @@ | ||||||
|  | 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 | ||||||
|  | @ -0,0 +1,93 @@ | ||||||
|  | --- | ||||||
|  | kind: Role | ||||||
|  | apiVersion: rbac.authorization.k8s.io/v1 | ||||||
|  | metadata: | ||||||
|  |   name: jenkins-operator | ||||||
|  | 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 | ||||||
|  | @ -0,0 +1,12 @@ | ||||||
|  | --- | ||||||
|  | kind: RoleBinding | ||||||
|  | apiVersion: rbac.authorization.k8s.io/v1 | ||||||
|  | metadata: | ||||||
|  |   name: jenkins-operator | ||||||
|  | subjects: | ||||||
|  | - kind: ServiceAccount | ||||||
|  |   name: jenkins-operator | ||||||
|  | roleRef: | ||||||
|  |   kind: Role | ||||||
|  |   name: jenkins-operator | ||||||
|  |   apiGroup: rbac.authorization.k8s.io | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | --- | ||||||
|  | apiVersion: v1 | ||||||
|  | kind: ServiceAccount | ||||||
|  | metadata: | ||||||
|  |   name: jenkins-operator | ||||||
|  | @ -0,0 +1,88 @@ | ||||||
|  | # Default values for jenkins-operator. | ||||||
|  | # This is a YAML-formatted file. | ||||||
|  | # Declare variables to be passed into your templates. | ||||||
|  | 
 | ||||||
|  | replicaCount: 1 | ||||||
|  | 
 | ||||||
|  | image: | ||||||
|  |   repository: virtuslab/jenkins-operator | ||||||
|  |   tag: v0.2.0 | ||||||
|  |   pullPolicy: IfNotPresent | ||||||
|  | 
 | ||||||
|  | imagePullSecrets: [] | ||||||
|  | nameOverride: "" | ||||||
|  | fullnameOverride: "" | ||||||
|  | 
 | ||||||
|  | jenkins: | ||||||
|  |     apiVersion: jenkins.io/v1alpha2 | ||||||
|  |     name: example | ||||||
|  |     master: | ||||||
|  |       containers: | ||||||
|  |         - name: jenkins-master | ||||||
|  |           image: jenkins/jenkins:lts | ||||||
|  |           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: | ||||||
|  |             limits: | ||||||
|  |               cpu: 1500m | ||||||
|  |               memory: 3Gi | ||||||
|  |             requests: | ||||||
|  |               cpu: "1" | ||||||
|  |               memory: 500Mi | ||||||
|  |       seedJobs: | ||||||
|  |         - id: jenkins-operator | ||||||
|  |           targets: "cicd/jobs/*.jenkins" | ||||||
|  |           description: "Jenkins Operator repository" | ||||||
|  |           repositoryBranch: master | ||||||
|  |           repositoryUrl: https://github.com/jenkinsci/kubernetes-operator.git | ||||||
|  | 
 | ||||||
|  | ingress: | ||||||
|  |   enabled: false | ||||||
|  |   annotations: {} | ||||||
|  |     # kubernetes.io/ingress.class: nginx | ||||||
|  |     # kubernetes.io/tls-acme: "true" | ||||||
|  |   hosts: | ||||||
|  |     - host: chart-example.local | ||||||
|  |       paths: [] | ||||||
|  | 
 | ||||||
|  |   tls: [] | ||||||
|  |   #  - secretName: chart-example-tls | ||||||
|  |   #    hosts: | ||||||
|  |   #      - chart-example.local | ||||||
|  | 
 | ||||||
|  | resources: {} | ||||||
|  |   # We usually recommend not to specify default resources and to leave this as a conscious | ||||||
|  |   # choice for the user. This also increases chances charts run on environments with little | ||||||
|  |   # resources, such as Minikube. If you do want to specify resources, uncomment the following | ||||||
|  |   # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | ||||||
|  |   # limits: | ||||||
|  |   #   cpu: 100m | ||||||
|  |   #   memory: 128Mi | ||||||
|  |   # requests: | ||||||
|  |   #   cpu: 100m | ||||||
|  |   #   memory: 128Mi | ||||||
|  | 
 | ||||||
|  | nodeSelector: {} | ||||||
|  | 
 | ||||||
|  | tolerations: [] | ||||||
|  | 
 | ||||||
|  | affinity: {} | ||||||
		Loading…
	
		Reference in New Issue