How to use nginx /dbg

Follow
Table of Contents

What is the /dbg command

/dbg is a program included in the ingress-nginx container image that can be used to show information about the nginx environment and the resulting nginx configuration, which can be helpful when debugging ingress issues in Kubernetes.

Requirements

  • A Kubernetes cluster that has ingress enabled with ingress-nginx as the ingress controller
  • A cluster with Linux nodes, nginx will not run on Windows
  • kubectl configured

Using /dbg

This command needs to be run from inside one of the ingress-nginx pods, so first determine the pod to run it in.

> kubectl get pods -n ingress-nginx
NAME                                    READY   STATUS    RESTARTS   AGE
default-http-backend-67cf578fc4-54jlz   1/1     Running   0          5d
nginx-ingress-controller-56nss          1/1     Running   0          5d
nginx-ingress-controller-hscfg          1/1     Running   0          4d21h
nginx-ingress-controller-n4p22          1/1     Running   0          5d

> export NGINX_POD=nginx-ingress-controller-n4p22

If you are diagnosing specific connection issues, you can determine which controller is receiving the traffic by looking through the logs of each.

Viewing ingress-controller status

/dbg general will show the count of running controllers.

> kubectl exec -n ingress-nginx $NGINX_POD /dbg  general
{
  "controllerPodsCount": 3
}

Viewing backend configuration

/dbg backends list will list the discovered backends:

```

kubectl exec -n ingress-nginx $NGINX_POD /dbg backends list cattle-system-rancher-80 upstream-default-backend ```

/dbg backends get will show the configuration for the named backend:

 > kubectl exec -n ingress-nginx $NGINX_POD /dbg backends get cattle-system-rancher-80

Viewing ingress certificate data

/dbg certs will dump the x509 cert and key for a certificate that nginx has discovered from k8s secrets for the given hostname:

> kubectl exec -n ingress-nginx $NGINX_POD /dbg certs get <fqdn>

Viewing dynamically generated nginx configuration

/dbg conf will dump the dynamically generated nginx configuration. To view the configuration for a specific ingress hostname, you could run /dbg conf and then grep for the server_name:

> kubectl exec -n ingress-nginx $NGINX_POD /dbg conf | grep "server_name example.com" -B2 -A20

Was this article helpful?
0 out of 0 found this helpful

Comments

0 comments

Please sign in to leave a comment.