About Adam Young

Once upon a time I was an Army Officer, but that was long ago. Now I work as a Software Engineer. I climb rocks, play saxophone, and spend way too much time in front of a computer.

Copying files into a container at run time

There are three distinct things that have to happen between installing the keystone software and running a Keystone instance. The first if management of the configuration files. Second is the database migrations, and third is the keystone bootstrap of the data base values. When coding container images to run a keystone server, not only do you need to be aware of each of these stpes, you need to make sure you are performing them in such a way that you can run scale the the Keystone server horizontally, handle zero downtime upgrades, and handle token-validating key rotations. Federated identity adds an additional twist as you need to handle the addition of httpd config changes for new identity providers.

Let’s walk through this setup in detail.

Continue reading

Injecting a Host Entry in podman-run

How does an application find its database? For all but the most embedded of solutions, the database exposes a port on a network. In a containerized development process, one container needs to find another container’s network address. But podman only exposes the IP address of a pod, not the hostname. How can we avoid hardcoding IP addresses of remote services into our containers?

Continue reading

Running the MariaDB Client on OpenShift

I set up a MariaDB server and wanted to test it out. There are many docs out there about how to set up the client. This is what worked for me.

First, find out the internal IP address of the Database server pod:

oc get pod -l name=mariadb -o json | jq  -r  '. | .items[0] | .status |  .podIP '

In my case, that returned 10.131.0.81. Which lead to this command:

kubectl run -it --rm --image=mariadb:latest --restart=Never mariadb-client -- mysql  keystone -h 10.131.0.81 --user keystone -pkeystone