# Default values for graphscope-store.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

## @section Global parameters
## Global Docker image parameters
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
##

## @param global.imageRegistry Global Docker image registry
## @param global.imagePullSecrets Global Docker registry secret names as an array
## @param global.storageClass Global StorageClass for Persistent Volume(s)
##
global:
  imageRegistry: ""
  ## E.g.
  ## imagePullSecrets:
  ##   - myRegistryKeySecretName
  ##
  imagePullSecrets: []
  storageClass: ""

image:
  registry: registry.cn-hongkong.aliyuncs.com
  repository: graphscope/graphscope-store
  # Overrides the image tag whose default is the chart appVersion.
  tag: "0.30.0"
  digest: ""
  ## Specify a imagePullPolicy
  ## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
  ## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
  ##
  pullPolicy: IfNotPresent
  ## Optionally specify an array of imagePullSecrets (secrets must be manually created in the namespace)
  ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
  ## Example:
  ## pullSecrets:
  ##   - myRegistryKeySecretName
  ##
  pullSecrets: []

test:
  image:
    registry: registry.cn-hongkong.aliyuncs.com
    repository: graphscope/graphscope-store
    tag: python-3.9.9-alpine3.14-gremlin

## GraphScope Store parameters
##
store:
  replicaCount: 1

  ## GraphScope store container's resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources: {}

  ## Enable persistence using Persistent Volume Claims
  ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
  ##
  persistence:
    ## If true, use a Persistent Volume Claim, If false, use emptyDir
    ##
    enabled: true
    ## Name of existing PVC to hold GraphScope store data
    ## @param persistence.existingClaim A manually managed Persistent Volume and Claim
    ## If defined, PVC must be created manually before volume will be bound
    ## The value is evaluated as a template
    ##
    existingClaim: ""
    ## Persistent Volume size
    ##
    size: 1Gi
    selector: {}

  service:
    adminPort: 10001

  ## @param hostAliases pods host aliases
  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
  ##
  hostAliases: []
  ## @param hostNetwork Specify if host network should be enabled for pods
  ##
  hostNetwork: false
  ## @param hostIPC Specify if host IPC should be enabled for pods
  ##
  hostIPC: false
  ## @param podLabels Extra labels for pods
  ## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  ##
  podLabels: {}
  ## @param podAnnotations Extra annotations for pods
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
  ##
  podAnnotations: {}
  ## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ##

  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
  ##
  schedulerName: ""

  ## @param extraVolumes Optionally specify extra list of additional volumes for the Store pod(s)
  ## e.g:
  ## extraVolumes:
  ##   - name: kafka-jaas
  ##     secret:
  ##       secretName: kafka-jaas
  ##
  extraVolumes: []
  ## @param extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Store container(s)
  ## extraVolumeMounts:
  ##   - name: kafka-jaas
  ##     mountPath: /bitnami/kafka/config/kafka_jaas.conf
  ##     subPath: kafka_jaas.conf
  ##
  extraVolumeMounts: []

## GraphScope Frontend parameters
##
frontend:
  replicaCount: 1
  ## GraphScope store container's resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources: {}

  ## GraphScope frontend Service parameters
  ##
  service:
    ## Service type
    ##
    type: NodePort
    ## Service port
    ##
    servicePort: 55556

    gremlinPort: 12312

    cypherPort: 7687

    httpPort: 8080

    ## Internal port for communication between components.
    ##
    port: 55555

    ## Specify the nodePort value for the LoadBalancer and NodePort service types.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
    ##
    nodePorts:
      service: ""
      gremlin: ""
    ## Service clusterIP
    ##
    # clusterIP: None
    clusterIP: ""
    ## Set the LoadBalancer service type to internal only.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
    ##
    loadBalancerIP: ""
    ## Enable client source IP preservation
    ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
    ##
    externalTrafficPolicy: Cluster
    ## Load Balancer sources
    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
    ## E.g.
    ## loadBalancerSourceRanges:
    ##   - 10.10.10.0/24
    ##
    loadBalancerSourceRanges: []
    ## Provide any additional annotations which may be required
    ##
    annotations: {}


  ## @param hostAliases pods host aliases
  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
  ##
  hostAliases: []
  ## @param hostNetwork Specify if host network should be enabled for pods
  ##
  hostNetwork: false
  ## @param hostIPC Specify if host IPC should be enabled for pods
  ##
  hostIPC: false
  ## @param podLabels Extra labels for pods
  ## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  ##
  podLabels: {}
  ## @param podAnnotations Extra annotations for pods
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
  ##
  podAnnotations: {}
  ## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ##

  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
  ##
  schedulerName: ""

