-
Added new configuration properties for the license
- Added
license.mountPath
to configure where the license volume is mounted - Added
license.optional
to configure the license volume as optional if needed - Added
license.readOnly
to configure the read/write mode of the license volume mount
- Added
-
Updated to GraphDB 10.8.0
- Removed any pre-install, pre-upgrade, pre-rollback Helm hooks annotations to allow seamless ArgoCD deployments.
- Changed the license directory to
/opt/graphdb/home/conf/license/
withlicense.mountPath
in order to avoid using asubPath
volume mount. This allows kubelet to update the license when the Secret has been updated. - Changed the license volume mount as read-only by default with
license.readOnly
- Updated to GraphDB 10.7.6
- Updated to GraphDB 10.7.5
- Added CronJob for scheduling GraphDB backups. The CronJob supports both local and cloud backups.
- Added new configurations under
backup
:backup.enabled
for toggling the backup CronJob,backup.type
for selecting between local and cloud and more. - Local backups support saving the GraphDB backup archives in volume from an existing persistent volume claim, configured
with
backup.local
- Cloud backups support uploading the GraphDB backup archives in one of the supported cloud object storage services, configured with
backup.cloud
- Added a new example under examples/backup-local showing how to use the local backup feature with
backup.local
- Added new configurations under
- Added a new property
security.provisioner.passwordHash
to define an initial password for the provisioner user as a bcrypt hash. - Configured
graphdb.extra.plugins
to load plugins from/opt/graphdb/home/extra-plugins
by default
- Updated the GraphDB containers to explicitly use
/tmp
as a working directory to avoid permission errors due to the default security context'sreadOnlyRootFilesystem
when the container has a starting folder different from/tmp
.
- Updated to GraphDB 10.7.4
- Added GraphDB configuration examples
- Added GraphDB security configration examples
- Updated StatefulSets templates in graphdb and proxy to properly render
extraVolumeClaimtemplates
. Replacedif
statement withwith
.
- Updated to GraphDB 10.7.3
- Updated to GraphDB 10.7.2
- Add examples for deploying GraphDB in AWS
- Updated to GraphDB 10.7.1
- Updated to GraphDB 10.7.0
- Added
podAntiAffinity
andproxy.podAntiAffinity
for configuring a default podAntiAffinity for the GraphDB pods and GraphDB proxy pods. The default values configure a "soft" podAntiAffinity that tries to schedule GraphDB pods across different Kubernetes hosts but does not enforce it. - Added new configuration options for the Jobs
- Added
job.schedulerName
for overriding the default Kubernetes scheduler - Added
job.dnsConfig
andjob.dnsPolicy
for customizing the DNS resolution - Added
job.priorityClassName
for defining the pods scheduling importance - Added
job.nodeSelector
,job.affinity
,job.tolerations
andjob.topologySpreadConstraints
for customizing the node scheduling
- Added
- Added
persistence.volumeClaimRetentionPolicy
andproxy.persistence.volumeClaimRetentionPolicy
to control the retention policy of the PVCs when the StatefulSets are scaled and deleted. These configurations are used only for Kubernetes 1.27 and above.
GraphDB Helm 11.0.1 is a patch release that includes bug fixes.
- Updated all cluster jobs to explicitly use
/tmp
as a working directory to avoid permission errors due to the default security context'sreadOnlyRootFilesystem
when the container has a starting folder different from/tmp
. - Updated all utility scripts to use temporary files under
/tmp
for the same reason.
Version 11 of the chart addresses a bunch of legacy issues and aims to provide much better user experience and reliability.
- Version - The Helm chart is no longer tied with the version of GraphDB and has a separate development and release cycle.
- Naming - Removed hardcoded resource names in favor of using the name templates from _labels.tpl
- Labels - Added the possibility to provide custom labels and annotations to almost every single resource
- Implementation Agnostic - Removed the dependency of particular ingress controllers and storage classes
- Security - Enabled security context by default
- Configurations - Added multiple new configurations to customize both GraphDB and the Kubernetes resources
- Updated the chart to require Kubernetes version 1.26+
- Enabled security context by default for all pods and containers
- Updated the GraphDB deployment URL to be http://graphdb.127.0.0.1.nip.io/ by default, see
configuration.externalUrl
- Resource names are no longer hardcoded and are using the templates for
nameOverride
andfullnameOverride
- Updated the ingress to be agnostic to the ingress implementation. It will no longer assume that NGINX is the ingress controller in the cluster and will no longer deploy NGINX specific annotations by default. Removed anything related to NGINX as configurations.
- Removed setting FQDN as hostnames in GraphDB and the proxy in favor of dynamically resolving and configuring the hostnames in the provisioning init containers
- Removed the default value from
global.imageRegistry
, the chart now uses the value fromimage.registry
- Removed
global.storageClass
in favor of using by default the default storage class in the cluster. Templates will no longer useglobal.storageClass
. - Renamed
extraLabels
to justlabels
- Moved
images.graphdb
configurations to justimage
- Moved
deployment.imagePullPolicy
toimage.pullPolicy
anddeployment.imagePullSecret
toimage.pullSecrets
- Note that
image.pullSecrets
is now a list
- Note that
- Moved
deployment.ingress
to justingress
- Moved
deployment.tls
toingress.tls
- Moved
graphdb
andgraphdb.node
configurations on the root level - Moved all proxy configurations from
graphdb.clusterProxy
to justproxy
- Renamed
proxy.persistence.enablePersistence
toggle to justenabled
- Moved
proxy.serviceType
toproxy.service.type
- Configmaps from
graphdb.configs
are now underconfiguration
,repositories
,cluster
andsecurity
with a different structure allowing better reuse of existing configmaps - Moved
graphdb.clusterConfig
configurations- Moved
graphdb.clusterConfig.nodesCount
toreplicas
- Moved the rest of
graphdb.clusterConfig
configurations undercluster
,cluster.config
andcluster.config.params
- Moved
- Moved
graphdb.security
configurations tosecurity
- Moved
provisioningUsername
andprovisioningPassword
undersecurity.provisioner
- Moved
- Moved job related configurations from
graphdb
(e.g.graphdb.jobResources
) to a new root sectionjobs
- Moved
graphdb.node.service
configurations toheadlessService
- Moved
graphdb.import_directory_mount
configurations toimport.volumeMount
- Renamed
pdb
topodDisruptionBudget
and renamedpodDisruptionBudget.create
topodDisruptionBudget.enabled
for consistency - Renamed
messageSize
tomessageSizeKB
in the cluster creation configuration incluster.config.params
- Renamed
java_args
todefaultJavaArguments
and added a separatejavaArguments
that can be used for additional configurations, seeconfiguration
andproxy.configuration
- Removed configuration overrides from the default
GDB_JAVA_OPTS
:enable-context-index
,entity-pool-implementation
andhealth.max.query.time.seconds
- Removed the default logback XML configuration and configmap in favor of an example and a new configuration options
under
configuration.logback
andproxy.configuration.logback
- Renamed GraphDB storage PVC template name prefix to
storage
and server import folder toimport
- Moved
persistence.volumeClaimTemplateSpec
topersistence.volumeClaimTemplate.spec
- Updated the Service type of the proxy to be ClusterIP by default, see
proxy.service.type
- And more, please refer to values.yaml
- Added GraphDB and GraphDB proxy hostnames resolution in the init containers
- Added new annotation checksums for GraphDB and GraphDB proxy in order to detect changes in the properties configmaps and ultimately trigger rolling update
- Added default Secret objects for GraphDB and the proxy that contain sensitive GraphDB configurations
- Added
serviceAccount
configurations allowing you to create or use an existing service account for the GraphDB pods - Added more feature toggles:
headlessService.enabled
proxy.service.enabled
proxy.headlessService.enabled
persistence.enabled
proxy.persistence.enabled
cluster.jobs.createCluster.enabled
- Enables or disables the cluster creation Jobcluster.jobs.patchCluster.enabled
- Enables or disables the Job for patching the cluster configurationcluster.jobs.scaleCluster.enabled
- Enables or disables the Jobs for scaling up or down the cluster
- Added
image.digest
to optionally provide an expected digest of the image - Added
annotations
for additional common annotations across all resources - Added separate
proxy.labels
andproxy.annotations
configurations for the cluster proxy - Added new
global.clusterDomain
for reconfiguring the default Kubernetes cluster domain suffix in case it is different thancluster.local
- Added
namespaceOverride
for overriding the deployment namespace for all resources in case of multi-namespace deployment - Added new configuration options for the default ingress
ingress
:- Ability to override the
host
andpath
for GraphDB fromconfiguration.externalUrl
- Ability to change the Ingress path type with
ingress.pathType
- Inserting additional hosts and TLS configurations with
ingress.extraHosts
andingress.extraTLS
- Ability to override the
- Added
security.admin
for configuring the initial password of the administrator user - Added
security.initialUsers.users
for inserting additional users into the default initial user.js configuration - Added
security.provisioner.existingSecret
andsecurity.provisioner.tokenKey
to provide an existing authentication token - Added
cluster.token.existingSecret
andcluster.token.secretKey
for using an existing Secret instead of providing the cluster secret token as plaintext in values.yaml - Added
cluster.config.existingConfigmap
to specify a custom configmap key if needed - Added
configuration.properties
andproxy.configuration.properties
for appending additional inline GraphDB configurations in their properties configmaps - Added
configuration.secretProperties
andproxy.secretProperties
for appending additional inline sensitive GraphDB configurations if needed - Added
configuration.extraProperties.existingConfigmap
andproxy.configuration.extraProperties.existingConfigmap
for appending GraphDB properties from an existing ConfigMap resource - Added
configuration.extraProperties.existingSecret
andproxy.configuration.extraProperties.existingSecret
for appending GraphDB properties from an existing Secret resource - Added a Service for single GraphDB deployments, configured with new configurations under
service
- Added new configurations for the Service resources
service
,headlessService
,proxy.service
andproxy.headlessService
:- Added
labels
configurations for insertion of additional labels - Added
ports
mappings in each Service - Added
extraPorts
for mapping additional ports, use in combination withextraContainerPorts
- Added
- Added
containerPorts
andproxy.containerPorts
for mapping the ports on which GraphDB listens on - Added
extraContainerPorts
andproxy.extraContainerPorts
to open additional container ports - Added
service.externalTrafficPolicy
andservice.proxy.externalTrafficPolicy
to override the policy to Local if needed - Added
service.healthCheckNodePort
andservice.proxy.healthCheckNodePort
to define a specific node port for LB health checks - Added
service.loadBalancerClass
andservice.proxy.loadBalancerClass
to select a specific load balancer implementation - Added
service.loadBalancerSourceRanges
andservice.proxy.loadBalancerSourceRanges
to restrict the external ingress traffic from the LB - Added
service.externalIPs
andservice.proxy.externalIPs
to use existing external IPs - Added
persistence.emptyDir
andproxy.persistence.emptyDir
configurations for an emptyDir volume that will be used when the persistence is disabled - Added
tempVolume
configurations for an emptyDir volume mapped to the /tmp folder in the GraphDB containers - Added configurations for extra
labels
andannotations
for all persistent volume claim templates:persistence.volumeClaimTemplate
,proxy.persistence.volumeClaimTemplate
andimport.volumeMount.volumeClaimTemplate
- Added
imagePullPolicy
configuration to the Jobs containers - Added
jobs.backoffLimit
for configuring the retry count for all jobs - Added
jobs.ttlSecondsAfterFinished
for configuring the time in seconds for all jobs before deleting finished pods - Added
jobs.persistence.emptyDir
configurations for the default temporary storage for all jobs - Added
proxy.command
andproxy.args
that override the default container entrypoint and command, use for troubleshooting - Added
proxy.pdb
for configuring a pod disruption budget for the GraphDB Proxy - Added
proxy.logback
configurations for providing the proxy with a custom Logback XML configuration - Added
proxy.initContainerSecurityContext
andproxy.initContainerResources
to avoid using the configurations from GraphDB - Added
automountServiceAccountToken
with default valuefalse
effectively ejecting the service account token by default - Added
updateStrategy
andproxy.updateStrategy
for controlling the strategy when updating pods - Added
podManagementPolicy
andproxy.podManagementPolicy
for configuring how the pods are created and scaled - Added
schedulerName
andproxy.schedulerName
for overriding the default Kubernetes scheduler - Added
dnsConfig
,dnsPolicy
,proxy.dnsConfig
andproxy.dnsPolicy
for customizing the DNS resolution if needed - Added
extraContainers
andproxy.extraContainers
for inserting additional containers into the pods of GraphDB and the GraphDB proxy - Added
initContainerDataPermissions
andproxy.initContainerDataPermissions
for changing permissions in the storage volumes if needed - Added
extraVolumeClaimTemplates
andproxy.extraVolumeClaimTemplates
- Added
extraObjects
as a way to insert additional Kubernetes objects into the deployment - Added
priorityClassName
andproxy.priorityClassName
configurations
- GraphDB and GraphDB proxy properties configmaps are now applied by default
- References to existing configmaps and secrets are now processed as templates
- Node scheduling configurations are now processed as templates
- Values in
labels
,annotations
andimagePullSecrets
are now evaluated as templates - Removed unused busybox image configurations from
images.busybox
- Renamed the port mappings of GraphDB and GraphDB proxy to
http
andrpc
- Service resources and probes now refer to the target ports by their nicknames instead of explicit port numbers
- Added trimming when loading files in the configmaps and secrets
- Cluster jobs now automatically resolve the cluster domain
- Removed
files/config/graphdb.properties
andfiles/config/proxy/graphdb.properties
and moved any defined properties directly into the ConfigMap declarations - Moved GraphDB specific properties from
GDB_JAVA_OPTS
into the properties ConfigMaps - Added
-XX:-UseCompressedOops
in the default Java arguments to allow allocating heap sizes larger than 32GBs when the max heap size is based on the-XX:MaxRAMPercentage
Java option - Ejected the default service account token in the GraphDB proxy pods
- Overhauled NOTES.txt to be more helpful
- Added default resource limits and requests for all init containers and provisioning jobs
- PodDisruptionBudget are enabled by default for both GraphDB and GraphDB proxy
- Updated init containers to invoke
bash
instead ofsh
- Updated the default memory limits and requests to 4Gi
- Added
graphdb.node.extraInitContainers
andgraphdb.clusterProxy.extraInitContainers
that allows for the insertion of custom init containers to both GraphDB and its proxy - Added
graphdb.clusterConfig.transactionLogMaximumSizeGB
configuration for the cluster creation JSON configuration. - Added
graphdb.clusterConfig.existingClusterConfig
for providing a custom cluster creation JSON configuration.
- Fixed URLs in the README.md that refer to the official GraphDB documentation.
- Fixed the cluster creation JSON configuration to use
messageSizeKB
instead ofmessageSize
, seegraphdb.clusterConfig.messageSize
.
- Added
graphdb.node.licenseFilename
for cases where the default filename is not "graphdb.license"
- Updated the default ingress's path type to
ImplementationSpecific
- Updated graphdb.properties example file
- Templates will now use
Chart.AppVersion
by default unlessimages.graphdb.tag
is specified. - Updated busybox image to version 1.36.1
- Use
clusterCreationTimeout
in patch cluster job as well
- Fixed
graphdb-cluster-proxy-configmap
to use the correct java_args configuration from values.yaml.
- Added configurations for specifying resource values for all remaining containers, see
graphdb.node.initContainerResources
andgraphdb.jobResources
.
- Fixed the image registry to have priority over the global registry
- Added configurations for extra service annotations, see
graphdb.node.service.annotations
,graphdb.clusterProxy.service.annotations
andgraphdb.clusterProxy.headlessService.annotations
- Added configurations for overriding graphdb-node's command and arguments, see
graphdb.node.command
andgraphdb.node.args
- Added configurations for Pod Disruption Budget for the GraphDB nodes, see
graphdb.pdb
- Added
graphdb-proxy-properties-configmap.yaml
to load graphdb.properties containing the cluster node addresses into the cluster-proxy
- Removed
versions
field as it is not really used nor needed - Removed the license provisioning init container in favor of directly mounting the license
- Removed unused
graphdb-node-storage
volume mount - Removed the node addresses from the
graphdb-cluster-proxy-configmap.yaml
to prevent cluster proxy restarting on cluster scale up/down - Updated the resources to not set CPU limits in order to avoid CPU throttling, lowered the default CPU requirements
- Added configurations for extra env vars in the nodes and cluster proxies, see
graphdb.node.envFrom
andgraphdb.clusterProxy.extraEnv
. - Added configurations for changing the
revisionHistoryLimit
for nodes and cluster proxies. - Added configurations for adding extra
podLabels
andpodAnnotations
for both the nodes and cluster proxies. - Added configurations for
terminationGracePeriodSeconds
to both the nodes and cluster proxies. - Fixed an issue with setting the
provisioningUsername
to anything other than the default.
- Updated the templates to avoid rendering empty configurations
- Removed unused helper template
graphdbLicenseSecret
- Added
graphdb
prefix in the helper templates function naming
- Added configurable security context for both the node and cluster-proxy statefulsets and all the jobs
- Added extraEnv, extraVolumes and extraVolumeMounts to the statefulsets
- Added an optional PV/PVC to the cluster-proxy to properly preserve logs (enabled by default)
- Changed the provision user credentials to be used through a secret instead of rendering inside the jobs
- Changed the logback.xml and graphdb.properties provisioning to work even if such are already present
- Changed the graphdb-cluster-config-configmap map to not render when there is no cluster
- Changed the default values of nodeSelector, affinity, tolerations and topologySpreadConstraints to be a part of the values.yaml file instead of inside the statefulsets
- Updated default clusterConfig.electionMinTimeout and clusterConfig.electionRangeTimeout to the current GraphDB defaults
- Updated the cluster proxy probes settings, so it can become available sooner
- Updated the cluster and repositories jobs with simpler arguments removing the need to copy scripts and to make them executable
- Added ephemeral volumes in the cluster and repositories jobs to avoid issues with readonly file systems
- Added the ability to provision a repository
- Fixed an issue with the external proxy connecting to the nodes when https is used
- Added ability to override cluster proxy's type, default remains LoadBalancer
- Fixed ingress template to properly handle root context
- Fixed single node returning wrong location header with explicit transactions
- The graphdb-node service now is always headless. If you installed Version 10.0.0 with
graphdb.clusterConfig.nodesCount
set to1
you will have to delete the service prior to an update
- Upgrade to GraphDB 10.0.1
- Cluster size can now be scaled
- Fixed an issue with deploying with security turned on
- Fixed an issue with the cluster proxy returning its internal address when queried externally
New major release that isn't compatible with the old chart, due to major breaking changes in Graphdb 10. Migration steps can be found here.
- Changed to work with the new GraphDB 10.
- Removed Kong.
- Moved from multiple stateful sets with 1 replica to statefulsets with multiple replicas.
- Configurable liveness, readiness, startup probes.
- Can use standalone without license by default. Don't forget to set your license for a working cluster and connectors!
- New overridable configmaps for users, settings and logback.
images.graphdb
,images.kong
andimages.busybox
are now maps which can specifyregistry
,repository
andtag
- Added global variables support (global.deployment.host/global.ingressHost, global.storageClass, global.imagePullSecrets and global.imageRegistry)
- Add ability to override logback.xml by setting
deplyment.logbackConfigFile
to the location of the file to use - Set additional JMX attributes using
graphdb.masters.additionalJmxArrtibutes
. This is a map of attr_name=attr_value pairs - Fixed loadrdf tool path
- Moved to dynamic volume provisioning by default (volumeClaimTemplates), old default pvc/pv's are still available
- Added JDBC driver support for Ontop functionality
- Minor fixes
- Added multiple repositories provisioning
- Added security provisioning
- Added GraphDB properties provisioning
- Changed GraphDB vhosts and external url properties
- Upgrade to GraphDB 9.8.1
- Provide flexible persistence provisioning
- Provide HA options like node selectors, podaffinity, tolerations, etc
- Make Ingress and kong optional
- Minor fixes