This repository contains Helm Charts
orchestrated via Helmfile
within a Minikube
local cluster.
There is implementation of the entire business logic written on Python
,
enabling real-time transactions publishing via Apache Kafka
and analyzing via ClickHouse
.
The icing on the cake is Apache Superset
as BI tool to visualize all the transactions and blockchain analytics.
To run this project, make sure you have the following tools installed:
-
Docker1 (v25.0.3 or above): Containerization platform for building, shipping, and running applications.
-
Kubectl2 (v1.29.1 or above): Command-line tool for interacting with Kubernetes clusters.
-
Minikube3 (v1.32.0 or above): Lightweight Kubernetes implementation for local development and testing.
-
Helm4 (v3.14.0 or above): Kubernetes package manager for managing applications and their dependencies.
-
Helmfile5 (v0.162.0 or above): Declarative configuration for managing Helm releases.
-
SOPs6 (v3.8.1 or above): Simple and lightweight tool for secrets operations that encrypts with PGP keys.
-
GnuPG7 (v2.2.27 or above): Open-source implementation of the OpenPGP standard for encrypting data.
To deploy project with default values and standard configuration, follow these steps:
- Clone current repository and change working directory:
git clone https://github.com/e183b796621afbf902067460/quickview-minikube.git && cd quickview-minikube/
- Deploy without having to do a bunch of setup,
so use the
/etc/.pgp.asc
file and import existed PGP keys:
gpg --import etc/.pgp.asc
- Default secrets were encrypted using
FBC7B9E2A4F9289AC0C1D4843D16CEE4A27381B4
PGP key, which was already imported in the step above, so paste it to/etc/.sops.yaml
:
creation_rules:
- pgp: FBC7B9E2A4F9289AC0C1D4843D16CEE4A27381B4
- Deploy project using
make
utility with default cluster configuration:
make deploy
- After all the steps done, just wait until all containers will be in
Running
state:
kubectl get all --all-namespaces
- When all containers in
Running
state, paste output of this command in browser:
echo "$(minikube ip):32123"
Note
Authorize using admin
default credentials.
Another configuration can be provided depends on your system, so to change parameters follow these steps:
- Create PGP keys for secrets encryption:
gpg --full-generate-key
- List existed PGP keys and copy created one from previous step:
gpg --list-keys
- Paste created PGP key to
/etc/.sops.yaml
, it should look like:
creation_rules:
- pgp: FBC7B9E2A4F9289AC0C1D4843D16CEE4A27381B4
Important
At this step,
provide specific configuration for each container through /master.d
and adjust values where it's needed or copy from /default.d
!
- Encrypt provided secrets using
sops
utility, example forquickview
container:
sops --config etc/.sops.yaml --encrypt etc/quickview/master.d/secrets.raw.yaml > etc/quickview/master.d/secrets.yaml && rm -rf etc/quickview/master.d/secrets.raw.yaml
- Set
QUICKVIEW_ENVIRONMENT
environment variable to deploy with new configuration provided in/master.d
directories:
export QUICKVIEW_ENVIRONMENT=master
- Deploy project using
make
utility with master cluster configuration:
make deploy -e
Set of possible arguments listed below.
QUICKVIEW_LOG_LEVEL
: Argument sets the log level for the application to "debug" by default,
allowing for detailed logging information to be displayed.
It's helpful for troubleshooting and debugging purposes.
QUICKVIEW_HELMFILE_PATH
: Argument specifies the path to the configuration file used by the application.
It points to the file containing configurations and deployment instructions which originally stored in /helmfile.d/helmfile.yaml
.
QUICKVIEW_ENVIRONMENT
: Argument defines the environment in which the application will be deployed.
It typically represents a specific set of configurations, variables,
and resources tailored for a particular deployment environment.
QUICKVIEW_CPUS
: Argument configures the number of CPUs allocated to the cluster used by the application.
Increasing the number of CPUs can improve performance,
especially for resource-intensive workloads or applications with high concurrency requirements.
QUICKVIEW_MEMORY
: Argument sets the amount of memory (in megabytes) allocated to the cluster used by the application.
Allocating sufficient memory is essential for running applications smoothly,
especially those with memory-intensive operations.