examples/oci/README.md
This guide walks you through deploying Jaeger (using the v2 Helm chart), Prometheus, and the HotROD demo app on Kubernetes.
Ensure the following tools are installed and configured:
The following components are deployed as part of the Jaeger demo setup:
To deploy the entire infrastructure with a single command, run:
bash ./deploy-all.sh
This script will automatically install and configure all components on your Kubernetes , To deal with individual components refer to deploy-all.sh script .
After deploying, you can access each component locally using the following port-forward commands in separate terminals:
# Jaeger UI
kubectl port-forward svc/jaeger-query 16686:16686
# Prometheus UI
kubectl port-forward svc/prometheus 9090:9090
# Grafana Dashboard
kubectl port-forward svc/prometheus-grafana 9091:80
# HotROD UI
kubectl port-forward svc/jaeger-hotrod 8080:80
Then, open the following URLs in your browser:
To expose your services externally using a custom domain (e.g., http://demo.jaegertracing.io/), you need to set up an Ingress Controller and define an Ingress resource.
Apply the official NGINX Ingress Controller manifest for cloud environments:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v<VERSION>/deploy/static/provider/cloud/deploy.yaml
š Replace
<VERSION>with the latest version from the Ingress NGINX GitHub Releases.
After deployment, check that the ingress controller service is up and has an external IP:
kubectl get svc -n ingress-nginx
You should see output like:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.96.229.38 129.146.214.219 80:30756/TCP,443:30118/TCP 1h
š§ Note: The
EXTERNAL-IPis the public IP address your domain (e.g.,demo.jaegertracing.io) should point to via DNS.
Once your DNS is mapped and the ingress controller is ready, deploy your Ingress definition:
kubectl apply -f ingress.yaml
This routes incoming HTTP traffic to the respective Kubernetes services based on the path or host rules defined in ingress.yaml.
š§ Remarks
š The current configuration is set to run in the default namespace. You can use any custom namespace by making minor adjustments in:
Helm --namespace flags
Kubernetes manifests (metadata.namespace)
Prometheus scrape configs and service selectors if targeting Jaeger in a different namespace
š The default credentials for Grafana dashboards are:
adminprom-operatorOnce logged in, you can explore the pre-built dashboards or add your own tracing and metrics visualizations.
To secure services with TLS/SSL, we use Cert-Manager. It provides the following features:
The issuer configuration YAML is located at ./tls-cert/issuer.yaml.
For detailed setup instructions, refer to the official Cert-Manager documentation: Cert-Manager ACME Tutorial with NGINX Ingress