Category: Systems Admin

  • Django DB Migration Job with ArgoCD

    A Job in Kubernetes is a one-off and immutable task to be carried out during deployment. But what if a job needs to run for each deployment? A new job with the same name can’t be deployed on top of the existing one, given it in completed or failed state. Since Kubernetes 1.23, A TTL(Time…

  • How to Query in MongoDB and Group by Date

    TL;DR: Here’s a quick example to query MongoDB documents created this year(2023) and group them by date, ie. how many my_doc were created today, yesterday, the day before yesterday, etc. The following statement works in a MongoDB client such as mongosh. Then here’s an equivalent example to do it with MongoEngine in Python: Since I…

  • Cloud SQL MySQL: Best Password is No Password

    Security for web applications has come a long way. In the case of database passwords, there is a lot of approaches to keep them safe: But isn’t it the best if there’s no need for a password at all? With IAM authentication for Cloud SQL, the password can be avoided after all. Here’s how to…

  • How to Self-Host a Mastodon Instance in Kubernetes

    TL;DR: Instead of the official installation including setting up Ruby, nginx, systemd service, etc., I found it more comfortable to install and run a Mastodon instance using some YAML files. Just in case, what is Mastodon anyway? I used kustomize to manage and generate Kubernetes manifests for a fully functional Mastodon instance. Please see my…

  • A Simple RabbitMQ Consumer with Python

    Here’s a very simple RabbitMQ consumer in Python, deployed in a Kubernetes cluster. I used this to act as a consumer for testing purposes. First the Python code: The above code can be saved as a ConfigMap in the cluster: Then the Kubernetes manifest: At last this can be simply deployed with 🙂

  • 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…