<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Terraform on DevOps Engineer &amp; CloudAdmin</title><link>https://ruadmin.root.sx/tags/terraform/</link><description>Recent content in Terraform on DevOps Engineer &amp; CloudAdmin</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><atom:link href="https://ruadmin.root.sx/tags/terraform/index.xml" rel="self" type="application/rss+xml"/><item><title>Geo-Distributed Blockchain Node Cluster in Kubernetes</title><link>https://ruadmin.root.sx/posts/clouds/blockchain-k8s-cluster/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/clouds/blockchain-k8s-cluster/</guid><description>&lt;h2 id="geo-distributed-blockchain-node-cluster-in-kubernetes"&gt;Geo-Distributed Blockchain Node Cluster in Kubernetes&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;Cryptocurrency platform (Web3 / DeFi)&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;The client needed fault-tolerant infrastructure to run ETH and BSC full nodes across four regions (EU, US, AP, LatAm) with minimal latency for end users, DDoS and RPC spam protection, secure HSM-based transaction signing, and centralized observability. Cold node sync takes 2–3 weeks — a fast-bootstrap solution was required.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="solution"&gt;Solution&lt;/h4&gt;
&lt;h6 id="1-infrastructure--iac-terraform--eks"&gt;1. Infrastructure &amp;amp; IaC (Terraform + EKS)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Terraform modules: VPC, subnets, security groups for 4 regions (Frankfurt, Virginia, Singapore, São Paulo)&lt;/li&gt;
&lt;li&gt;Managed Kubernetes (EKS 1.29+) per region with dedicated node pools: full nodes, archive nodes, signing service&lt;/li&gt;
&lt;li&gt;NVMe StorageClass (gp3) via CSI driver for high-performance chaindata storage&lt;/li&gt;
&lt;li&gt;Helm charts for geth / bsc-node with per-region custom values&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-gitops-flux-cd-multi-cluster"&gt;2. GitOps: Flux CD Multi-Cluster&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Flux CD v2 with &lt;code&gt;Kustomization&lt;/code&gt; per region — single source of truth for all clusters&lt;/li&gt;
&lt;li&gt;Secrets management: HashiCorp Vault + External Secrets Operator (ESO)&lt;/li&gt;
&lt;li&gt;All infrastructure changes applied via git push — no direct cluster access required&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-load-balancing--anti-spam"&gt;3. Load Balancing &amp;amp; Anti-Spam&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;HAProxy 2.8: sticky sessions, health checks via &lt;code&gt;eth_syncing&lt;/code&gt; — traffic routed only to fully synced nodes&lt;/li&gt;
&lt;li&gt;Nginx Ingress: rate limiting, IP reputation filtering (Lua-based, fail2ban-style)&lt;/li&gt;
&lt;li&gt;Cloudflare Workers: geo-routing + L7 DDoS protection&lt;/li&gt;
&lt;li&gt;Custom Go sidecar: health endpoint returns &lt;code&gt;ready&lt;/code&gt; only when node is fully synced&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-hsm-integration-for-transaction-signing"&gt;4. HSM Integration for Transaction Signing&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;AWS CloudHSM (prod) / YubiHSM2 (staging) for private key storage&lt;/li&gt;
&lt;li&gt;Go microservice with PKCS#11 abstraction — swap HSM vendor without rewriting code&lt;/li&gt;
&lt;li&gt;Isolated K8s namespace + NetworkPolicy: no egress except to HSM endpoint&lt;/li&gt;
&lt;li&gt;gRPC API for backend: sign tx, get pubkey&lt;/li&gt;
&lt;li&gt;Full audit log of all signing operations → Loki&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-monitoring--alerting"&gt;5. Monitoring &amp;amp; Alerting&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Custom Prometheus exporter (Go): &lt;code&gt;eth_blockNumber&lt;/code&gt;, &lt;code&gt;eth_syncing&lt;/code&gt;, peer count per node&lt;/li&gt;
&lt;li&gt;Grafana dashboards: sync lag, block height per region, RPC latency, SLO 99.9%&lt;/li&gt;
&lt;li&gt;Alertmanager → PagerDuty: alerts on block lag &amp;gt; N blocks, node down, peer count below threshold&lt;/li&gt;
&lt;li&gt;Loki + Promtail: structured logs from all nodes with region/pod correlation&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-operations--disaster-recovery"&gt;6. Operations &amp;amp; Disaster Recovery&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Snapshot bootstrap: chaindata from S3 via rclone — node ready in hours instead of weeks&lt;/li&gt;
&lt;li&gt;DR playbook: step-by-step runbooks for regional recovery&lt;/li&gt;
&lt;li&gt;Chaos Engineering (Chaos Mesh): node kill, network partition, pod failure tests&lt;/li&gt;
&lt;li&gt;Architecture Decision Records (ADR) for all key design choices&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="technologies"&gt;Technologies&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/kubernetes-plain.svg" alt="Kubernetes"&gt;&lt;div&gt;Kubernetes&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/terraform-original.svg" alt="Terraform"&gt;&lt;div&gt;Terraform&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/helm-original.svg" alt="Helm"&gt;&lt;div&gt;Helm&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/flux-cd.svg" alt="Flux CD"&gt;&lt;div&gt;Flux CD&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/prometheus-original.svg" alt="Prometheus"&gt;&lt;div&gt;Prometheus&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/grafana-original.svg" alt="Grafana"&gt;&lt;div&gt;Grafana&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="results"&gt;Results&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Geo-routing:&lt;/strong&gt; latency reduced by routing users to the nearest region&lt;br&gt;
✅ &lt;strong&gt;Fast bootstrap:&lt;/strong&gt; node ready in hours via S3 snapshot instead of 2–3 weeks of sync&lt;br&gt;
✅ &lt;strong&gt;Anti-spam:&lt;/strong&gt; rate limiting + IP reputation — public RPC handles bot load without degradation&lt;br&gt;
✅ &lt;strong&gt;HSM:&lt;/strong&gt; private keys never leave the hardware module&lt;br&gt;
✅ &lt;strong&gt;GitOps:&lt;/strong&gt; every infrastructure change goes through git with a full audit trail&lt;br&gt;
✅ &lt;strong&gt;SLO 99.9%:&lt;/strong&gt; tracked in Grafana, PagerDuty alerts on any degradation&lt;/p&gt;</description></item><item><title>Migration and DevOps for a CS-Cart Marketplace</title><link>https://ruadmin.root.sx/posts/clouds/cscart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://ruadmin.root.sx/posts/clouds/cscart/</guid><description>&lt;h2 id="infrastructure-and-deployment-of-a-multi-vendor-cs-cart-marketplace"&gt;Infrastructure and Deployment of a Multi-Vendor CS-Cart Marketplace&lt;/h2&gt;
&lt;hr&gt;
&lt;h4 id="client"&gt;Client&lt;/h4&gt;
&lt;p&gt;Multi-vendor marketplace&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="challenge"&gt;Challenge&lt;/h4&gt;
&lt;p&gt;Revive a legacy marketplace project and migrate it from standard shared hosting to a modern cloud environment. Ensure high availability, build CI/CD infrastructure, set up test environments, integrate third-party delivery services, and automate routine operations with AI. At the final stage, prepare an on-premise server (NAS) on the client side for cold repository storage.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="solution"&gt;Solution&lt;/h4&gt;
&lt;h6 id="1-infrastructure-in-yandex-cloud-terraform"&gt;1. Infrastructure in Yandex Cloud (Terraform)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Built IaC configuration (Terraform) to provision Yandex Cloud infrastructure (virtual networks, VMs).&lt;/li&gt;
&lt;li&gt;Configured separate virtual machines for production and development environments.&lt;/li&gt;
&lt;li&gt;Attached and partitioned additional disks, deployed automated backups for databases and files to Yandex Object Storage (S3).&lt;/li&gt;
&lt;li&gt;Used Yandex Cloud Postbox for reliable service email delivery (domain, SPF, DKIM configured).&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="2-containerization-and-microservices"&gt;2. Containerization and Microservices&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Migrated the marketplace from classic hosting to a Docker-based VPS environment.&lt;/li&gt;
&lt;li&gt;Built a custom &lt;code&gt;Dockerfile&lt;/code&gt; for CS-Cart and a &lt;code&gt;docker-compose&lt;/code&gt; stack with a microservice-oriented web server architecture.&lt;/li&gt;
&lt;li&gt;Established full-featured dev and prod environments.&lt;/li&gt;
&lt;li&gt;Configured deployment pipelines via a local Git server (Forgejo).&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="3-marketplace-platform-cs-cart"&gt;3. Marketplace Platform (CS-Cart)&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded the CS-Cart core and optimized the database by removing obsolete, unused plugins.&lt;/li&gt;
&lt;li&gt;Deployed a clean platform installation with a new commercial theme.&lt;/li&gt;
&lt;li&gt;Configured multi-vendor business logic: role separation and seller dashboards.&lt;/li&gt;
&lt;li&gt;Integrated and configured modules: dynamic product loading, AI capabilities, smart live search, and SEO module.&lt;/li&gt;
&lt;li&gt;Integrated shipping (CDEK) and payment systems. Launched automated data exchange with 1C accounting systems.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="4-automation-and-n8n"&gt;4. Automation and n8n&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Deployed n8n process orchestration.&lt;/li&gt;
&lt;li&gt;Integrated ChatGPT API to automate repetitive operations such as content generation and normalization.&lt;/li&gt;
&lt;li&gt;Configured workers and triggers for store business workflows.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="5-security-and-cloudflare"&gt;5. Security and Cloudflare&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Configured Cloudflare Proxy DNS.&lt;/li&gt;
&lt;li&gt;Implemented Cloudflare Turnstile to reduce spam during sign-up and checkout flows.&lt;/li&gt;
&lt;li&gt;Added bot protection: disabled direct registrations, configured strict caching, and filtered low-quality traffic.&lt;/li&gt;
&lt;li&gt;Installed SSL certificates and configured proper redirects.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="6-on-premise-infrastructure-and-documentation"&gt;6. On-Premise Infrastructure and Documentation&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Set up a dedicated subdomain with a wiki engine for technical and user documentation.&lt;/li&gt;
&lt;li&gt;Implemented local infrastructure in the client’s office based on Synology NAS: Docker, S3 buckets, and backups.&lt;/li&gt;
&lt;li&gt;Deployed a local Git server (Forgejo) with a CI/CD runner for version control and long-term preservation of project assets.&lt;/li&gt;
&lt;li&gt;Collected a complete backup of Terraform states, passwords, codebases, and configurations.&lt;/li&gt;
&lt;/ul&gt;
&lt;h6 id="7-project-archival-and-repositories"&gt;7. Project Archival and Repositories&lt;/h6&gt;
&lt;ul&gt;
&lt;li&gt;Migrated the production site to backup hosting for archival mode and disabled active synchronizations.&lt;/li&gt;
&lt;li&gt;Procured and configured Synology NAS in the office: external access, Docker, S3 buckets.&lt;/li&gt;
&lt;li&gt;Deployed Forgejo with a runner under the &lt;code&gt;git.*&lt;/code&gt; domain.&lt;/li&gt;
&lt;li&gt;Repositories included: website source code, theme and add-ons, documentation, n8n workflows, Telegram bots, DB backups, terraform-yandex, terraform-cloudflare, and password vault.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h4 id="technologies"&gt;Technologies&lt;/h4&gt;
&lt;div class="row"&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/docker-original.svg" alt="Docker"&gt;&lt;div&gt;Docker&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/terraform-original.svg" alt="Terraform"&gt;&lt;div&gt;Terraform&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/yandex.svg" alt="Yandex Cloud"&gt;&lt;div&gt;Yandex Cloud&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/nginx.svg" alt="Nginx"&gt;&lt;div&gt;Nginx&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/forgejo-original.svg" alt="Forgejo"&gt;&lt;div&gt;Forgejo&lt;/div&gt;&lt;/div&gt;
&lt;div class="col-4 col-lg-2 pt-2" style="text-align: center;"&gt;&lt;img src="https://ruadmin.root.sx/icons/linux-original.svg" alt="Linux"&gt;&lt;div&gt;Linux&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr&gt;
&lt;h4 id="results"&gt;Results&lt;/h4&gt;
&lt;p&gt;✅ &lt;strong&gt;Infrastructure:&lt;/strong&gt; shared hosting → VPS in Yandex Cloud via Terraform, fully containerized with Docker&lt;br&gt;
✅ &lt;strong&gt;Platform:&lt;/strong&gt; clean CS-Cart Multi-Vendor installation replaced a heavily modified legacy core&lt;br&gt;
✅ &lt;strong&gt;Theme and modules:&lt;/strong&gt; commercial theme, live search, UX/UI improvements, SMS authentication, AJAX catalog&lt;br&gt;
✅ &lt;strong&gt;Integrations:&lt;/strong&gt; CDEK, Boxberry, Russian Post, Faster Payments System (SBP), and dual-environment 1C exchange&lt;br&gt;
✅ &lt;strong&gt;Documentation:&lt;/strong&gt; wiki on &lt;code&gt;docs.*&lt;/code&gt; subdomain with a complete project structure&lt;br&gt;
✅ &lt;strong&gt;Automation:&lt;/strong&gt; n8n + ChatGPT API for routine operations&lt;br&gt;
✅ &lt;strong&gt;Backups:&lt;/strong&gt; Yandex Object Storage + mirrored copy on office Synology NAS&lt;br&gt;
✅ &lt;strong&gt;Git:&lt;/strong&gt; self-hosted Forgejo on NAS with runner and full project repositories&lt;br&gt;
✅ &lt;strong&gt;Archival handover:&lt;/strong&gt; project fully transferred to the client’s on-premise Synology NAS, including a private Forgejo Git server.&lt;/p&gt;</description></item></channel></rss>