Troubleshooting

Here are some techniques you can use to troubleshooting the ingress controller.

View the logs

  1. Get the names of the kubernetes-ingress pods:

    $ kubectl get pods
    
    NAME                                 READY   STATUS    RESTARTS   AGE
    kubernetes-ingress-7d84545b45-fpzm9  1/1     Running   0          3m49s
    kubernetes-ingress-7d84545b45-wq426  1/1     Running   0          3m49s
  2. Use kubectl logs to view the logs of a pod:

    $ kubectl logs kubernetes-ingress-7d84545b45-fpzm9
    
    2020/07/17 17:07:47
      _   _    _    ____                        _____ _____
      | | | |  / \  |  _ \ _ __ _____  ___   _  | ____| ____|
      | |_| | / _ \ | |_) | '__/ _ \ \/ / | | | |  _| |  _|
      |  _  |/ ___ \|  __/| | | (_) >  <| |_| | | |___| |___
      |_| |_/_/   \_\_|   |_|  \___/_/\_\\__, | |_____|_____|
      _  __     _                       |___/             ___ ____
      | |/ /   _| |__   ___ _ __ _ __   ___| |_ ___  ___  |_ _/ ___|
      | ' / | | | '_ \ / _ \ '__| '_ \ / _ \ __/ _ \/ __|  | | |
      | . \ |_| | |_) |  __/ |  | | | |  __/ ||  __/\__ \  | | |___
      |_|\_\__,_|_.__/ \___|_|  |_| |_|\___|\__\___||___/ |___\____|
    
    
      2020/07/17 17:07:47 HAProxy Ingress Controller v1.4.5-ee1 c2b5156
    
      2020/07/17 17:07:47 Build from: ssh://git@gitlab.int.haproxy.com/haproxy-controller/kubernetes-ingress-ee
      2020/07/17 17:07:47 Build date: 2020-07-12T00:00:53
    
      2020/07/17 17:07:47 ConfigMap: default/kubernetes-ingress
      2020/07/17 17:07:47 Ingress class:
      2020/07/17 17:07:47 Publish service:
      2020/07/17 17:07:47 Default backend service: default/kubernetes-ingress-default-backend
      2020/07/17 17:07:47 Default ssl certificate: default/kubernetes-ingress-default-cert
      2020/07/17 17:07:47 Controller sync period: 5s
      2020/07/17 17:07:47 controller.go:262 Running with HA-Proxy version 2.1.0-1.0.0-223.185 2020/06/18 - https://haproxy.org/
      2020/07/17 17:07:47 INFO    controller.go:267 Starting HAProxy with /etc/haproxy/haproxy.cfg
      2020/07/17 17:07:47 INFO    controller.go:272 Running on kubernetes-ingress-7d84545b45-fpzm9
      [NOTICE] 198/170747 (21) : New worker #1 (22) forked
      2020/07/17 17:07:48 INFO    controller.go:95 Running on Kubernetes version: v1.18.3 linux/amd64
      2020/07/17 17:07:48 INFO    monitor.go:35 executing syncPeriod every 5s
      2020/07/17 17:07:54 INFO    controller.go:220 HAProxy reloaded
  3. For debug logs, install the ingress controller with the log argument set to debug.

    $ helm install haproxy haproxytech/kubernetes-ingress \
      --set controller.logging.level=debug
  4. By default, the ingress controller's logs do not include traffic logs, but you can enable them by setting the syslog-server option to stdout.

View pod details

  1. View the details of the ingress controller pod by using kubectl describe pod:

    $ kubectl describe pod kubernetes-ingress-7d84545b45-fpzm9
    
    Name:         kubernetes-ingress-7d84545b45-fpzm9
    Namespace:    default
    Priority:     0
    Node:         minikube/192.168.99.116
    Start Time:   Fri, 17 Jul 2020 13:06:37 -0400
    Labels:       app.kubernetes.io/instance=kubernetes-ingress
                  app.kubernetes.io/name=kubernetes-ingress
                  pod-template-hash=7d84545b45
  2. You can also view the YAML that was used to deploy the ingress controller by using kubectl get deployment:

    $ kubectl get deployment kubernetes-ingress -o yaml
    
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
    creationTimestamp: "2020-07-17T17:06:37Z"
    generation: 1
    labels:
      app.kubernetes.io/instance: kubernetes-ingress
      app.kubernetes.io/managed-by: Helm
      app.kubernetes.io/name: kubernetes-ingress
      app.kubernetes.io/version: 1.4.5
      helm.sh/chart: kubernetes-ingress-1.4.2

Log into the pod

  1. Use kubectl exec to log into the ingress controller pod to inspect the HAProxy files:

    $ kubectl exec -it kubernetes-ingress-7d84545b45-fpzm9 /bin/bash
    # cd /etc/haproxy
    # ls
    certs  haproxy.cfg  maps  modsec