Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

112 Commits

Repository files navigation

Okapi-helm

Copyright (C) 2024 Index Data

This software is distributed under the terms of the Apache License, Version 2.0. See the file "LICENSE" for more information.

This helm chart deploys Okapi to a kubernetes cluster and is offered by Index Data only as is. There is no support provided unless under contract.

Okapi version changes across chart versions

Chart VersionOkapi version
0.1.34.14.10
0.1.44.14.11
0.1.74.14.12
0.1.155.0.1
0.1.165.1.2
0.1.175.1.2
0.1.186.2.5
0.1.196.2.8

The helm chart creates the following Kubernetes Objects:

  • Deployment - A deployment running the Okapi image. (For standalone deployments).
  • Stateful set - A stateful set running the Okapi image. (For cluster deployments).
  • Config maps - Stores configuration for Hazelcast.
  • Secret - Stores sensitive environment variables e.g database details.
  • Service account - Attached to the pods to assign certain kubernetes Cluster roles to them.
  • Service - Exposes the pods.
  • Ingress - Exposes the pods to allow Ingress traffic.

To use this helm chart, first add the repository locally.

helm repo add okapi https://indexdata.github.io/okapi-helm/

Okapi can either be deployed standalone or as a cluster, the default mode is standalone.

For standalone deployments, follow the following steps:

  • Create a secrets.yaml file to hold your environment variables. See example format below:
secret:
storage: postgrespostgres_host: <your_database_host>postgres_username: <your_database_username>postgres_password: <your_database_password>postgres_database: <your_database_name>okapiurl: http://okapi:9130
  • Run the command helm install okapi okapi/okapi --namespace <your-namespace> --values=secrets.yaml

For clustered deployments, follow the following steps:

  • Create a secrets.yaml file to hold your environment variables. See example format below:
secret:
storage: postgrespostgres_host: <your_database_host>postgres_username: <your_database_username>postgres_password: <your_database_password>postgres_database: <your_database_name>okapiurl: http://okapi:9130
  • Run the command helm install okapi okapi/okapi --namespace <your-namespace> --values=secrets.yaml --set clustered.enabled=true

Values

KeyTypeDefaultDescription
affinityobject{}
autoscaling.enabledboolfalse
autoscaling.maxReplicasint100
autoscaling.minReplicasint1
autoscaling.targetCPUUtilizationPercentageint80
clustered.enabledobjectfalseSpecifies whether Okapi is deployed in cluster or standalone mode
configobject{}
fullnameOverridestringokapi
image.repositorystringfolioorg/okapiOkapi docker image tag
image.pullPolicystringAlwaysOkapi docker image tag
image.tagstring5.1.2Okapi docker image tag
imagePullSecretslist[]
imageSecretNamestring""Image secret for accessing private private docker registries
ingress.enabledboolfalseSpecifies whether an ingress should be created
ingress.classNameobjectnginxSpecifies the class for the Ingress
ingress.annotationsobjectexternal-dns.alpha.kubernetes.io/target:xxxxxxx.your-dns-target.com
nginx.ingress.kubernetes.io/proxy-body-size:"10000m"
nginx.ingress.kubernetes.io/proxy-read-timeout:"300"
nginx.ingress.kubernetes.io/proxy-request-buffering:"off"
Ingress annotations
ingress.hostslist{"host":"xyz.hostname-of-your-service.com","paths":[{"path":"/","pathType":"ImplementationSpecific"}]}Ingress host
ingress.tlslist[]Enable TLS for ingress
labels.envstring"default"
labels.typestring"default"
lifecycleobject{}
modestringclusterAcceptable values are "dev" or "cluster"
nameOverridestring"okapi"
nodeSelectorobject{}
nodeSelectorobject{}
persistentVolume.accessModes[0]string"ReadWriteOnce"
persistentVolume.annotationsobject{}
persistentVolume.enabledboolfalse
persistentVolume.labelsobject{}
persistentVolume.namestring"data"
persistentVolume.sizestring"8Gi"
podAnnotationsobject{}
podDisruptionBudget.maxUnavailableint1
podDisruptionBudgetEnabledbooltrue
podManagementPolicystring"OrderedReady"Pod management policy for pods
podSecurityContextobject{}
probes.liveness.enabledbooltrueSpecifies whether a liveness probe should be created
probes.liveness.pathstring/_/proxy/healthSpecifies path for liveness probe
probes.liveness.initialDelaySecondsint120Specifies initial delay before liveness probe starts
probes.liveness.failureThresholdint2Specifies failure threshold for liveness probe
probes.liveness.timeoutSecondsint10Specifies timeout in seconds for liveness probe
probes.liveness.periodSecondint10Specifies period in seconds for liveness probe
probes.readiness.enabledbooltrueSpecifies whether a readiness probe should be created
probes.readiness.failureThresholdint2Specifies initial delay before readiness probe starts
probes.readiness.initialDelaySecondsint120Specifies initial delay before readiness probe starts
probes.readiness.pathstring/_/proxy/healthSpecifies path for readiness probe
probes.readiness.periodSecondsint10Specifies period in seconds for readiness probe
probes.readiness.timeoutSecondsint10Specifies timeout in seconds for readiness probe
probes.startup.enabledobjectfalseSpecifies whether a startup probe should be created
probes.startup.failureThresholdint30Specifies failure threshold for startup probe
probes.startup.pathstring/Specifies path for readiness probe
probes.startup.periodSecondsint10Specifies period in seconds for startup probe
replicaCountint3Number of pods to create (applies to clusteres deployments alone)
resourcesobject{}
secretobject{}
secretslist[]
securityContextobject{}
service.enabledbooltrue
service.external.enabledboolfalse
service.http.enabledboolfalse
service.internal.enabledboolfalse
service.namestring"okapi"
service.portint9130
service.second_port.enabledbooltrue
service.second_port.portint5701
service.third_port.enabledboolfalse
service.third_port.portint9090
service.typestring"ClusterIP"
serviceAccount.annotationsobject{}Annotations to add to the service account
serviceAccount.createbooltrueSpecifies whether a service account should be created
serviceAccount.namestring""The name of the service account to use. If not set and create is true, a name is generated using the fullname template
terminationGracePeriodSecondsint300Termination grace period for pods
tolerationslist[]
tolerationslist[]
updateStrategystringRollingUpdateUpdate strategy for pods
topologySpreadConstraints.maxSkewint1Max Skew for spread topology constraint
topologySpreadConstraints.topologyKeystringkubernetes.io/hostnameTopology Key for spread topology constraint
topologySpreadConstraints.whenUnsatisfiablestringScheduleAnywayAction when spread topology constraint is unsatisfiable

About

Helm chart to deploy Okapi

Resources

Stars

0 stars

Watchers

9 watching

Forks

Releases

Packages

Contributors

Languages