## GraphScope Coordinator parameters
##
coordinator:
  replicaCount: 1

  ## GraphScope store container's resource requests and limits
  ## ref: http://kubernetes.io/docs/user-guide/compute-resources/
  ##
  resources: {}

  ## Enable persistence using Persistent Volume Claims
  ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
  ##
  persistence:
    ## If true, use a Persistent Volume Claim, If false, use emptyDir
    ##
    enabled: true
    ## Name of existing PVC to hold GraphScope coordinator meta
    ## @param persistence.existingClaim A manually managed Persistent Volume and Claim
    ## If defined, PVC must be created manually before volume will be bound
    ## The value is evaluated as a template
    ##
    existingClaim: ""
    ## Persistent Volume size
    ##
    size: 100Mi
    selector: {}

  ## @param hostAliases pods host aliases
  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
  ##
  hostAliases: []
  ## @param hostNetwork Specify if host network should be enabled for pods
  ##
  hostNetwork: false
  ## @param hostIPC Specify if host IPC should be enabled for pods
  ##
  hostIPC: false
  ## @param podLabels Extra labels for pods
  ## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  ##
  podLabels: {}
  ## @param podAnnotations Extra annotations for pods
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
  ##
  podAnnotations: {}
  ## @param podAffinityPreset Pod affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
  ## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
  ##

  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
  ##
  schedulerName: ""

## GraphScope Portal parameters
##
portal:
  enabled: false
  replicaCount: 1
  coordinatorImage:
    registry: registry.cn-hongkong.aliyuncs.com
    repository: graphscope/coordinator
    tag: "0.30.0"
  ## Service parameters
  ##
  service:
    type: NodePort
    servicePort: 8080
    ## Specify the nodePort value for the LoadBalancer and NodePort service types.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
    ##
    nodePorts:
      service: ""
    ## Service clusterIP
    ##
    # clusterIP: None
    clusterIP: ""
    ## Set the LoadBalancer service type to internal only.
    ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
    ##
    loadBalancerIP: ""
    ## Enable client source IP preservation
    ## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
    ##
    externalTrafficPolicy: Cluster
    ## Load Balancer sources
    ## https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
    ## E.g.
    ## loadBalancerSourceRanges:
    ##   - 10.10.10.0/24
    ##
    loadBalancerSourceRanges: []
    ## Provide any additional annotations which may be required
    ##
    annotations: {}
  ## Request for data loading
  ##
  studioWrapperEndpoint: ""
  ##
  ## baseId is the id used for creating odps dataloading job
  baseId: ""
  ## @param hostIPC Specify if host IPC should be enabled for pods
  ##
  hostIPC: false
  ## @param hostNetwork Specify if host network should be enabled for pods
  ##
  hostNetwork: false
  ## @param hostAliases pods host aliases
  ## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
  ##
  hostAliases: []
  ## @param podAnnotations Extra annotations for pods
  ## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
  ##
  podAnnotations: {}
  ## @param podLabels Extra labels for pods
  ## Ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
  ##
  podLabels: {}
  ## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
  ##
  schedulerName: ""
  ## pod network plugin type
  ##
  podNetworkPluginType: flannel
  ## resource request and limit
  resources: {}
  ## Custom environment variables
  ##
  env:
    key1: value1
  ## persistent storage
  ##
  runtimePath: "/var/runtime"
  ## Enable persistence using Persistent Volume Claims
  ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
  ##
  persistence:
    ## If true, use a Persistent Volume Claim, If false, use emptyDir
    ##
    enabled: true
    ## Name of existing PVC to hold portal runtime information
    ## @param persistence.existingClaim A manually managed Persistent Volume and Claim
    ## If defined, PVC must be created manually before volume will be bound
    ## The value is evaluated as a template
    ##
    existingClaim: ""
    ## Persistent Volume size
    ##
    size: 100Mi
    selector: {}

