Skip to content

[Feature] [Platform] Docs and Installer improvements #1869

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 17, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
- (Documentation) Improve Charts and Upgrade Documentation
- (Feature) AutoDiscover Operator Access
- (Feature) (Platform) Adjust Gateway timeouts
- (Feature) (Platform) Docs and Installer improvements

## [1.2.47](https://github.com/arangodb/kube-arangodb/tree/1.2.47) (2025-03-28)
- (Bugfix) Use Profile Annotations
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@ Flags:
--deployment.feature.enforced-resign-leadership Enforce ResignLeadership and ensure that Leaders are moved from restarted DBServer - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.ephemeral-volumes Enables ephemeral volumes for apps and tmp directory - Required ArangoDB >= 3.8.0
--deployment.feature.failover-leadership Support for leadership in fail-over mode - Required ArangoDB >= 3.8.0, < 3.12
--deployment.feature.gateway Defines if gateway extension is enabled - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.init-containers-copy-resources Copy resources spec to built-in init containers if they are not specified - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.init-containers-upscale-resources Copy resources spec to built-in init containers if they are not specified or lower - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.local-storage.pass-reclaim-policy [LocalStorage] Pass ReclaimPolicy from StorageClass instead of using hardcoded Retain - Required ArangoDB >= 3.8.0
Expand Down Expand Up @@ -199,7 +200,7 @@ Flags:
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
--kubernetes.qps float32 Number of queries per second for k8s API (default 32)
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, generic-parent-operator, helm, http, inspector, integration-authn-v1, integration-config-v1, integration-envoy-auth-v3, integration-scheduler-v2, integration-storage-v1-s3, integration-storage-v2, integrations, k8s-client, kubernetes-access, kubernetes-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, platform-chart-operator, platform-pod-shutdown, platform-storage-operator, pod_compare, root, root-event-recorder, scheduler-batchjob-operator, scheduler-cronjob-operator, scheduler-deployment-operator, scheduler-pod-operator, scheduler-profile-operator, server, server-authentication, webhook (default [info])
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, generic-parent-operator, helm, http, inspector, integration-authn-v1, integration-config-v1, integration-envoy-auth-v3, integration-scheduler-v2, integration-storage-v1-s3, integration-storage-v2, integrations, k8s-client, kubernetes, kubernetes-access, kubernetes-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, platform-chart-operator, platform-pod-shutdown, platform-storage-operator, pod_compare, root, root-event-recorder, scheduler-batchjob-operator, scheduler-cronjob-operator, scheduler-deployment-operator, scheduler-pod-operator, scheduler-profile-operator, server, server-authentication, webhook (default [info])
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
--log.stdout If true, operator will log to the stdout (default true)
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
Expand Down
73 changes: 73 additions & 0 deletions docs/arango-profile-resource.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,76 @@ title: ArangoProfile
# ArangoProfile Custom Resource

[Full CustomResourceDefinition reference ->](./api/ArangoProfile.V1Beta1.md)

# Integration

## Enablement

In order to enable Injection one of the two Labels needs to be present on Pod:

- `profiles.arangodb.com/apply` with any value
- `profiles.arangodb.com/deployment` with value set to the existing Deployment name

## Injection

### Selector

Using [Selector](./api/ArangoProfile.V1Beta1.md) `.spec.selectors.label` you can select which profiles are going to be applied on the Pod.

To not match any pod:
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: example
spec:
selectors: {}
template: ...
```

To match all pods:
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: example
spec:
selectors:
label:
matchLabels: {}
template: ...
```

