Skip to content

Commit 5846a3f

Browse files
authored
ArangoJob controller (#874)
1 parent 69f08e1 commit 5846a3f

File tree

126 files changed

+1023
-143
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+1023
-143
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
- License V2 for ArangoDB 3.9.0+
1111
- Add ArangoClusterSynchronization v1 API
1212
- Add core containers names to follow their terminations
13+
- Add ArangoJob and Apps Operator
1314

1415
## [1.2.6](https://github.com/arangodb/kube-arangodb/tree/1.2.6) (2021-12-15)
1516
- Add ArangoBackup backoff functionality

Makefile

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,15 @@ MANIFESTPATHCRD := manifests/arango-crd$(MANIFESTSUFFIX).yaml
9696
MANIFESTPATHDEPLOYMENT := manifests/arango-deployment$(MANIFESTSUFFIX).yaml
9797
MANIFESTPATHDEPLOYMENTREPLICATION := manifests/arango-deployment-replication$(MANIFESTSUFFIX).yaml
9898
MANIFESTPATHBACKUP := manifests/arango-backup$(MANIFESTSUFFIX).yaml
99+
MANIFESTPATHAPPS := manifests/arango-apps$(MANIFESTSUFFIX).yaml
99100
MANIFESTPATHSTORAGE := manifests/arango-storage$(MANIFESTSUFFIX).yaml
100101
MANIFESTPATHALL := manifests/arango-all$(MANIFESTSUFFIX).yaml
101102
MANIFESTPATHTEST := manifests/arango-test$(MANIFESTSUFFIX).yaml
102103
KUSTOMIZEPATHCRD := manifests/kustomize/crd/arango-crd$(MANIFESTSUFFIX).yaml
103104
KUSTOMIZEPATHDEPLOYMENT := manifests/kustomize/deployment/arango-deployment$(MANIFESTSUFFIX).yaml
104105
KUSTOMIZEPATHDEPLOYMENTREPLICATION := manifests/kustomize/deployment-replication/arango-deployment-replication$(MANIFESTSUFFIX).yaml
105106
KUSTOMIZEPATHBACKUP := manifests/kustomize/backup/arango-backup$(MANIFESTSUFFIX).yaml
107+
KUSTOMIZEPATHAPPS := manifests/kustomize/apps/arango-apps$(MANIFESTSUFFIX).yaml
106108
KUSTOMIZEPATHSTORAGE := manifests/kustomize/storage/arango-storage$(MANIFESTSUFFIX).yaml
107109
KUSTOMIZEPATHALL := manifests/kustomize/all/arango-all$(MANIFESTSUFFIX).yaml
108110
KUSTOMIZEPATHTEST := manifests/kustomize/test/arango-test$(MANIFESTSUFFIX).yaml
@@ -325,30 +327,42 @@ $(eval $(call manifest-generator, deployment, kube-arangodb, \
325327
--set "operator.features.deployment=true" \
326328
--set "operator.features.deploymentReplications=false" \
327329
--set "operator.features.storage=false" \
330+
--set "operator.features.apps=false" \
328331
--set "operator.features.backup=false"))
329332

330333
$(eval $(call manifest-generator, deployment-replication, kube-arangodb, \
331334
--set "operator.features.deployment=false" \
332335
--set "operator.features.deploymentReplications=true" \
333336
--set "operator.features.storage=false" \
337+
--set "operator.features.apps=false" \
334338
--set "operator.features.backup=false"))
335339

336340
$(eval $(call manifest-generator, storage, kube-arangodb, \
337341
--set "operator.features.deployment=false" \
338342
--set "operator.features.deploymentReplications=false" \
339343
--set "operator.features.storage=true" \
344+
--set "operator.features.apps=false" \
340345
--set "operator.features.backup=false"))
341346

342347
$(eval $(call manifest-generator, backup, kube-arangodb, \
343348
--set "operator.features.deployment=false" \
344349
--set "operator.features.deploymentReplications=false" \
345350
--set "operator.features.storage=false" \
351+
--set "operator.features.apps=false" \
346352
--set "operator.features.backup=true"))
347353

354+
$(eval $(call manifest-generator, apps, kube-arangodb, \
355+
--set "operator.features.deployment=false" \
356+
--set "operator.features.deploymentReplications=false" \
357+
--set "operator.features.storage=false" \
358+
--set "operator.features.apps=true" \
359+
--set "operator.features.backup=false"))
360+
348361
$(eval $(call manifest-generator, all, kube-arangodb, \
349362
--set "operator.features.deployment=true" \
350363
--set "operator.features.deploymentReplications=true" \
351364
--set "operator.features.storage=true" \
365+
--set "operator.features.apps=true" \
352366
--set "operator.features.backup=true"))
353367

354368
.PHONY: chart-crd
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: apiextensions.k8s.io/v1
2+
kind: CustomResourceDefinition
3+
metadata:
4+
name: arangojobs.apps.arangodb.com
5+
labels:
6+
app.kubernetes.io/name: {{ template "kube-arangodb-crd.name" . }}
7+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
8+
app.kubernetes.io/managed-by: {{ .Release.Service }}
9+
app.kubernetes.io/instance: {{ .Release.Name }}
10+
release: {{ .Release.Name }}
11+
spec:
12+
group: apps.arangodb.com
13+
names:
14+
kind: ArangoJob
15+
listKind: ArangoJobList
16+
plural: arangojobs
17+
singular: arangojob
18+
shortNames:
19+
- arangojob
20+
scope: Namespaced
21+
versions:
22+
- name: v1
23+
schema:
24+
openAPIV3Schema:
25+
type: object
26+
x-kubernetes-preserve-unknown-fields: true
27+
served: true
28+
storage: true
29+
additionalPrinterColumns:
30+
- jsonPath: .spec.arangoDeploymentName
31+
description: Deployment name
32+
name: ArangoDeploymentName
33+
type: string
34+
subresources:
35+
status: {}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{{ if .Values.rbac.enabled -}}
2+
{{ if not (eq .Values.operator.scope "namespaced") -}}
3+
{{ if .Values.operator.features.apps -}}
4+
5+
apiVersion: rbac.authorization.k8s.io/v1
6+
kind: ClusterRoleBinding
7+
metadata:
8+
name: {{ template "kube-arangodb.rbac-cluster" . }}-apps
9+
labels:
10+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
11+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
12+
app.kubernetes.io/managed-by: {{ .Release.Service }}
13+
app.kubernetes.io/instance: {{ .Release.Name }}
14+
release: {{ .Release.Name }}
15+
roleRef:
16+
apiGroup: rbac.authorization.k8s.io
17+
kind: ClusterRole
18+
name: {{ template "kube-arangodb.rbac-cluster" . }}-apps
19+
subjects:
20+
- kind: ServiceAccount
21+
name: {{ template "kube-arangodb.operatorName" . }}
22+
namespace: {{ .Release.Namespace }}
23+
24+
{{- end }}
25+
{{- end }}
26+
{{- end }}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{{ if .Values.rbac.enabled -}}
2+
{{ if not (eq .Values.operator.scope "namespaced") -}}
3+
{{ if .Values.operator.features.apps -}}
4+
5+
apiVersion: rbac.authorization.k8s.io/v1
6+
kind: ClusterRole
7+
metadata:
8+
name: {{ template "kube-arangodb.rbac-cluster" . }}-apps
9+
labels:
10+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
11+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
12+
app.kubernetes.io/managed-by: {{ .Release.Service }}
13+
app.kubernetes.io/instance: {{ .Release.Name }}
14+
release: {{ .Release.Name }}
15+
rules:
16+
- apiGroups: ["apiextensions.k8s.io"]
17+
resources: ["customresourcedefinitions"]
18+
verbs: ["get", "list", "watch"]
19+
20+
{{- end }}
21+
{{- end }}
22+
{{- end }}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
{{ if .Values.rbac.enabled -}}
2+
{{ if .Values.operator.features.apps -}}
3+
4+
apiVersion: rbac.authorization.k8s.io/v1
5+
kind: RoleBinding
6+
metadata:
7+
name: {{ template "kube-arangodb.rbac" . }}-apps
8+
namespace: {{ .Release.Namespace }}
9+
labels:
10+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
11+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
12+
app.kubernetes.io/managed-by: {{ .Release.Service }}
13+
app.kubernetes.io/instance: {{ .Release.Name }}
14+
release: {{ .Release.Name }}
15+
roleRef:
16+
apiGroup: rbac.authorization.k8s.io
17+
kind: Role
18+
name: {{ template "kube-arangodb.rbac" . }}-apps
19+
subjects:
20+
- kind: ServiceAccount
21+
name: {{ template "kube-arangodb.operatorName" . }}
22+
namespace: {{ .Release.Namespace }}
23+
24+
---
25+
26+
apiVersion: rbac.authorization.k8s.io/v1
27+
kind: RoleBinding
28+
metadata:
29+
name: {{ template "kube-arangodb.rbac" . }}-job
30+
namespace: {{ .Release.Namespace }}
31+
labels:
32+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
33+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
34+
app.kubernetes.io/managed-by: {{ .Release.Service }}
35+
app.kubernetes.io/instance: {{ .Release.Name }}
36+
release: {{ .Release.Name }}
37+
roleRef:
38+
apiGroup: rbac.authorization.k8s.io
39+
kind: Role
40+
name: {{ template "kube-arangodb.rbac" . }}-job
41+
subjects:
42+
- kind: ServiceAccount
43+
name: {{ template "kube-arangodb.operatorName" . }}-job
44+
namespace: {{ .Release.Namespace }}
45+
46+
{{- end }}
47+
{{- end }}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{{ if .Values.rbac.enabled -}}
2+
{{ if .Values.operator.features.apps -}}
3+
4+
apiVersion: rbac.authorization.k8s.io/v1
5+
kind: Role
6+
metadata:
7+
name: {{ template "kube-arangodb.rbac" . }}-apps
8+
namespace: {{ .Release.Namespace }}
9+
labels:
10+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
11+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
12+
app.kubernetes.io/managed-by: {{ .Release.Service }}
13+
app.kubernetes.io/instance: {{ .Release.Name }}
14+
release: {{ .Release.Name }}
15+
rules:
16+
- apiGroups: [""]
17+
resources: ["pods", "services", "endpoints"]
18+
verbs: ["get", "update"]
19+
- apiGroups: [""]
20+
resources: ["events"]
21+
verbs: ["*"]
22+
- apiGroups: [""]
23+
resources: ["secrets"]
24+
verbs: ["get"]
25+
- apiGroups: ["apps"]
26+
resources: ["deployments", "replicasets"]
27+
verbs: ["get"]
28+
- apiGroups: ["batch"]
29+
resources: ["jobs"]
30+
verbs: ["*"]
31+
- apiGroups: ["database.arangodb.com"]
32+
resources: ["arangodeployments"]
33+
verbs: ["get", "list", "watch"]
34+
- apiGroups: ["apps.arangodb.com"]
35+
resources: ["arangojobs","arangojobs/status"]
36+
verbs: ["*"]
37+
---
38+
apiVersion: rbac.authorization.k8s.io/v1
39+
kind: Role
40+
metadata:
41+
name: {{ template "kube-arangodb.rbac" . }}-job
42+
namespace: {{ .Release.Namespace }}
43+
labels:
44+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
45+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
46+
app.kubernetes.io/managed-by: {{ .Release.Service }}
47+
app.kubernetes.io/instance: {{ .Release.Name }}
48+
release: {{ .Release.Name }}
49+
rules:
50+
- apiGroups: ["database.arangodb.com"]
51+
resources: ["arangodeployments"]
52+
verbs: ["get", "list", "watch"]
53+
{{- end }}
54+
{{- end }}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{{ if .Values.operator.features.apps -}}
2+
apiVersion: v1
3+
kind: ServiceAccount
4+
metadata:
5+
name: {{ template "kube-arangodb.operatorName" . }}-job
6+
namespace: {{ .Release.Namespace }}
7+
labels:
8+
app.kubernetes.io/name: {{ template "kube-arangodb.name" . }}
9+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
10+
app.kubernetes.io/managed-by: {{ .Release.Service }}
11+
app.kubernetes.io/instance: {{ .Release.Name }}
12+
release: {{ .Release.Name }}
13+
{{- if .Values.operator.imagePullSecrets }}
14+
imagePullSecrets:
15+
{{- range .Values.operator.imagePullSecrets }}
16+
- name: {{ . }}
17+
{{- end }}
18+
{{- end }}
19+
{{- end }}

chart/kube-arangodb/templates/backup-operator/role-binding.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,5 @@ subjects:
2121
name: {{ template "kube-arangodb.operatorName" . }}
2222
namespace: {{ .Release.Namespace }}
2323

24-
2524
{{- end }}
2625
{{- end }}

chart/kube-arangodb/templates/deployment.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ spec:
102102
{{- end }}
103103
{{ if .Values.operator.features.backup }}
104104
- --operator.backup
105+
{{- end }}
106+
{{ if .Values.operator.features.apps }}
107+
- --operator.apps
105108
{{- end }}
106109
- --chaos.allowed={{ .Values.operator.allowChaos }}
107110
{{- if .Values.operator.args }}
@@ -128,6 +131,10 @@ spec:
128131
value: "{{ .Values.operator.images.metricsExporter }}"
129132
- name: RELATED_IMAGE_DATABASE
130133
value: "{{ .Values.operator.images.arango }}"
134+
{{- if .Values.operator.features.apps }}
135+
- name: ARANGOJOB_SA_NAME
136+
value: "{{ template "kube-arangodb.operatorName" . }}-job"
137+
{{- end }}
131138
ports:
132139
- name: metrics
133140
containerPort: 8528

0 commit comments

Comments
 (0)