## @section Common parameters
##

## @param kubeVersion Override Kubernetes version
##
kubeVersion: ""
## @param nameOverride String to partially override common.names.fullname
##
nameOverride: ""
## @param fullnameOverride String to fully override common.names.fullname
##
fullnameOverride: ""
## @param clusterDomain Default Kubernetes cluster domain
##
clusterDomain: cluster.local
## @param commonLabels Labels to add to all deployed objects
##
commonLabels: {}
## @param commonAnnotations Annotations to add to all deployed objects
##
commonAnnotations: {}
## @param extraDeploy Array of extra objects to deploy with the release
##

## Configure extra options for containers' liveness, readiness and startup probes
livenessProbe:
  enabled: false
  initialDelaySeconds: 30
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 5
  successThreshold: 1

readinessProbe:
  enabled: true
  initialDelaySeconds: 30
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 5
  successThreshold: 1

startupProbe:
  enabled: false
  initialDelaySeconds: 30
  periodSeconds: 10
  timeoutSeconds: 5
  failureThreshold: 5
  successThreshold: 1

command:
- /etc/groot/setup.sh

args: []

initContainers: []

persistence:
  ## @param persistence.storageClass PVC Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ## set, choosing the default provisioner.
  ##
  storageClass: ""
  accessModes:
  - ReadWriteOnce
  annotations: {}
  ## @param persistence.labels Labels for the PVC
  ##
  labels: {}

## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
podSecurityContext:
  enabled: true
  fsGroup: 1001

## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container
containerSecurityContext:
  enabled: true
  runAsUser: 1001
  runAsNonRoot: true
  # allowPrivilegeEscalation: false

podAffinityPreset: ""
## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
##
podAntiAffinityPreset: soft
## Node affinity preset
## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
##
nodeAffinityPreset:
  ## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
  ##
  type: ""
  ## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
  ## E.g.
  ## key: "kubernetes.io/e2e-az-name"
  ##
  key: ""
  ## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
  ## E.g.
  ## values:
  ##   - e2e-az1
  ##   - e2e-az2
  ##
  values: []
## @param affinity Affinity for pod assignment
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
## Note: podAffinityPreset, podAntiAffinityPreset, and  nodeAffinityPreset will be ignored when it's set
##
affinity: {}
## @param nodeSelector Node labels for pod assignment
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param tolerations Tolerations for pod assignment
## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param topologySpreadConstraints Topology Spread Constraints for pod assignment spread across your cluster among failure-domains. Evaluated as a template
## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/#spread-constraints-for-pods
##
topologySpreadConstraints: []
## @param terminationGracePeriodSeconds Seconds the pod needs to gracefully terminate
## ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution
##
terminationGracePeriodSeconds: ""
## @param podManagementPolicy StatefulSet controller supports relax its ordering guarantees while preserving its uniqueness and identity guarantees. There are two valid pod management policies: OrderedReady and Parallel
## ref: https://kubernetes.io/docs/tutorials/stateful-application/basic-stateful-set/#pod-management-policy
##
podManagementPolicy: Parallel
## @param priorityClassName Name of the existing priority class to be used by pods
## Ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
##
priorityClassName: ""

## ref: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#update-strategies
##
updateStrategy:
  type: RollingUpdate
  rollingUpdate: {}

## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
pdb:
  create: false
  minAvailable: ""
  maxUnavailable: 1

dnsPolicy: ""
dnsConfig: {}

## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
##
serviceAccount:
  ## @param serviceAccount.create Enable creation of ServiceAccount
  ##
  create: true
  ## @param serviceAccount.name The name of the service account to use. If not set and `create` is `true`, a name is generated
  ## If not set and create is true, a name is generated
  ##
  name: ""
  ## @param serviceAccount.automountServiceAccountToken Allows auto mount of ServiceAccountToken on the serviceAccount created
  ## Can be set to false if pods using this serviceAccount do not need to use K8s API
  ##
  automountServiceAccountToken: true
  ## @param serviceAccount.annotations Additional custom annotations for the ServiceAccount
  ##
  annotations: {}


