Source code can be found here:
This helm chart installs Matcher, a transaction reconciliation engine for the Lerian Studio ecosystem.
To install Matcher using Helm, run the following command:
$ helm install matcher oci://registry-1.docker.io/lerianstudio/matcher-helm --version 1.0.0 -n matcher --create-namespace
This will create a new namespace called matcher if it doesn’t already exist and deploy the Matcher Helm chart.
After installation, you can verify that the release was successful by listing the Helm releases in the matcher namespace:
$ helm list -n matcher
The Matcher Helm Chart supports different Ingress Controllers for exposing services when necessary.
To use the NGINX Ingress Controller, configure the values.yaml as follows:
matcher:
ingress:
enabled: true
className: "nginx"
annotations: {}
hosts:
- host: matcher.example.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: matcher-tls
hosts:
- matcher.example.com
| Parameter | Description | Default Value |
|---|---|---|
matcher.name |
Service name. | "matcher" |
matcher.enabled |
Enable or disable the matcher service. | true |
matcher.replicaCount |
Number of replicas for the matcher service. | 2 |
matcher.revisionHistoryLimit |
Number of old ReplicaSets to retain. | 10 |
matcher.image.repository |
Repository for the matcher service container image. | "lerianstudio/matcher" |
matcher.image.pullPolicy |
Image pull policy. | "IfNotPresent" |
matcher.image.tag |
Image tag used for deployment. | "1.0.0" |
matcher.imagePullSecrets |
Secrets for pulling images from a private registry. | [] |
matcher.nameOverride |
Overrides the default generated name by Helm. | "" |
matcher.fullnameOverride |
Overrides the full name generated by Helm. | "" |
matcher.podAnnotations |
Pod annotations for additional metadata. | {} |
matcher.podSecurityContext |
Security context applied at the pod level. | {} |
matcher.securityContext.* |
Defines security context settings for the container. | See values.yaml |
matcher.pdb.enabled |
Specifies whether PodDisruptionBudget is enabled. | true |
matcher.pdb.minAvailable |
Minimum number of available pods. | 1 |
matcher.pdb.maxUnavailable |
Maximum number of unavailable pods. | 1 |
matcher.pdb.annotations |
Annotations for the PodDisruptionBudget. | {} |
matcher.deploymentUpdate.* |
Deployment update strategy. | See values.yaml |
matcher.service.type |
Kubernetes service type. | "ClusterIP" |
matcher.service.port |
Port for the HTTP API. | 8080 |
matcher.service.annotations |
Annotations for the service. | {} |
matcher.ingress.enabled |
Specifies whether Ingress is enabled. | false |
matcher.ingress.className |
Ingress class name. | "" |
matcher.ingress.annotations |
Additional ingress annotations. | {} |
matcher.ingress.hosts |
Configured hosts for Ingress and associated paths. | "" |
matcher.ingress.tls |
TLS configurations for Ingress. | [] |
matcher.resources.* |
CPU/Memory resource requests/limits. | See values.yaml |
matcher.autoscaling.enabled |
Specifies whether autoscaling is enabled. | true |
matcher.autoscaling.minReplicas |
Minimum number of replicas for autoscaling. | 2 |
matcher.autoscaling.maxReplicas |
Maximum number of replicas for autoscaling. | 5 |
matcher.autoscaling.targetCPUUtilizationPercentage |
Target CPU utilization percentage for autoscaling. | 80 |
matcher.autoscaling.targetMemoryUtilizationPercentage |
Target memory utilization percentage for autoscaling. | 80 |
matcher.nodeSelector |
Node selectors for pod scheduling. | {} |
matcher.tolerations |
Tolerations for pod scheduling. | {} |
matcher.affinity |
Affinity rules for pod scheduling. | {} |
matcher.configmap.* |
Environment variables for the service. | See values.yaml |
matcher.secrets.* |
Secrets for the service. | See values.yaml |
matcher.useExistingSecret |
Use an existing secret instead of creating a new one. | false |
matcher.existingSecretName |
The name of the existing secret to use. | "" |
matcher.serviceAccount.create |
Specifies whether a ServiceAccount should be created. | true |
matcher.serviceAccount.annotations |
Annotations for the ServiceAccount. | {} |
matcher.serviceAccount.name |
Name of the service account. | "" |
The Matcher Helm chart includes the following dependencies:
| Parameter | Description | Default Value |
|---|---|---|
valkey.enabled |
Enable or disable Valkey. | true |
valkey.architecture |
Valkey architecture. | "standalone" |
valkey.auth.enabled |
Enable authentication. | true |
valkey.auth.password |
Valkey password. | "lerian" |
valkey.auth.username |
Valkey username. | "matcher" |
| Parameter | Description | Default Value |
|---|---|---|
postgresql.enabled |
Enable or disable PostgreSQL. | true |
postgresql.architecture |
PostgreSQL architecture. | "replication" |
postgresql.auth.postgresPassword |
PostgreSQL admin password. | "lerian" |
postgresql.auth.username |
PostgreSQL username. | "matcher" |
postgresql.auth.password |
PostgreSQL user password. | "lerian" |
postgresql.auth.database |
PostgreSQL database name. | "matcher" |
| Parameter | Description | Default Value |
|---|---|---|
rabbitmq.enabled |
Enable or disable RabbitMQ. | true |
rabbitmq.authentication.user.value |
RabbitMQ username. | "matcher" |
rabbitmq.authentication.password.value |
RabbitMQ password. | "lerian" |
The following environment variables can be configured via the matcher.configmap section:
| Variable | Description | Default Value |
|---|---|---|
ENV_NAME |
Environment name. | "production" |
LOG_LEVEL |
Log level. | "info" |
SERVER_ADDRESS |
Server address. | ":8080" |
HTTP_BODY_LIMIT_BYTES |
HTTP body limit in bytes. | "104857600" |
POSTGRES_HOST |
PostgreSQL host. | "matcher-postgresql-primary.matcher.svc.cluster.local." |
POSTGRES_PORT |
PostgreSQL port. | "5432" |
POSTGRES_USER |
PostgreSQL username. | "matcher" |
POSTGRES_DB |
PostgreSQL database. | "matcher" |
REDIS_HOST |
Redis/Valkey host. | "matcher-valkey-primary.matcher.svc.cluster.local.:6379" |
RABBITMQ_HOST |
RabbitMQ host. | "matcher-rabbitmq.matcher.svc.cluster.local." |
RABBITMQ_PORT |
RabbitMQ port. | "5672" |
AUTH_ENABLED |
Enable authentication. | "false" |
ENABLE_TELEMETRY |
Enable OpenTelemetry. | "false" |
OBJECT_STORAGE_ENDPOINT |
Object storage endpoint. | "http://matcher-seaweedfs.matcher.svc.cluster.local.:8333" |
EXPORT_WORKER_ENABLED |
Enable export worker. | "true" |
For a complete list of environment variables, see the values.yaml file.
The following secrets can be configured via the matcher.secrets section:
| Secret | Description | Default Value |
|---|---|---|
POSTGRES_PASSWORD |
PostgreSQL password. | "lerian" |
POSTGRES_REPLICA_PASSWORD |
PostgreSQL replica password. | "lerian" |
REDIS_PASSWORD |
Redis/Valkey password. | "lerian" |
RABBITMQ_PASSWORD |
RabbitMQ password. | "lerian" |
OBJECT_STORAGE_ACCESS_KEY_ID |
Object storage access key. | "" |
OBJECT_STORAGE_SECRET_ACCESS_KEY |
Object storage secret key. | "" |
AUTH_JWT_SECRET |
JWT secret for authentication. | "" |
To use external dependencies instead of the bundled ones, disable the internal dependencies and configure the external connection settings:
# Disable internal PostgreSQL
postgresql:
enabled: false
external: true
# Configure external PostgreSQL via configmap
matcher:
configmap:
POSTGRES_HOST: "external-postgres.example.com"
POSTGRES_PORT: "5432"