Tangible Bytes

A Web Developer’s Blog

Kubernetes Multi Container Pod

So far on my Kubernetes journey I’ve only ever had one container per pod.

But I needed to run php-fpm fronted by nginx - with static assets served direct by nginx.

A lot of online examples skip this complexity by serving both php and static assets via Apache.

While it seemed complex at first - like a lot of Kubernetes it’s fairly straightforward once you have made the leap.

Read more ...

Golang : Glibc Not Found

I’ve written some Go code and in development it worked fine but now I need it to run on an old server and I get this error

./my-code: /lib64/libc.so.6: version `GLIBC_2.32’ not found (required by ./my-code)

Read more ...

NextJS Multisite on Kubernetes

I am working on a NextJS project that has 9 websites with different content and themes but the exact same structure.

We want one codebase and one server to reduce costs (and the carbon footprint of our cloud) and also to streamline the process of releasing new features.

So we’re using middleware to detect which host the incoming request is for and add that as a parameter - which worked fine in development but I had some problems moving to our production system which is in Kubernetes.

Read more ...

Unstructured JSON to Golang

I really like the way Go imports json into its own data structures.

You just define a struct, annotate it to map the JSON field names to the struct field names (taking care to follow the Go convention of using Capitalised initials where the field is public).

There are also some great tools to automatically generate the struct from JSON

eg Convert JSON to Go struct

But where I got stuck was with JSON that is flexible and doesn’t match something I can directly make in Go.

Read more ...

Kubectrl Output Using Gotemplate

kubecrtl is the kubernetes swiss army knife - as well as being able to manipulate kubernetes it gives access to loads of data

But to make use of that data we need to format it - and one of the more powerful ways of doing this is using gotemplates

the help page just says

--template='':
    Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].

which isn’t on it’s own terribly helpful

Read more ...