Skip to main content

Platform Installation Guide

Overview

This guide walks you through installing the SettleMint Platform using Helm, providing a command-line based installation method with full control over the deployment process.

Prerequisites

Before starting the installation, ensure you have:

  • Completed all prerequisite services setup
  • Collected all required information from the prerequisite guides
  • Met all infrastructure requirements
  • Helm 3.x installed
  • kubectl access to your cluster
  • Admin permissions

Installation Steps

1. Sign in to the SettleMint Helm Registry

helm registry login harbor.settlemint.com --username <username> --password <password>

Replace <username> and <password> with your provided credentials.

2. Review Configuration Options

View all available configuration options:

helm show values oci://registry.settlemint.com/settlemint-platform/settlemint --version 7.0.0

3. Install the Platform

Create a values file (values.yaml) with your configuration:

ingress:
enabled: true
className: nginx
host: "<your-domain>"
annotations:
cert-manager.io/cluster-issuer: "letsencrypt"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
tls:
- secretName: "blockchaintransformationplatform"
hosts:
- "<your-domain>"
- "*.<your-domain>"

redis:
host: "<redis-host>"
password: "<redis-password>"
port: "<redis-port>"
tls: true

postgresql:
host: "<postgresql-host>"
port: "<postgresql-port>"
user: "<postgresql-user>"
password: "<postgresql-password>"
database: "<postgresql-database>"
sslMode: require

auth:
jwtSigningKey: "<jwt-signing-key>"
providers:
google:
enabled: true
clientID: "<google-client-id>"
clientSecret: "<google-client-secret>"

vault:
address: "<vault-address>"
namespace: "admin"
roleId: "<vault-role-id>"
secretId: "<vault-secret-id>"

features:
observability:
metrics:
enabled: true
apiUrl: "<prometheus-url>"
logs:
enabled: true
apiUrl: "<loki-url>"
deploymentEngine:
platform:
domain:
hostname: "<your-domain>"
clusterManager:
domain:
hostname: "<your-domain>"
state:
s3ConnectionUrl: "<s3-connection-url>"
credentials:
encryptionKey: "<encryption-key>"
aws:
accessKeyId: "<aws-access-key>"
secretAccessKey: "<aws-secret-key>"
region: "<aws-region>"
Click to see a complete example values file
ingress:
enabled: true
className: nginx
host: "sandbox-demo.blockchaintransformationplatform.com"
annotations:
cert-manager.io/cluster-issuer: "letsencrypt"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
tls:
- secretName: "blockchaintransformationplatform"
hosts:
- "sandbox-demo.blockchaintransformationplatform.com"
- "*.sandbox-demo.blockchaintransformationplatform.com"

redis:
host: redis-17220.c250.eu-central-1-1.ec2.cloud.redislabs.com
password: supersecretredispassword
port: 17220
tls: true

postgresql:
host: ep-morning-moon-a20p0s24-pooler.eu-central-1.aws.neon.tech
port: 5432
user: sandbox-demo_owner
password: mysupersecretpsqlpassword
database: sandbox-demo
sslMode: require

auth:
jwtSigningKey: "HamMmiYGP+sBClp0tWbhlg8I5+k/OOoM+/7rNOLpHtI="
providers:
google:
enabled: true
clientID: "123456789-abcdefghijklmnopqrstuvwxyz.apps.googleusercontent.com"
clientSecret: "GOCSPX-abcdefghijklmnopqrstuvwxyz"

vault:
address: "https://sandbox-demo-public-vault-975715c8.ba526938.z1.hashicorp.cloud:8200"
namespace: "admin"
roleId: "12345678-90ab-cdef-ghij-klmnopqrstuv"
secretId: "12345678-90ab-cdef-ghij-klmnopqrstuv"

features:
observability:
metrics:
enabled: true
apiUrl: "http://victoria-metrics-victoria-metrics-single-server.observability.svc.cluster.local:8428/prometheus/api/v1"
logs:
enabled: true
apiUrl: "http://loki-gateway.observability.svc.cluster.local/loki/api/v1"
deploymentEngine:
platform:
domain:
hostname: "sandbox-demo.blockchaintransformationplatform.com"
clusterManager:
domain:
hostname: "sandbox-demo.blockchaintransformationplatform.com"
state:
s3ConnectionUrl: "s3://sandbox-demo-bucket?region=eu-central-1"
credentials:
encryptionKey: "r532kL19Jrp8Fnql43ScR4UhN46Sh1QmgbJXjkPC2YI="
aws:
accessKeyId: "AKIAIOSFODNN7EXAMPLE"
secretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
region: "eu-central-1"

app:
replicaCount: 2
api:
replicaCount: 2
job:
replicaCount: 2
resources:
requests:
cpu: 100m
memory: 512Mi
autoscaling:
enabled: true
deployWorker:
replicaCount: 2
resources:
requests:
cpu: 100m
memory: 512Mi
autoscaling:
enabled: true
clusterManager:
replicaCount: 2
docs:
replicaCount: 2

Install the platform:

helm upgrade --install settlemint oci://registry.settlemint.com/settlemint-platform/settlemint \
--namespace settlemint \
--version 7.0.0 \
--create-namespace \
--values values.yaml

4. Verify Installation

Check the deployment status:

kubectl get pods -n settlemint

Verify all pods are running and ready.

5. Access the Platform

Once all pods are running, access the platform at https://<your-domain>.

Troubleshooting

If you encounter issues during installation:

  1. Debug the installation:
helm upgrade --install --debug --dry-run settlemint oci://registry.settlemint.com/settlemint-platform/settlemint \
--namespace settlemint \
--values values.yaml
  1. Check pod logs:
kubectl logs -n settlemint <pod-name>
  1. Generate a support bundle:
# Install support bundle plugin
curl https://krew.sh/support-bundle | bash

# Generate bundle
kubectl support-bundle --load-cluster-specs

Send the generated support bundle to [email protected] for assistance.

Uninstalling

To remove the platform:

helm delete settlemint --namespace settlemint

Note: This will not delete persistent volumes or other resources outside of Helm's control. You may need to clean these up manually.