A previous article, Debugging applications within Red Hat OpenShift containers, gives an overview of tools for debugging applications within Red Hat OpenShift containers, and existing restrictions on their use. One of the restrictions discussed in that article was an inability to install debugging tool packages into an ordinary, unprivileged container once it was already instantiated. In such a container, debugging tool packages have to be included when the container image is built, because once the container is instantiated, using package installation commands requires elevated privileges that are not available to the ordinary container user.
However, there are important situations where it is desirable to install a debugging tool into an already-instantiated container. In particular, if the resolution of a problem requires access to the temporary state of a long-running containerized application, the usual method of adding debugging tools to the container by rebuilding the container image and restarting the application will destroy that temporary state.
To provide a way to add debugging tools to unprivileged containers, I developed a utility, called oc-inject
, that can temporarily copy a debugging tool into a container. Instead of relying on package management or other privileged operations, oc-inject
’s implementation is based on the existing and well-supported OpenShift operations oc rsync
and oc exec
, which do not require any elevated privileges.
This article describes the current capabilities of the oc-inject
utility, which is available on GitHub or via a Fedora COPR repository. The oc-inject
utility works on any Linux system that includes Python 3, the ldd
utility, and the Red Hat OpenShift command-line tool oc
.
Continue reading “Installing debugging tools into a Red Hat OpenShift container with oc-inject”