mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 09:07:09 +08:00
159 lines
6.8 KiB
Markdown
159 lines
6.8 KiB
Markdown
# Configs for deployments
|
|
|
|
## Introduction
|
|
|
|
This directory contains the configs for deployments of Hyperswitch in different hosted environments.
|
|
|
|
Hyperswitch has **3** components namely,
|
|
|
|
- router
|
|
- drainer
|
|
- scheduler
|
|
- consumer
|
|
- producer
|
|
|
|
We maintain configs for the `router` component for 3 different environments, namely,
|
|
|
|
- Integration Test
|
|
- Sandbox
|
|
- Production
|
|
|
|
To learn about what "router", "drainer" and "scheduler" is, please refer to the [Hyperswitch architecture][architecture] documentation.
|
|
|
|
### Tree structure
|
|
|
|
```text
|
|
config/deployments # Root directory for the deployment configs
|
|
├── README.md # This file
|
|
├── drainer.toml # Config specific to drainer
|
|
├── env_specific.toml # Config for environment specific values which are meant to be sensitive (to be set by the user)
|
|
├── integration_test.toml # Config specific to integration_test environment
|
|
├── production.toml # Config specific to production environment
|
|
├── sandbox.toml # Config specific to sandbox environment
|
|
└── scheduler # Directory for scheduler configs
|
|
├── consumer.toml # Config specific to consumer
|
|
└── producer.toml # Config specific to producer
|
|
```
|
|
|
|
## Router
|
|
|
|
The `integration_test.toml`, `sandbox.toml`, and `production.toml` files are configuration files for the environments `integration_test`, `sandbox`, and `production`, respectively. These files maintain a 1:1 mapping with the environment names, and it is recommended to use the same name for the environment throughout this document.
|
|
|
|
### Generating a Config File for the Router
|
|
|
|
The `env_specific.toml` file contains values that are specific to the environment. This file is kept separate because the values in it are sensitive and are meant to be set by the user. The `env_specific.toml` file is merged with the `integration_test.toml`, `sandbox.toml`, or `production.toml` file to create the final configuration file for the router.
|
|
|
|
For example, to build and deploy Hyperswitch in the **sandbox environment**, you can duplicate the `env_specific.toml` file and rename it as `sandbox_config.toml`. Then, update the values in the file with the proper values for the sandbox environment.
|
|
|
|
The environment-specific `sandbox.toml` file, which contains the Hyperswitch recommended defaults, is merged with the `sandbox_config.toml` file to create the final configuration file called `sandbox_release.toml`. This file is marked as ready for deploying on the sandbox environment.
|
|
|
|
1. Duplicate the `env_specific.toml` file and rename it as `sandbox_config.toml`:
|
|
|
|
```shell
|
|
cp config/deployments/env_specific.toml config/deployments/sandbox_config.toml
|
|
```
|
|
|
|
2. Update the values in the `sandbox_config.toml` file with the proper values for the sandbox environment:
|
|
|
|
```shell
|
|
vi config/deployments/sandbox_config.toml
|
|
```
|
|
|
|
3. To merge the files you can use `cat`:
|
|
|
|
```shell
|
|
cat config/deployments/sandbox.toml config/deployments/sandbox_config.toml > config/deployments/sandbox_release.toml
|
|
```
|
|
|
|
> [!NOTE]
|
|
> You can refer to the [`config.example.toml`][config_example] file to understand the variables that used are in the `env_specific.toml` file.
|
|
|
|
## Scheduler
|
|
|
|
The scheduler has two components, namely `consumer` and `producer`.
|
|
|
|
The `consumer.toml` and `producer.toml` files are the configuration files for the `consumer` and `producer`, respectively. These files contain the default values recommended by Hyperswitch.
|
|
|
|
### Generating a Config File for the Scheduler
|
|
|
|
Scheduler configuration files are built on top of the router configuration files. So, the `sandbox_release.toml` file is merged with the `consumer.toml` or `producer.toml` file to create the final configuration file for the scheduler.
|
|
|
|
You can use `cat` to merge the files in the terminal.
|
|
|
|
- Below is an example for consumer in sandbox environment:
|
|
|
|
```shell
|
|
cat config/deployments/scheduler/consumer.toml config/deployments/sandbox_release.toml > config/deployments/consumer_sandbox_release.toml
|
|
```
|
|
|
|
- Below is an example for producer in sandbox environment:
|
|
|
|
```shell
|
|
cat config/deployments/scheduler/producer.toml config/deployments/sandbox_release.toml > config/deployments/producer_sandbox_release.toml
|
|
```
|
|
|
|
## Drainer
|
|
|
|
Drainer is an independent component, and hence, the drainer configs can be used directly provided that the user updates the `drainer.toml` file with proper values before using.
|
|
|
|
## Running Hyperswitch through Docker Compose
|
|
|
|
To run the router, you can use the following snippet in the `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
### Application services
|
|
hyperswitch-server:
|
|
image: juspaydotin/hyperswitch-router:latest # This pulls the latest image from Docker Hub. If you wish to use a version without added features (like KMS), you can replace `latest` with `standalone`. However, please note that the standalone version is not recommended for production use.
|
|
command: /local/bin/router --config-path /local/config/deployments/sandbox_release.toml # <--- Change this to the config file that is generated for the environment.
|
|
ports:
|
|
- "8080:8080"
|
|
volumes:
|
|
- ./config:/local/config
|
|
```
|
|
|
|
To run the producer, you can use the following snippet in the `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
hyperswitch-producer:
|
|
image: juspaydotin/hyperswitch-producer:latest
|
|
command: /local/bin/scheduler --config-path /local/config/deployments/producer_sandbox_release.toml # <--- Change this to the config file that is generated for the environment.
|
|
volumes:
|
|
- ./config:/local/config
|
|
environment:
|
|
- SCHEDULER_FLOW=producer
|
|
```
|
|
|
|
To run the consumer, you can use the following snippet in the `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
hyperswitch-consumer:
|
|
image: juspaydotin/hyperswitch-consumer:latest
|
|
command: /local/bin/scheduler --config-path /local/config/deployments/consumer_sandbox_release.toml # <--- Change this to the config file that is generated for the environment
|
|
volumes:
|
|
- ./config:/local/config
|
|
environment:
|
|
- SCHEDULER_FLOW=consumer
|
|
```
|
|
|
|
To run the drainer, you can use the following snippet in the `docker-compose.yml` file:
|
|
|
|
```yaml
|
|
hyperswitch-drainer:
|
|
image: juspaydotin/hyperswitch-drainer:latest
|
|
command: /local/bin/drainer --config-path /local/config/deployments/drainer.toml
|
|
volumes:
|
|
- ./config:/local/config
|
|
```
|
|
|
|
> [!NOTE]
|
|
> You can replace the term `sandbox` with the environment name that you are deploying to (e.g., `production`, `integration_test`, etc.) with respective changes (optional) and use the same steps to generate the final configuration file for the environment.
|
|
|
|
You can verify that the server is up and running by hitting the health check endpoint:
|
|
|
|
```shell
|
|
curl --head --request GET 'http://localhost:8080/health'
|
|
```
|
|
|
|
[architecture]: /docs/architecture.md
|
|
[config_example]: /config/config.example.toml
|