Every developer agrees that container orchestration has made it easy to track and manage applications and data more effectively, in real-time, and across multiple platforms.
This is where Kubernetes is the real champ. It helps developers meet user demands and deployment needs through instant scalability, fault tolerance of applications, and real-time customization, as well as respond to changing security challenges.
With Kubernetes, however, it can be difficult to know exactly what is happening internally in your applications, especially when things go wrong. That’s where Java agents can come in handy.
Kubernetes + Java Agents = Match Made in Heaven
Java agents can be a nifty tool that helps developers know exactly what’s happening internally within their applications. More specifically, they allow for a more holistic understanding of the applications’ internal data, no matter where they’re running, whether in production, on public cloud, staging server or on-premise.
But how to do you deploy Java agents on your Rookout Kubernetes cluster seamlessly, without affecting existing services? Here’s how.
Java Agents Installation Using Environment Variables
To install and configure Java agents within any JVM-powered applications running on Kubernetes, you can use container environment variables. In particular, you need to use the JAVA_TOOL_OPTIONS environment variable.
Of course, this has to be executed through the Kubernetes YAML file. Loading the Java agent jar file is the first step you need to take in order for the environment variable method to work.
Some developers, however, may not want to edit the existing Dockerfile. If this sounds like you, go ahead to the next step. You may also visitRookout for more information about it.
How to Extend a Base Docker Image
If you don’t want to edit the existing Dockerfile but still need to add some files to a Docker image, then you’ve to create an extra level of indirection. First, you generate a new Dockerfile whose base image is the existing application image.
Next, you add any additional files you want before deploying the new image to production. Luckily, you don’t need to create another Dockerfile and add another indirection level for every one of your services. You can simply take advantage of the base Docker image you use for all your services.
Adding Java Agent to Already Built Dockerfiles
For this, you need to take advantage of Init Containers within Rookout Kubernetes Pod. The Java agent jar file will be downloaded by Init Containers and stored on the shared volume.
From here, the agent file can be used and read by the Rookout application container. Note, however, that the application container should not be started until the Init Container is already running. This way, the agent file is availed to the running app and streamlines the complicated process.
I hope you had a great learning experience of deploying java agents on Kubernetes. All about its customization with docker files and with other variables has been explained. Happy Learning!