Category: Systems Admin

  • How to Add Extra Scrape Configuration for Prometheus

    After some recent updating to my home server running Ubuntu Server 20.04, the InfluxDB server suddenly stopped working. I’ve used InfluxDB + Telegraf for many years, the combination worked very well without much maintenance. But as I have deployed some new-ish stuff – Prometheus, Loki, etc. in my garage Kubernetes lab, I think it’s time […]

  • Kubernetes 1.24: Bye Bye Docker

    Since I just got extra 4 CPU cores and 32GB of memory to my garage Kubernetes lab cluster, there’s enough capacity to let me juggle some upgrades. My cluster was running Kubernetes version 1.22 for almost a year which is already reaching end-of-life in many commercial managed Kubernetes offerings. After some reading I found that […]

  • Ubuntu Server 20.04 on ThinkPad W520

    10 years ago, I would dream for a ThinkPad W520 laptop: imagine 4 cores, 8 threads, 32GB memory and 160GB SSD in 2012! I saw one of these old battleship-class laptops Gumtree the other day so I bought it without much hesitation – It’s still very good as a mini server even in 2022. In […]

  • How to Use YAML as Data Source in Terraform

    I love how DRY and lean YAML can be, since I started to learn Ansible years ago. Recently I wanted to provision MySQL user privileges right after the database instance provisioned in Google Cloud SQL. I used petoju/mysql Terraform provider to get the job done, it’s a community provider but seemed to be quite popular. […]

  • Monitoring as Code with Grafana

    Monitoring as Code with Grafana

    TL;DR: I used Grafana Helm charts and ArgoCD to deploy dashboards as code. I’ve been using Grafana to build dashboards for years, both at work and as a hobby. A dashboard was created by hand for monitoring my garage Kubernetes cluster. Since I’ve adopted gitOps with ArgoCD a few years ago, what about going forward […]

  • How to Connect to Cloud SQL via SSH

    TL;DR: here’s a handy bash script which can connect to a private Cloud SQL instance(MySQL in this case) via a bastion host. Prerequisites: Google Cloud SQL instance with mTLS certs provisioned Google Cloud SDK installed(the gcloud command) a bash shell(better be V5.0+) OpenSSH and MySQL CLI installed Google Cloud SQL is an RDB as a […]

  • A Load Balancer for Cloud SQL Replicas

    TL;DR: As of Aug 2022, there’s no out of box load balancing for Google Cloud SQL read replicas. So I built one for MySQL replicas with HAProxy with the ability to dynamically reload when number of replicas has changed. It will be quite straight forward to run a few HAProxy pods in Kubernetes as a […]

  • How to Use a Local Persistent Volume

    TL;DR: A local persistent volume in a Kubernetes cluster is a persistent volume allocated in a certain node. Any pod mounting the volume will be automatically scheduled in the same node. Since it’s limited to 1 node, clearly it can’t be used as a high-availability solution, but hey, it’s quite Ok to use it for […]