Skip to content

Commit 3803488

Browse files
authored
[Feature] [Analytics] StatefulSet (#1666)
1 parent e6a4ad4 commit 3803488

File tree

7 files changed

+2009
-1
lines changed

7 files changed

+2009
-1
lines changed

.golangci.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ linters-settings:
6969
alias: shared
7070
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/analytics/shared
7171
alias: analyticsShared
72+
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/shared
73+
alias: enterpriseShared
7274
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/ml/shared
7375
alias: mlShared
7476
- pkg: github.com/arangodb/kube-arangodb/pkg/handlers/enterprise/ml/shared/test

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
- (Feature) (Analytics) Enable TLS and Service
1717
- (Feature) (ML) Unify Integration Sidecar
1818
- (Feature) (Analytics) Metadata
19+
- (Feature) (Analytics) StatefulSet
1920

2021
## [1.2.40](https://github.com/arangodb/kube-arangodb/tree/1.2.40) (2024-04-10)
2122
- (Feature) Add Core fields to the Scheduler Container Spec

docs/api/GraphAnalyticsEngine.V1Alpha1.md

+347-1
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,281 @@ title: GraphAnalyticsEngine V1Alpha1
88

99
## Spec
1010

11+
### .spec.deployment.affinity
12+
13+
Type: `core.Affinity` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/scheduling.go#L44)</sup>
14+
15+
Affinity defines scheduling constraints for workload
16+
17+
Links:
18+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity)
19+
20+
***
21+
22+
### .spec.deployment.annotations
23+
24+
Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/metadata.go#L45)</sup>
25+
26+
Annotations is an unstructured key value map stored with a resource that may be
27+
set by external tools to store and retrieve arbitrary metadata. They are not
28+
queryable and should be preserved when modifying objects.
29+
30+
Links:
31+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations)
32+
33+
***
34+
35+
### .spec.deployment.args
36+
37+
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/core.go#L50)</sup>
38+
39+
Arguments to the entrypoint.
40+
The container image's CMD is used if this is not provided.
41+
Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
42+
cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
43+
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
44+
produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
45+
of whether the variable exists or not. Cannot be updated.
46+
47+
Links:
48+
* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell)
49+
50+
***
51+
52+
### .spec.deployment.automountServiceAccountToken
53+
54+
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/service_account.go#L38)</sup>
55+
56+
AutomountServiceAccountToken indicates whether a service account token should be automatically mounted.
57+
58+
***
59+
60+
### .spec.deployment.command
61+
62+
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/core.go#L40)</sup>
63+
64+
Entrypoint array. Not executed within a shell.
65+
The container image's ENTRYPOINT is used if this is not provided.
66+
Variable references $(VAR_NAME) are expanded using the container's environment. If a variable
67+
cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced
68+
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will
69+
produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless
70+
of whether the variable exists or not. Cannot be updated.
71+
72+
Links:
73+
* [Kubernetes Docs](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell)
74+
75+
***
76+
77+
### .spec.deployment.env
78+
79+
Type: `core.EnvVar` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/environments.go#L36)</sup>
80+
81+
Env keeps the information about environment variables provided to the container
82+
83+
Links:
84+
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envvar-v1-core)
85+
86+
***
87+
88+
### .spec.deployment.envFrom
89+
90+
Type: `core.EnvFromSource` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/environments.go#L41)</sup>
91+
92+
EnvFrom keeps the information about environment variable sources provided to the container
93+
94+
Links:
95+
* [Kubernetes Docs](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#envfromsource-v1-core)
96+
97+
***
98+
99+
### .spec.deployment.hostIPC
100+
101+
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/namespace.go#L42)</sup>
102+
103+
HostIPC defines to use the host's ipc namespace.
104+
105+
Default Value: `false`
106+
107+
***
108+
109+
### .spec.deployment.hostNetwork
110+
111+
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/namespace.go#L36)</sup>
112+
113+
HostNetwork requests Host network for this pod. Use the host's network namespace.
114+
If this option is set, the ports that will be used must be specified.
115+
116+
Default Value: `false`
117+
118+
***
119+
120+
### .spec.deployment.hostPID
121+
122+
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/namespace.go#L39)</sup>
123+
124+
HostPID define to use the host's pid namespace.
125+
126+
Default Value: `false`
127+
128+
***
129+
130+
### .spec.deployment.image
131+
132+
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/image.go#L35)</sup>
133+
134+
Image define image details
135+
136+
***
137+
138+
### .spec.deployment.imagePullPolicy
139+
140+
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/image.go#L39)</sup>
141+
142+
ImagePullPolicy define Image pull policy
143+
144+
Default Value: `IfNotPresent`
145+
146+
***
147+
148+
### .spec.deployment.imagePullSecrets
149+
150+
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/image.go#L36)</sup>
151+
152+
ImagePullSecrets define Secrets used to pull Image from registry
153+
154+
***
155+
156+
### .spec.deployment.labels
157+
158+
Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/metadata.go#L39)</sup>
159+
160+
Map of string keys and values that can be used to organize and categorize
161+
(scope and select) objects. May match selectors of replication controllers
162+
and services.
163+
164+
Links:
165+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels)
166+
167+
***
168+
169+
### .spec.deployment.lifecycle
170+
171+
Type: `core.Lifecycle` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/lifecycle.go#L35)</sup>
172+
173+
Lifecycle keeps actions that the management system should take in response to container lifecycle events.
174+
175+
***
176+
177+
### .spec.deployment.livenessProbe
178+
179+
Type: `core.Probe` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/probes.go#L37)</sup>
180+
181+
LivenessProbe keeps configuration of periodic probe of container liveness.
182+
Container will be restarted if the probe fails.
183+
184+
Links:
185+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes)
186+
187+
***
188+
189+
### .spec.deployment.nodeSelector
190+
191+
Type: `object` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/scheduling.go#L39)</sup>
192+
193+
NodeSelector is a selector that must be true for the workload to fit on a node.
194+
195+
Links:
196+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector)
197+
198+
***
199+
200+
### .spec.deployment.ownerReferences
201+
202+
Type: `meta.OwnerReference` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/metadata.go#L52)</sup>
203+
204+
List of objects depended by this object. If ALL objects in the list have
205+
been deleted, this object will be garbage collected. If this object is managed by a controller,
206+
then an entry in this list will point to this controller, with the controller field set to true.
207+
There cannot be more than one managing controller.
208+
209+
***
210+
211+
### .spec.deployment.podSecurityContext
212+
213+
Type: `core.PodSecurityContext` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/security.go#L35)</sup>
214+
215+
PodSecurityContext holds pod-level security attributes and common container settings.
216+
217+
Links:
218+
* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
219+
220+
***
221+
11222
### .spec.deployment.port
12223