## Configure GraphScope Components with a custom groot.config file
##
javaOpts: ""

rpcMaxBytesMb: 20

## choose between "file" or "zookeeper"
discoveryMode: "file"

## Coordinator Config
snapshotIncreaseIntervalMs: 1000
offsetsPersistIntervalMs: 1000
fileMetaStorePath: "/etc/groot/my.meta"
logRecycleEnable: true
logRecycleOffsetReserve: 86400

## Store Config
storeDataPath: "/var/lib/graphscope-store"
storeDataDownloadPath: "/var/lib/graphscope-store/download"
storeDataSecondaryPath: "/home/graphscope/secondary"
storeWriteThreadCount: 1
storeQueueBufferSize: "102400"

storeGcIntervalMs: 5000
storeCatchupIntervalMs: 5000

## Kafka Config
##
## Kafka chart configuration
##
## https://github.com/bitnami/charts/blob/master/bitnami/kafka/values.yaml
##
kafka:
  enabled: true
  replicaCount: 1
  service:
    ## Kafka port for client connections
    ##
    port: 9092
  socketRequestMaxBytes: _1048576000

## Zk Config
zkBasePath: "/graphscope/groot"

## This value is only used when kafka.enabled is set to false
##
externalKafka:
  ## Server or list of external kafka servers to use.
  ##
  servers: []

kafkaTopic: "graphscope"
kafkaProducerCustomConfigs: ""


## Zk Config

## If set, the externalZookeeper.servers will be used to connect to the zookeeper
## If not set, the bundled zookeeper in kafka cluster will be used
externalZookeeper:
  servers: []

zkBasePath: "/graphscope/groot"

## Frontend Config
# gremlinServerPort: 12312

## GOpt config
## To adopt a CBO planner, set graphPlannerOpt to CBO, set gremlinScriptLanguageName to antlr_gremlin_calcite, and set graphPhysicalOpt to proto.
graphPlannerIsOn: true
graphPlannerOpt: RBO
graphPlannerRules: FilterIntoJoinRule, FilterMatchRule, ExtendIntersectRule, ExpandGetVFusionRule
gremlinScriptLanguageName: antlr_gremlin_traversal
graphPhysicalOpt: ffi
queryExecutionTimeoutMs: 600000
graphPlannerJoinMinPatternSize: 5
graphPlannerCboGlogueSize: 3

## Log Persistence parameters
##
logPersistence:
  ## Enable persistence using Persistent Volume Claims. If false, use emptyDir
  enabled: false
  ## Existing PVC to hold the log data. If not provided, a new PVC will be created.
  existingClaim: ""
  ## Persistent Volume storage class
  storageClass: ""
  ## Persistent Volume access modes
  accessModes:
  - ReadWriteOnce
  ## Persistent Volume size
  size: 1Gi
  ## Persistent Volume annotations
  annotations: {}
  ## Persistent Volume labels
  selector: {}
  ## mountPath for the Persistent Volume
  mountPath: "/var/log/graphscope"

## Key-value pair separated by ;
## For example extraConfig="k1=v1;k2=v2"
extraConfig: ""

auth:
  username: ""
  password: ""

pegasus:
  worker:
    num: 1
  timeout: 240000

secondary:
  enabled: false
  storeDataPath: "./data_secondary"


backup:
  enabled: false

otel:
  enabled: false
  collector:
    image:
      registry: docker.io
      repository: jaegertracing/all-in-one
      tag: "latest"
  # https://opentelemetry.io/docs/languages/sdk-configuration/general/#otel_traces_sampler
  traces:
    sampler:
      name: "traceidratio"
      arg: "0.1"

uptrace:
  enabled: false
  # uptrace service endpoint, could be DNS name of uptrace service
  # for example: "service-name.namespace", "my-uptrace.uptrace"
  service: "uptrace"
  # token is set within uptrace config
  token: "project2_secret_token"

distributed:
  enabled: false

collect:
  statistics:
    enabled: false
    initial:
      delay: 5
    interval: 60
