helm

Matcher Helm Chart

Source code can be found here:

This helm chart installs Matcher, a transaction reconciliation engine for the Lerian Studio ecosystem.


Install Matcher Helm Chart:

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

Configuring Ingress for Different Controllers

The Matcher Helm Chart supports different Ingress Controllers for exposing services when necessary.

NGINX Ingress Controller

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

Matcher Components:

Matcher Service:

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. ""

Dependencies

The Matcher Helm chart includes the following dependencies:

Valkey (Redis-compatible)

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"

PostgreSQL

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"

RabbitMQ

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"

ConfigMap Environment Variables

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.


Secrets

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. ""

External Dependencies

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"

Support & Community