13-
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec_deployment.go#L42)</sup>
224+
Type: `integer` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec_deployment.go#L50)</sup>
14225

15226
Port defines on which port the container will be listening for connections
16227

17228
***
18229

230+
### .spec.deployment.ports
231+
232+
Type: `[]core.ContainerPort` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/networking.go#L39)</sup>
233+
234+
Ports contains list of ports to expose from the container. Not specifying a port here
235+
DOES NOT prevent that port from being exposed. Any port which is
236+
listening on the default "0.0.0.0" address inside a container will be
237+
accessible from the network.
238+
239+
***
240+
241+
### .spec.deployment.readinessProbe
242+
243+
Type: `core.Probe` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/probes.go#L42)</sup>
244+
245+
ReadinessProbe keeps configuration of periodic probe of container service readiness.
246+
Container will be removed from service endpoints if the probe fails.
247+
248+
Links:
249+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes)
250+
251+
***
252+
253+
### .spec.deployment.resources
254+
255+
Type: `core.ResourceRequirements` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/resources.go#L37)</sup>
256+
257+
Resources holds resource requests & limits for container
258+
259+
Links:
260+
* [Documentation of core.ResourceRequirements](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.29/#resourcerequirements-v1-core)
261+
262+
***
263+
264+
### .spec.deployment.schedulerName
265+
266+
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/scheduling.go#L54)</sup>
267+
268+
SchedulerName specifies, the pod will be dispatched by specified scheduler.
269+
If not specified, the pod will be dispatched by default scheduler.
270+
271+
Default Value: `""`
272+
273+
***
274+
275+
### .spec.deployment.securityContext
276+
277+
Type: `core.SecurityContext` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/security.go#L35)</sup>
278+
279+
SecurityContext holds container-level security attributes and common container settings.
280+
281+
Links:
282+
* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/)
283+
284+
***
285+
19286
### .spec.deployment.service.type
20287

