Merge pull request #1360 from qdrant/feat/bashofmann/hybrid-cloud-operator-v2

Update hybrid cloud docs for operator v2
This commit is contained in:
Robert-Stam
2025-01-06 10:48:17 +01:00
committed by GitHub
4 changed files with 212 additions and 75 deletions
@@ -96,7 +96,6 @@ Container images:
- `registry.cloud.qdrant.io/qdrant/qdrant` - `registry.cloud.qdrant.io/qdrant/qdrant`
- `registry.cloud.qdrant.io/qdrant/qdrant-cloud-agent` - `registry.cloud.qdrant.io/qdrant/qdrant-cloud-agent`
- `registry.cloud.qdrant.io/qdrant/qdrant-operator`
- `registry.cloud.qdrant.io/qdrant/operator` - `registry.cloud.qdrant.io/qdrant/operator`
- `registry.cloud.qdrant.io/qdrant/cluster-manager` - `registry.cloud.qdrant.io/qdrant/cluster-manager`
- `registry.cloud.qdrant.io/qdrant/prometheus` - `registry.cloud.qdrant.io/qdrant/prometheus`
@@ -106,7 +105,6 @@ Container images:
Open Containers Initiative (OCI) Helm charts: Open Containers Initiative (OCI) Helm charts:
- `registry.cloud.qdrant.io/qdrant-charts/qdrant-cloud-agent` - `registry.cloud.qdrant.io/qdrant-charts/qdrant-cloud-agent`
- `registry.cloud.qdrant.io/qdrant-charts/qdrant-operator`
- `registry.cloud.qdrant.io/qdrant-charts/operator` - `registry.cloud.qdrant.io/qdrant-charts/operator`
- `registry.cloud.qdrant.io/qdrant-charts/qdrant-cluster-manager` - `registry.cloud.qdrant.io/qdrant-charts/qdrant-cluster-manager`
- `registry.cloud.qdrant.io/qdrant-charts/prometheus` - `registry.cloud.qdrant.io/qdrant-charts/prometheus`
@@ -155,7 +153,6 @@ skopeo login your-registry.example.com
To sync all container images: To sync all container images:
```shell ```shell
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/qdrant-operator your-registry.example.com/qdrant/qdrant-operator
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/operator your-registry.example.com/qdrant/operator skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/operator your-registry.example.com/qdrant/operator
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/qdrant-cloud-agent your-registry.example.com/qdrant/qdrant-cloud-agent skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/qdrant-cloud-agent your-registry.example.com/qdrant/qdrant-cloud-agent
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/prometheus your-registry.example.com/qdrant/prometheus skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant/prometheus your-registry.example.com/qdrant/prometheus
@@ -171,7 +168,6 @@ To sync all helm charts:
```shell ```shell
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/prometheus your-registry.example.com/qdrant-charts/prometheus skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/prometheus your-registry.example.com/qdrant-charts/prometheus
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/operator your-registry.example.com/qdrant-charts/operator skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/operator your-registry.example.com/qdrant-charts/operator
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/qdrant-operator your-registry.example.com/qdrant-charts/qdrant-operator
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/qdrant-kubernetes-api your-registry.example.com/qdrant-charts/qdrant-kubernetes-api skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/qdrant-kubernetes-api your-registry.example.com/qdrant-charts/qdrant-kubernetes-api
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/qdrant-cloud-agent your-registry.example.com/qdrant-charts/qdrant-cloud-agent skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/qdrant-cloud-agent your-registry.example.com/qdrant-charts/qdrant-cloud-agent
skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/operator your-registry.example.com/qdrant-charts/operator skopeo sync --all --src docker --dest docker registry.cloud.qdrant.io/qdrant-charts/operator your-registry.example.com/qdrant-charts/operator
@@ -10,54 +10,102 @@ The Qdrant Operator has several configuration options, which can be configured i
The following YAML shows all configuration options with their default values: The following YAML shows all configuration options with their default values:
```yaml ```yaml
# Retention for the backup history of Qdrant clusters # Additional pod annotations
backupHistoryRetentionDays: 2 podAnnotations: {}
# Timeout configuration for the Qdrant operator operations
operationTimeout: 7200 # 2 hours # Configuration for the Qdrant operator service monitor to scrape metrics
handlerTimeout: 21600 # 6 hours serviceMonitor:
backupTimeout: 12600 # 3.5 hours
# Incremental backoff configuration for the Qdrant operator operations
backOff:
minDelay: 5
maxDelay: 300
increment: 5
# node_selector: {}
# tolerations: []
# Default ingress configuration for a Qdrant cluster
ingress:
enabled: false enabled: false
provider: KubernetesIngress # or NginxIngress
# kubernetesIngress: # Resource requests and limits for the Qdrant operator
# ingressClassName: "" resources: {}
# Default storage configuration for a Qdrant cluster
#storage: # Node selector for the Qdrant operator
# Default VolumeSnapshotClass for a Qdrant cluster nodeSelector: {}
# snapshot_class: "csi-snapclass"
# Default StorageClass for a Qdrant cluster, uses cluster default StorageClass if not set # Tolerations for the Qdrant operator
# default_storage_class_names: tolerations: []
# StorageClass for DB volumes
# db: "" # Affinity configuration for the Qdrant operator
# StorageClass for snapshot volumes affinity: {}
# snapshots: ""
# Default scheduling configuration for a Qdrant cluster # Configuration for the Qdrant operator (v2)
#scheduling: settings:
# default_topology_spread_constraints: [] # The log level for the operator
# default_pod_disruption_budget: {} # Available options: DEBUG | INFO | WARN | ERROR
logLevel: INFO
# Controller related settings
controller:
# The period a forced recync is done by the controller (if watches are missed / nothing happened)
forceResyncPeriod: 10h
# QPS indicates the maximum QPS to the master from this client.
# Default is 200
qps: 200
# Maximum burst for throttle.
# Default is 500.
burst: 500
# Features contains the settings for enabling / disabling the individual features of the operator
features:
# ClusterManagement contains the settings for qdrant (database) cluster management
clusterManagement:
# Whether or not the Qdrant cluster features are enabled.
# If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.
# Default is true.
enable: true
# The StorageClass used to make database and snapshot PVCs.
# Default is nil, meaning the default storage class of Kubernetes.
storageClass:
# The StorageClass used to make database PVCs.
# Default is nil, meaning the default storage class of Kubernetes.
#database:
# The StorageClass used to make snapshot PVCs.
# Default is nil, meaning the default storage class of Kubernetes.
#snapshot:
# Qdrant config contains settings specific for the database
qdrant: qdrant:
# Default security context for Qdrant cluster # The config where to find the image for qdrant
# securityContext: image:
# enabled: false # The repository where to find the image for qdrant
# user: "" # Default is "qdrant/qdrant"
# fsGroup: "" repository: qdrant/qdrant
# group: "" # Docker image pull policy
# Default Qdrant image configuration # Default "IfNotPresent", unless the tag is dev, master or latest. Then "Always"
# image: #pullPolicy:
# pull_secret: "" # Docker image pull secret name
# pull_policy: IfNotPresent # This secret should be available in the namespace where the cluster is running
# repository: qdrant/qdrant # Default not set
# Default Qdrant log_level #pullSecretName:
# log_level: INFO # storage contains the settings for the storage of the Qdrant cluster
# Default network policies to create for a qdrant cluster storage:
performance:
# CPU budget, how many CPUs (threads) to allocate for an optimization job.
# If 0 - auto selection, keep 1 or more CPUs unallocated depending on CPU size
# If negative - subtract this number of CPUs from the available CPUs.
# If positive - use this exact number of CPUs.
optimizerCpuBudget: 0
# Enable async scorer which uses io_uring when rescoring.
# Only supported on Linux, must be enabled in your kernel.
# See: <https://qdrant.tech/articles/io_uring/#and-what-about-qdrant>
asyncScorer: false
# Qdrant DB log level
# Available options: DEBUG | INFO | WARN | ERROR
# Default is "INFO"
logLevel: INFO
# Default Qdrant security context configuration
securityContext:
# Enable default security context
# Default is false
enabled: false
# Default user for qdrant container
# Default not set
#user: 1000
# Default fsGroup for qdrant container
# Default not set
#fsUser: 2000
# Default group for qdrant container
# Default not set
#group: 3000
# Network policies configuration for the Qdrant databases
networkPolicies: networkPolicies:
ingress: ingress:
- ports: - ports:
@@ -67,11 +115,111 @@ qdrant:
port: 6334 port: 6334
# Allow DNS resolution from qdrant pods at Kubernetes internal DNS server # Allow DNS resolution from qdrant pods at Kubernetes internal DNS server
egress: egress:
- to: - ports:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
ports:
- protocol: UDP - protocol: UDP
port: 53 port: 53
# Scheduling config contains the settings specific for scheduling
scheduling:
# Default topology spread constraints (list from type corev1.TopologySpreadConstraint)
topologySpreadConstraints:
- maxSkew: 1
topologyKey: "kubernetes.io/hostname"
whenUnsatisfiable: "ScheduleAnyway"
# Default pod disruption budget (object from type policyv1.PodDisruptionBudgetSpec)
podDisruptionBudget:
maxUnavailable: 1
# ClusterManager config contains the settings specific for cluster manager
clusterManager:
# Whether or not the cluster manager (on operator level).
# If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.
# Default is false.
enable: true
# The endpoint address the cluster manager could be reached
# If set, this should be a full URL like: http://cluster-manager.qdrant-cloud-ns.svc.cluster.local:7333
endpointAddress: http://qdrant-cluster-manager:80
# InvocationInterval is the interval between calls (started after the previous call is retured)
# Default is 10 seconds
invocationInterval: 10s
# Timeout is the duration a single call to the cluster manager is allowed to take.
# Default is 30 seconds
timeout: 30s
# Specifies overrides for the manage rules
manageRulesOverrides:
#dry_run:
#max_transfers:
#max_transfers_per_collection:
#rebalance:
#replicate:
# Ingress config contains the settings specific for ingress
ingress:
# Whether or not the Ingress feature is enabled.
# Default is true.
enable: false
# Which specific ingress provider should be used
# Default is KubernetesIngress
provider: KubernetesIngress
# The specific settings when the Provider is QdrantCloudTraefik
qdrantCloudTraefik:
# Enable tls
# Default is false
tls: false
# Secret with TLS certificate
# Default is None
secretName: ""
# List of Traefik middlewares to apply
# Default is an empty list
middlewares: []
# IP Allowlist Strategy for Traefik
# Default is None
ipAllowlistStrategy:
# Enable body validator plugin and matching ingressroute rules
# Default is false
enableBodyValidatorPlugin: false
# The specific settings when the Provider is KubernetesIngress
kubernetesIngress:
# Name of the ingress class
# Default is None
#ingressClassName:
# TelemetryTimeout is the duration a single call to the cluster telemetry endpoint is allowed to take.
# Default is 3 seconds
telemetryTimeout: 3s
# MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 20.
maxConcurrentReconciles: 20
# VolumeExpansionMode specifies the expansion mode, which can be online or offline (e.g. in case of Azure).
# Available options: Online, Offline
# Default is Online
volumeExpansionMode: Online
# BackupManagementConfig contains the settings for backup management
backupManagement:
# Whether or not the backup features are enabled.
# If disabled, all other properties in this struct are disregarded. Otherwise, the individual features will be inspected.
# Default is true.
enable: true
# Snapshots contains the settings for snapshots as part of backup management.
snapshots:
# Whether or not the Snapshot feature is enabled.
# Default is true.
enable: true
# The VolumeSnapshotClass used to make VolumeSnapshots.
# Default is "csi-snapclass".
volumeSnapshotClass: "csi-snapclass"
# The duration a snapshot is retained when the phase becomes Failed or Skipped
# Default is 72h (3d).
retainUnsuccessful: 72h
# MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.
maxConcurrentReconciles: 1
# ScheduledSnapshots contains the settings for scheduled snapshot as part of backup management.
scheduledSnapshots:
# Whether or not the ScheduledSnapshot feature is enabled.
# Default is true.
enable: true
# MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.
maxConcurrentReconciles: 1
# Restores contains the settings for restoring (a snapshot) as part of backup management.
restores:
# Whether or not the Restore feature is enabled.
# Default is true.
enable: true
# MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.
maxConcurrentReconciles: 1
``` ```
@@ -110,9 +110,6 @@ operator:
# Maximum burst for throttle. # Maximum burst for throttle.
# Default is 500. # Default is 500.
burst: 500 burst: 500
# If set to true, the operator reconciles all watched CRs,
# fully ignoring operator.qdrant.com/version annotation on them
disableOperatorVersionCheck: true
# Features contains the settings for enabling / disabling the individual features of the operator # Features contains the settings for enabling / disabling the individual features of the operator
features: features:
# ClusterManagement contains the settings for qdrant (database) cluster management # ClusterManagement contains the settings for qdrant (database) cluster management
@@ -280,10 +277,6 @@ operator:
# Whether or not the ScheduledSnapshot feature is enabled. # Whether or not the ScheduledSnapshot feature is enabled.
# Default is true. # Default is true.
enable: true enable: true
# RemoveCronJobs can be enabled when the previous [Python] operator (qdrant-operator) has been run and this
# operator should remove the cron jobs it created (not used by this operator anymore).
# Default is true.
removeCronJobs: true
# MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1. # MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1.
maxConcurrentReconciles: 1 maxConcurrentReconciles: 1
# Restores contains the settings for restoring (a snapshot) as part of backup management. # Restores contains the settings for restoring (a snapshot) as part of backup management.