Mastering Jaeger Deployment on Kubernetes: A Comprehensive Guide
Introduction :-
In the world of microservices and distributed systems, tracing and monitoring have become crucial. Jaeger, an open-source distributed tracing system, offers a powerful solution when combined with Kubernetes. This article will guide you through the process of deploying Jaeger on Kubernetes using operators, ensuring optimal performance and ease of management.
Jaeger operators are essential tools that simplify the deployment and management of Jaeger on Kubernetes clusters. These operators watch for new Jaeger custom resources (CRs) across specific namespaces or the entire cluster, automating many operational tasks.
Prerequisites for Jaeger Deployment :-
Before diving into the installation process, it’s crucial to set up cert-manager. Since Jaeger Operator version 1.31, webhooks are used to validate Jaeger CRs, necessitating an installed version of cert-manager.
2. Installing Cert-Manager
To install cert-manager, execute the following command:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.9.0/cert-manager.yaml
Verify the installation by checking the status of cert-manager pods:
kubectl get pods -n cert-manager
3. Deploying Jaeger Operator with Helm
Helm, the package manager for Kubernetes, offers a straightforward method to install the Jaeger operator.
3.1 Adding Jaeger Helm Repository
helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
3.2 Installing Jaeger Operator
kubectl create ns observability
helm install my-release jaegertracing/jaeger-operator -n observability
3.3 Verifying the Installation
helm list -A
4. Creating a Jaeger Instance
After installing the operator, you can create Jaeger instances for the operator to manage.
4.1 Simplest Jaeger Instance
Create a YAML file (simplest.yml) with the following content:
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
name: simplest
Apply the configuration:
kubectl apply -f simplest.yaml
4.2 Verifying the Jaeger Instance
kubectl get jaegers
kubectl get pods -l app.kubernetes.io/instance=simplest
kubectl get services -n default | grep jaeger
5. Accessing the Jaeger UI
To access the Jaeger UI, use port-forwarding:
kubectl port-forward svc/simplest-query 16686:16686
6. Deploying a Demo Application
To test Jaeger’s functionality, deploy a NodeJS demo application on your Kubernetes cluster.
6.1 Creating the Demo Application YAML
Create a file named jaeger-nodejs.yaml with the necessary configurations for services and deployments.
6.2 Deploying the Application
kubectl apply -f jaeger-nodejs.yaml
6.3 Accessing the Demo Application
kubectl port-forward svc/service-a 8080:8080
Conclusion :-
By following this guide, you’ve successfully deployed Jaeger on Kubernetes using operators. This setup allows for efficient distributed tracing in your microservices architecture, enhancing observability and performance monitoring. As you continue to work with Jaeger and Kubernetes, you’ll discover more advanced configurations and use cases to optimize your distributed systems.
Subscribe to my newsletter
Read articles from Mahira Technology Private Limited directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Mahira Technology Private Limited
Mahira Technology Private Limited
A leading tech consulting firm specializing in innovative solutions. Experts in cloud, DevOps, automation, data analytics & more. Trusted technology partner.