21288
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec_deployment_service.go#L38)</sup>
@@ -34,6 +301,45 @@ Possible Values:
34301

35302
***
36303

304+
### .spec.deployment.serviceAccountName
305+
306+
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/service_account.go#L35)</sup>
307+
308+
ServiceAccountName is the name of the ServiceAccount to use to run this pod.
309+
310+
Links:
311+
* [Kubernetes docs](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/)
312+
313+
***
314+
315+
### .spec.deployment.shareProcessNamespace
316+
317+
Type: `boolean` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/namespace.go#L48)</sup>
318+
319+
ShareProcessNamespace defines to share a single process namespace between all of the containers in a pod.
320+
When this is set containers will be able to view and signal processes from other containers
321+
in the same pod, and the first process in each container will not be assigned PID 1.
322+
HostPID and ShareProcessNamespace cannot both be set.
323+
324+
Default Value: `false`
325+
326+
***
327+
328+
### .spec.deployment.startupProbe
329+
330+
Type: `core.Probe` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/probes.go#L50)</sup>
331+
332+
StartupProbe indicates that the Pod has successfully initialized.
333+
If specified, no other probes are executed until this completes successfully.
334+
If this probe fails, the Pod will be restarted, just as if the livenessProbe failed.
335+
This can be used to provide different probe parameters at the beginning of a Pod's lifecycle,
336+
when it might take a long time to load data or warm a cache, than during steady-state operation.
337+
338+
Links:
339+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes)
340+
341+
***
342+
37343
### .spec.deployment.tls.altNames
38344

39345
Type: `array` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/shared/v1/tls.go#L28)</sup>
@@ -50,6 +356,46 @@ Enabled define if TLS Should be enabled. If is not set then default is taken fro
50356

51357
***
52358

359+
### .spec.deployment.tolerations
360+
361+
Type: `[]core.Toleration` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/scheduling.go#L49)</sup>
362+
363+
Tolerations defines tolerations
364+
365+
Links:
366+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)
367+
368+
***
369+
370+
### .spec.deployment.volumeMounts
371+
372+
Type: `[]core.VolumeMount` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/volume_mounts.go#L35)</sup>
373+
374+
VolumeMounts keeps list of pod volumes to mount into the container's filesystem.
375+
376+
***
377+
378+
### .spec.deployment.volumes
379+
380+
Type: `[]core.Volume` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/pod/resources/volumes.go#L36)</sup>
381+
382+
Volumes keeps list of volumes that can be mounted by containers belonging to the pod.
383+
384+
Links:
385+
* [Kubernetes docs](https://kubernetes.io/docs/concepts/storage/volumes)
386+
387+
***
388+
389+
### .spec.deployment.workingDir
390+
391+
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/scheduler/v1beta1/container/resources/core.go#L55)</sup>
392+
393+
Container's working directory.
394+
If not specified, the container runtime's default will be used, which
395+
might be configured in the container image.
396+
397+
***
398+
53399
### .spec.deploymentName
54400

55401
Type: `string` <sup>[\[ref\]](https://github.com/arangodb/kube-arangodb/blob/1.2.40/pkg/apis/analytics/v1alpha1/gae_spec.go#L31)</sup>

0 commit comments

Comments
 (0)