To match specific pods (with label key=value):
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: example
spec:
selectors:
label:
matchLabels:
key: value
template: ...
```

### Selection

Profiles can be injected using name (not only selectors).

In order to inject specific profiles to the pod use label (split by `,`):

```yaml
metadata:
annotations:
profiles.arangodb.com/profiles: "gpu"
```

or

```yaml
metadata:
annotations:
profiles.arangodb.com/profiles: "gpu,internal"
```
3 changes: 2 additions & 1 deletion docs/cli/arangodb_operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ Flags:
--deployment.feature.enforced-resign-leadership Enforce ResignLeadership and ensure that Leaders are moved from restarted DBServer - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.ephemeral-volumes Enables ephemeral volumes for apps and tmp directory - Required ArangoDB >= 3.8.0
--deployment.feature.failover-leadership Support for leadership in fail-over mode - Required ArangoDB >= 3.8.0, < 3.12
--deployment.feature.gateway Defines if gateway extension is enabled - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.init-containers-copy-resources Copy resources spec to built-in init containers if they are not specified - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.init-containers-upscale-resources Copy resources spec to built-in init containers if they are not specified or lower - Required ArangoDB >= 3.8.0 (default true)
--deployment.feature.local-storage.pass-reclaim-policy [LocalStorage] Pass ReclaimPolicy from StorageClass instead of using hardcoded Retain - Required ArangoDB >= 3.8.0
Expand Down Expand Up @@ -83,7 +84,7 @@ Flags:
--kubernetes.max-batch-size int Size of batch during objects read (default 256)
--kubernetes.qps float32 Number of queries per second for k8s API (default 32)
--log.format string Set log format. Allowed values: 'pretty', 'JSON'. If empty, default format is used (default "pretty")
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, generic-parent-operator, helm, http, inspector, integration-authn-v1, integration-config-v1, integration-envoy-auth-v3, integration-scheduler-v2, integration-storage-v1-s3, integration-storage-v2, integrations, k8s-client, kubernetes-access, kubernetes-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, platform-chart-operator, platform-pod-shutdown, platform-storage-operator, pod_compare, root, root-event-recorder, scheduler-batchjob-operator, scheduler-cronjob-operator, scheduler-deployment-operator, scheduler-pod-operator, scheduler-profile-operator, server, server-authentication, webhook (default [info])
--log.level stringArray Set log levels in format <level> or <logger>=<level>. Possible loggers: action, agency, api-server, assertion, backup-operator, chaos-monkey, crd, deployment, deployment-ci, deployment-reconcile, deployment-replication, deployment-resilience, deployment-resources, deployment-storage, deployment-storage-pc, deployment-storage-service, generic-parent-operator, helm, http, inspector, integration-authn-v1, integration-config-v1, integration-envoy-auth-v3, integration-scheduler-v2, integration-storage-v1-s3, integration-storage-v2, integrations, k8s-client, kubernetes, kubernetes-access, kubernetes-client, kubernetes-informer, monitor, networking-route-operator, operator, operator-arangojob-handler, operator-v2, operator-v2-event, operator-v2-worker, panics, platform-chart-operator, platform-pod-shutdown, platform-storage-operator, pod_compare, root, root-event-recorder, scheduler-batchjob-operator, scheduler-cronjob-operator, scheduler-deployment-operator, scheduler-pod-operator, scheduler-profile-operator, server, server-authentication, webhook (default [info])
--log.sampling If true, operator will try to minimize duplication of logging events (default true)
--log.stdout If true, operator will log to the stdout (default true)
--memory-limit uint Define memory limit for hard shutdown and the dump of goroutines. Used for testing
Expand Down
62 changes: 62 additions & 0 deletions docs/cli/arangodb_operator_platform.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Usage:
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
package Release Package related operations
registry Registry related operations
service Service related operations

Expand Down Expand Up @@ -178,3 +179,64 @@ Global Flags:
```
[END_INJECT]: # (arangodb_operator_platform_service_status_cmd)

# ArangoDB Operator Platform Package Command

[START_INJECT]: # (arangodb_operator_platform_package_cmd)
```
Release Package related operations

Usage:
arangodb_operator_platform package [command]

Available Commands:
dump Dumps the current setup of the platform
install Installs the specified setup of the platform

Flags:
-h, --help help for package
--platform.name string Kubernetes Platform Name (name of the ArangoDeployment)

Global Flags:
-n, --namespace string Kubernetes Namespace (default "default")

Use "arangodb_operator_platform package [command] --help" for more information about a command.
```
[END_INJECT]: # (arangodb_operator_platform_package_cmd)

# ArangoDB Operator Platform Package Dump Command

[START_INJECT]: # (arangodb_operator_platform_package_dump_cmd)
```
Dumps the current setup of the platform

Usage:
arangodb_operator_platform package dump [flags] deployment

Flags:
-h, --help help for dump

Global Flags:
-n, --namespace string Kubernetes Namespace (default "default")
--platform.name string Kubernetes Platform Name (name of the ArangoDeployment)
```
[END_INJECT]: # (arangodb_operator_platform_package_dump_cmd)

# ArangoDB Operator Platform Package Install Command

