There seems to come a time in a software developer's life where you look at creating a blog. It's that time for me. I want a place where I can write up some of my experiments for later reference, and if that can help others along the way, all the better!
Considerations
- I don't want to pay anything. I really don't want to break the bank with this project. If I can pay nothing, I will. This puts Azure squarely in the front seat because I have $70 a month to spend there.
- Easy to use. I don't want to spend ages messing with this project, or debugging issues.
- Broad application / reusable. It would be great if this thing can be used for more than just this blog. If I can host other sites or blogs on the same infrastructure, that would be kinda handy.
- Preferably something I want to learn. Cause, you know. What's the point otherwise?
At first, I had thought I'd be using Wordpress and I wasn't really looking forward to that. On the upside, there are wordpress containers around and I was pretty keen to run it in a container.
After a quick email with Thiago, I started looking at Ghost. Once I knew it was there, I noticed that many of the blogs I read, including Troy Hunt, are powered by Ghost. With little more than that meagre planning, it was time to get started.
Attempt 1: Azure Web apps
Firstly, I needed a place to host it. I'm an Azure guy, so I started there. It seemed to be straight forward enough. A ghost container, wrapped in a Web App, running on Linux, volume mapped to a Azure File storage. I ran it locally and it worked perfectly. Once installed on Azure, I found the database just wouldn't load up correctly, giving Migration errors, saying that the database was locked.
First attempt foiled!
Attempt 2: Google GKE
My next attempt was to spin it up on GKE on to Google cloud. Kubernetes seemed to be a bit of overkill for what I was trying, but Google made that super easy, and it pretty much "just worked".
That left me with the question, what about AKS on Azure?
Attempt 3: Azure AKS
I've never created an AKS cluster. I mean, I've wanted to. Who hasn't? The thing is, I've never actually clicked the Go button. So, I guess it's time. It was easy enough to configure as well and then I clicked Create and waited. I waited and then I waited some more. I went looking for any events showing that something was happening, but couldn't see anything. So I tried again and this time, it worked.
It spun up easy enough and with minor changes to the PersistentVolumeClaim, it just worked as well, albeit it a bit slower than GKE, which was odd because I had double the resources on Azure.
So, now what?
Alright, so now I seem to be on the kubernetes train. Even writing it now, it seems kinda crazy to spin up a kubernetes cluster to run a blog that is probably only going to have me as traffic. But it is expandable. There are a couple of sites I want to host. They're currently in containers on Azure Web apps, but should move across easy enough.
I'm still not sure of cost. I will run both solutions for a couple of days and have a look at what charges come through. I hadn't planned to move from Azure at this time. That's where I have the most experience.
Next steps
- Run some performance and pricing measures to compare GKE vs AKS and decide where my blog will stay.
- Write up the technical steps for creating the blog.
- Enable the site to run HTTPS with Let's Encrypt certificates.