<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Home on Santiago Ramis: Platform Engineer</title><link>https://santi.ramisclar.cat/en/</link><description>Recent content in Home on Santiago Ramis: Platform Engineer</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 09 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://santi.ramisclar.cat/en/index.xml" rel="self" type="application/rss+xml"/><item><title>About</title><link>https://santi.ramisclar.cat/en/about/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://santi.ramisclar.cat/en/about/</guid><description>&lt;h2 id="about-me"&gt;About Me&lt;/h2&gt;
&lt;img src="https://santi.ramisclar.cat/img/profile.jpg" alt="Santiago Ramis" style="float:right; width:200px; height:200px; border-radius:14px; margin:0 0 1rem 1.5rem; object-fit:cover;" /&gt;
&lt;p&gt;I&amp;rsquo;m Santiago Ramis, a Platform Engineer based in Palma, Mallorca (Spain) with 20+ years of experience in IT. I&amp;rsquo;m currently focused on Kubernetes, GitOps, and infrastructure automation in the automotive industry.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Volkswagen Digital:Hub&lt;/strong&gt;: Platform Engineer, OpenShift and GitOps with ArgoCD (Oct 2023–Present)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dare Planet Technology · Adidas&lt;/strong&gt;: Platform Engineer, CI/CD pipelines, cloud infrastructure (Nov 2021–Oct 2023)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Brújula, a CMC company&lt;/strong&gt;: Linux Systems Administrator (Jun 2018–Nov 2021)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RIU Hotels &amp;amp; Resorts&lt;/strong&gt;: IT Operator (Jul 2007–Mar 2009)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I design and operate multi-environment platforms on OpenShift, managing the full lifecycle from Helm chart development to continuous delivery with ArgoCD. My strength is turning complex infrastructure problems into simple, automated solutions: whether that&amp;rsquo;s migrating legacy deployments to GitOps, implementing observability stacks, or building CI/CD pipelines.&lt;/p&gt;</description></item><item><title>Architecture</title><link>https://santi.ramisclar.cat/en/architecture/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://santi.ramisclar.cat/en/architecture/</guid><description>&lt;h2 id="architecture"&gt;Architecture&lt;/h2&gt;
&lt;p&gt;A high-level map of how the TekGarden platform connects on-prem infrastructure, the cloud edge, and remote access.&lt;/p&gt;
&lt;h3 id="network-overview"&gt;Network Overview&lt;/h3&gt;
&lt;div class="mermaid"&gt;
graph TB
subgraph Internet["Internet"]
USER["Users"]
REMOTE["Laptops / Mobile&lt;br/&gt;WireGuard road warrior"]
end
subgraph Cloud["Cloud Edge · Hetzner VPS"]
PANGOLIN["Pangolin&lt;br/&gt;Zero-trust tunnel gateway"]
FORGEJO["Forgejo&lt;br/&gt;Self-hosted Git + CI&lt;br/&gt;private network only"]
end
subgraph OnPrem["On-Prem · Homelab"]
PFSENSE["pfSense Router&lt;br/&gt;Firewall rules + WireGuard road warrior&lt;br/&gt;Only open: DNS, Traefik QNAP, Traefik k3s"]
PROXMOX["Proxmox VE Cluster&lt;br/&gt;2 nodes + QDevice"]
K8S["Kubernetes (k3s)&lt;br/&gt;2 HA clusters&lt;br/&gt;prod + staging"]
QNAP["QNAP NAS&lt;br/&gt;Docker + Backrest backups&lt;br/&gt;+ Traefik (Docker ingress)"]
PBS["Proxmox PBS&lt;br/&gt;Local backups → B2 sync"]
SECRETS["Secrets&lt;br/&gt;1Password + SOPS/age&lt;br/&gt;+ Kyverno"]
end
subgraph External["External Services"]
CF["Cloudflare&lt;br/&gt;DNS + CDN"]
B2["Backblaze B2&lt;br/&gt;Off-site backups"]
ONEPW["1Password&lt;br/&gt;Secrets vault"]
TG["Telegram&lt;br/&gt;Alerts"]
end
subgraph Offline["Offline"]
EXTDISK["External disk&lt;br/&gt;Weekly offline copy"]
end
USER --&gt;|HTTPS| CF
CF --&gt;|Tunnel| PANGOLIN
PANGOLIN --&gt;|Zero-trust| PFSENSE
PFSENSE --&gt;|DNS + Traefik only| QNAP
PFSENSE --&gt;|DNS + Traefik only| K8S
PFSENSE --&gt; PROXMOX
PROXMOX --&gt; K8S
PROXMOX --&gt; QNAP
REMOTE -.-&gt;|WireGuard VPN| PFSENSE
PFSENSE -.-&gt;|private network| FORGEJO
PANGOLIN -.-&gt;|optional external access| FORGEJO
FORGEJO -.-&gt;|GitOps pull| K8S
FORGEJO -.-&gt;|CI deploy| QNAP
PBS -.-&gt;|local backup| PROXMOX
PBS -.-&gt;|sync| B2
QNAP -.-&gt;|Backrest local| QNAP
QNAP -.-&gt;|Backrest → B2| B2
QNAP -.-&gt;|weekly| EXTDISK
K8S --&gt; SECRETS
SECRETS -.-&gt;|op inject| ONEPW
K8S -.-&gt;|alerts| TG
&lt;/div&gt;
&lt;h3 id="flow-description"&gt;Flow Description&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Public access&lt;/strong&gt; flows through Cloudflare → Pangolin (zero-trust tunnel gateway on the Hetzner VPS) → pfSense router. pfSense only allows traffic to DNS, the QNAP Traefik (Docker ingress), and the k3s Traefik (Kubernetes ingress): all protected by CrowdSec agents.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Remote access&lt;/strong&gt;: a WireGuard road warrior VPN on pfSense lets laptops and mobile connect from anywhere. Once connected, you have access to the entire TekGarden network and the Hetzner private network (including Forgejo), as if you were at home.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forgejo&lt;/strong&gt; runs on a Hetzner private network: only reachable internally from TekGarden. If external access is needed, Pangolin can expose it on demand.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitOps&lt;/strong&gt; runs from Forgejo: FluxCD pulls manifests into the Kubernetes clusters, and CI runners deploy Docker stacks to the QNAP and other Docker hosts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Proxmox VE&lt;/strong&gt; (2 nodes + QDevice for quorum) provides the virtualization layer running both Kubernetes clusters and Docker hosts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kubernetes&lt;/strong&gt; runs two HA k3s clusters (production + staging, 12 nodes total).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docker&lt;/strong&gt; runs 30+ services across 3 standalone hosts, including the QNAP NAS.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backups&lt;/strong&gt; follow a 3-tier strategy:
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proxmox PBS&lt;/strong&gt;: local backups of Proxmox guests, then synced to Backblaze B2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backrest&lt;/strong&gt; (Docker on the QNAP): local backups of Docker data, then sent to B2.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Offline copy&lt;/strong&gt;: weekly backup to an external disk.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt; (Grafana + Prometheus + Loki + Alertmanager) monitors everything and sends alerts to Telegram.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Secrets&lt;/strong&gt; are centralized in 1Password (injected via &lt;code&gt;op inject&lt;/code&gt;), with SOPS/age for GitOps-encrypted manifests and Kyverno for runtime policies.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="tech-stack"&gt;Tech Stack&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Edge / Tunnel&lt;/td&gt;
&lt;td&gt;Pangolin, Cloudflare&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;VPN&lt;/td&gt;
&lt;td&gt;WireGuard (road warrior on pfSense)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git / CI&lt;/td&gt;
&lt;td&gt;Forgejo (Hetzner private network)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtualization&lt;/td&gt;
&lt;td&gt;Proxmox VE (2 nodes + QDevice)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orchestration&lt;/td&gt;
&lt;td&gt;k3s (2 HA clusters), Docker Compose (3 hosts)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitOps&lt;/td&gt;
&lt;td&gt;FluxCD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ingress&lt;/td&gt;
&lt;td&gt;Traefik (k3s + Docker), cert-manager, Let&amp;rsquo;s Encrypt, external-dns&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Load Balancer&lt;/td&gt;
&lt;td&gt;MetalLB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Observability&lt;/td&gt;
&lt;td&gt;Grafana, Prometheus, Loki, Alertmanager&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secrets&lt;/td&gt;
&lt;td&gt;1Password, SOPS/age, Kyverno&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IaC&lt;/td&gt;
&lt;td&gt;OpenTofu, Ansible (pull mode)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network&lt;/td&gt;
&lt;td&gt;pfSense, VLANs, Pi-hole, Cloudflare DNS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security&lt;/td&gt;
&lt;td&gt;CrowdSec (on all Traefik instances), Kyverno policies, NetworkPolicies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Backups&lt;/td&gt;
&lt;td&gt;Proxmox PBS → B2, Backrest (QNAP) → B2, weekly offline disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Storage&lt;/td&gt;
&lt;td&gt;NVMe local, iSCSI QNAP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description></item><item><title>Contact</title><link>https://santi.ramisclar.cat/en/contact/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://santi.ramisclar.cat/en/contact/</guid><description>&lt;h2 id="get-in-touch"&gt;Get in Touch&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Location:&lt;/strong&gt; Palma, Mallorca (Spain)
&lt;strong&gt;Availability:&lt;/strong&gt; Remote / Hybrid&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;a href="https://linkedin.com/in/ramissan"&gt;linkedin.com/in/ramissan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/aygosan"&gt;github.com/aygosan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email:&lt;/strong&gt; &lt;a href="mailto:santi@ramisclar.cat"&gt;santi@ramisclar.cat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Feel free to reach out about platform engineering, DevOps, SRE, or homelab infrastructure.&lt;/p&gt;</description></item><item><title>Experience</title><link>https://santi.ramisclar.cat/en/experience/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://santi.ramisclar.cat/en/experience/</guid><description>&lt;h2 id="experience"&gt;Experience&lt;/h2&gt;
&lt;h3 id="platform-engineer-volkswagen-digitalhub-oct-2023--present"&gt;Platform Engineer: Volkswagen Digital:Hub (Oct 2023 – Present)&lt;/h3&gt;
&lt;p&gt;Designing and operating multi-environment platforms on OpenShift. GitOps with ArgoCD, Helm chart lifecycle management, CI/CD pipelines, and observability stacks. Migrating legacy deployments to GitOps and automating infrastructure at scale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tech:&lt;/strong&gt; OpenShift, Kubernetes, ArgoCD, Helm, GitHub Actions, Ansible, Terraform, Grafana, Prometheus&lt;/p&gt;
&lt;h3 id="devops-engineer-adidas--dare-planet-nov-2021--oct-2023"&gt;DevOps Engineer: Adidas / Dare Planet (Nov 2021 – Oct 2023)&lt;/h3&gt;
&lt;p&gt;Platform engineering and CI/CD pipeline development. Cloud infrastructure automation, deployment pipelines, and container orchestration at scale.&lt;/p&gt;</description></item><item><title>Projects</title><link>https://santi.ramisclar.cat/en/projects/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://santi.ramisclar.cat/en/projects/</guid><description>&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;h3 id="tekgarden-self-managed-platform"&gt;TekGarden: Self-Managed Platform&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Role:&lt;/strong&gt; Architect and sole operator&lt;/p&gt;
&lt;p&gt;A homelab evolved into a production-grade platform running 24/7 on Proxmox with Kubernetes, GitOps, and full observability.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What it does:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 HA Kubernetes clusters (production + staging): 12 nodes total&lt;/li&gt;
&lt;li&gt;3 Docker hosts running 30+ services&lt;/li&gt;
&lt;li&gt;GitOps deployments via FluxCD (6 repos, reconciles every 1m)&lt;/li&gt;
&lt;li&gt;Full observability stack (Grafana, Prometheus, Loki, Alertmanager → Telegram)&lt;/li&gt;
&lt;li&gt;Infrastructure as Code with Ansible (pull mode) and OpenTofu&lt;/li&gt;
&lt;li&gt;Secrets via 1Password + SOPS/age + Kyverno policies&lt;/li&gt;
&lt;li&gt;Backups to Proxmox PBS + Backblaze B2&lt;/li&gt;
&lt;li&gt;Self-hosted Forgejo + CI runners on a Hetzner VPS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Tech stack:&lt;/strong&gt; k3s, FluxCD, Proxmox VE, Traefik, cert-manager, MetalLB, Grafana, Ansible, OpenTofu, Docker, 1Password, Kyverno, CrowdSec, OPNsense, Cloudflare&lt;/p&gt;</description></item></channel></rss>