[START_INJECT]: # (arangodb_operator_platform_package_install_cmd)
```
Installs the specified setup of the platform

Usage:
arangodb_operator_platform package install [flags] deployment package

Flags:
-h, --help help for install
--platform.stage string Platform Stage Name (default "dev")

Global Flags:
-n, --namespace string Kubernetes Namespace (default "default")
--platform.name string Kubernetes Platform Name (name of the ArangoDeployment)
```
[END_INJECT]: # (arangodb_operator_platform_package_install_cmd)

1 change: 0 additions & 1 deletion docs/how-to/debugging.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ To collect debug package, which contains things like:

Ensure you have debug mode enabled in the operator deployment:
```shell
```bash
helm upgrade --install kube-arangodb \
https://github.com/arangodb/kube-arangodb/releases/download/$VER/kube-arangodb-$VER.tgz \
--set "rbac.extensions.debug=true"
Expand Down
69 changes: 2 additions & 67 deletions docs/integration-sidecar.md
Original file line number Diff line number Diff line change
@@ -1,78 +1,13 @@
---
layout: page
has_children: true
title: Integration Sidecars
parent: ArangoDBPlatform
nav_order: 1
nav_order: 2
---

# Integration

## Profile

### Injection

#### Selector

Using [Selector](./api/ArangoProfile.V1Beta1.md) `.spec.selectors.label` you can select which profiles are going to be applied on the Pod.

To not match any pod:
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: example
spec:
selectors: {}
template: ...
```

To match all pods:
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: example
spec:
selectors:
label:
matchLabels: {}
template: ...
```

To match specific pods (with label key=value):
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: example
spec:
selectors:
label:
matchLabels:
key: value
template: ...
```

#### Selection

Profiles can be injected using name (not only selectors).

In order to inject specific profiles to the pod use label (split by `,`):

```yaml
metadata:
annotations:
profiles.arangodb.com/profiles: "gpu"
```

or

```yaml
metadata:
annotations:
profiles.arangodb.com/profiles: "gpu,internal"
```

## Sidecar

### Resource Types
Expand Down
3 changes: 2 additions & 1 deletion docs/integration/authentication.v1.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
layout: page
title: Integration Sidecar Authentication V1
parent: ArangoDBPlatform
grand_parent: ArangoDBPlatform
parent: Integration Sidecars
---

# Authentication V1
Expand Down
3 changes: 2 additions & 1 deletion docs/integration/authorization.v0.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
layout: page
title: Integration Sidecar Authorization V0
parent: ArangoDBPlatform
grand_parent: ArangoDBPlatform
parent: Integration Sidecars
---

# Authorization V0
Expand Down
3 changes: 2 additions & 1 deletion docs/integration/scheduler.v1.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
layout: page
title: Integration Sidecar Scheduler V1
parent: ArangoDBPlatform
grand_parent: ArangoDBPlatform
parent: Integration Sidecars
---

# Scheduler V1
Expand Down
3 changes: 2 additions & 1 deletion docs/integration/scheduler.v2.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
layout: page
title: Integration Sidecar Scheduler V2
parent: ArangoDBPlatform
grand_parent: ArangoDBPlatform
parent: Integration Sidecars
---

# Scheduler V2
Expand Down
3 changes: 2 additions & 1 deletion docs/integration/shutdown.v1.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
layout: page
title: Integration Sidecar Shutdown V1
parent: ArangoDBPlatform
grand_parent: ArangoDBPlatform
parent: Integration Sidecars
---

# Shutdown V1
Expand Down
3 changes: 2 additions & 1 deletion docs/integration/storage.v2.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
layout: page
title: Integration Sidecar Storage V2
parent: ArangoDBPlatform
grand_parent: ArangoDBPlatform
parent: Integration Sidecars
---

# Storage V2
Expand Down
27 changes: 27 additions & 0 deletions docs/platform.common.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
layout: page
title: Common Use Cases
parent: ArangoDBPlatform
nav_order: 1
---

# Custom ImagePullSecrets

To inject ImagePullSecrets to all pods across the Platform [ArangoProfile](./arango-profile-resource.md) can be used.

Example:
```yaml
apiVersion: scheduler.arangodb.com/v1beta1
kind: ArangoProfile
metadata:
name: image-secrets
spec:
selectors:
label:
matchLabels: {}
template:
pod:
imagePullSecrets:
- <Secret Name>
priority: 129
```
Loading