Tile38 is an ultra-fast, in-memory geospatial database with native geofencing capabilities. It is designed for real-time location-based applications and supports complex spatial queries with very low latency.
This Helm chart deploys Tile38 on Kubernetes and supports a leader–follower architecture to enable horizontal read scaling while keeping write consistency.
The chart deploys Tile38 using a single leader and zero or more followers:
-
Leader
- Handles all write operations
- Acts as the source of truth
- Can optionally persist data using a PersistentVolumeClaim (PVC)
-
Followers
- Replicate data from the leader
- Serve read-only traffic for horizontal read scaling
- Can be enabled or disabled via values
- Replica count is configurable
Followers automatically connect to the leader using Tile38's native replication (FOLLOW) mechanism.
- Kubernetes 1.19+
- Helm 3.0+
- A working PersistentVolume provisioner (if persistence is enabled)
- Prometheus Operator (only if
serviceMonitor.enabled=true)
helm repo add tile38 https://1995parham.github.io/tile38-chart
helm repo update
helm install tile38 tile38/tile38After installation, Helm prints connection instructions in the output of NOTES.txt.
Example port-forwarding:
kubectl port-forward svc/tile38-leader 9851:9851You can then connect using:
tile38-cli -p 9851 pingConfiguration values follow the structure of values.yaml.
| Name | Description | Default |
|---|---|---|
image.repository |
Tile38 image repository | tile38/tile38 |
image.tag |
Image tag | latest |
image.pullPolicy |
Image pull policy | IfNotPresent |
| Name | Description | Default |
|---|---|---|
leader.config.* |
Tile38 leader configuration | {} |
leader.service.type |
Service type | ClusterIP |
leader.service.port |
Service port | 9851 |
leader.persistence.enabled |
Enable persistence | false |
leader.persistence.size |
PVC size | 8Gi |
leader.persistence.storageClass |
StorageClass name | "" |
leader.persistence.existingClaim |
Use existing PVC | "" |
leader.resources.* |
Resource requests/limits | {} |
leader.extraFlags |
Extra Tile38 flags | [] |
leader.extraArgs |
Extra container args | [] |
| Name | Description | Default |
|---|---|---|
followers.enabled |
Enable follower replicas | false |
followers.replicaCount |
Number of follower replicas | 1 |
followers.config.follow_host |
Leader service hostname | tile38-leader |
followers.config.follow_port |
Leader port | 9851 |
followers.config.leaderauth |
Leader auth password | "" |
followers.config.read_only |
Enable read-only mode | true |
followers.service.type |
Service type | ClusterIP |
followers.service.port |
Service port | 9851 |
followers.persistence.enabled |
Enable persistence | false |
followers.persistence.size |
PVC size | 8Gi |
followers.resources.* |
Resource requests/limits | {} |
| Name | Description | Default |
|---|---|---|
global.podSecurityContext |
Pod-level security context | {} |
global.securityContext |
Container security context | {} |
global.nodeSelector |
Node selector | {} |
global.tolerations |
Tolerations | [] |
global.affinity |
Affinity rules | {} |
| Name | Description | Default |
|---|---|---|
serviceAccount.create |
Create ServiceAccount | true |
serviceAccount.annotations |
ServiceAccount annotations | {} |
serviceAccount.name |
Custom ServiceAccount name | "" |
Useful for integrating with cloud IAM roles (e.g., IRSA on AWS).
| Name | Description | Default |
|---|---|---|
serviceMonitor.enabled |
Enable ServiceMonitor | false |
Requires Prometheus Operator.
| Name | Description | Default |
|---|---|---|
networkPolicy.enabled |
Enable NetworkPolicy | false |
networkPolicy.from |
Allowed ingress sources | [] |
Provides pod-level network isolation.
For advanced Tile38 configuration options, refer to: https://tile38.com/topics/configuration
- Leader uses a single PVC when persistence is enabled
- Followers use StatefulSet
volumeClaimTemplates, creating one PVC per replica
You can attach an existing PVC to the leader using:
leader:
persistence:
existingClaim: my-tile38-pvcIf persistence.keepOnDelete=true, PVCs are retained after Helm uninstall.
Run the included tests:
helm test tile38Tests include:
- Connectivity test
- Follower replication test
- Geospatial operation test
- Set/Get validation
- Validate connectivity:
tile38-cli ping- Check replication status on followers:
tile38-cli serverhelm uninstall tile38Note: PersistentVolumeClaims may remain depending on retention settings.
This chart is licensed under the Apache 2.0 License.