Bobcares

Nginx Ingress Controller for Dashboard service on Minikube: How to install

by | Feb 22, 2022

Nginx Ingress Controller for Dashboard service on Minikube can be easily installed with this in-depth guide by our experts. 

At Bobcares, we offer solutions for every query, big and small, as a part of our Server Management Services.

Let’s take a look at how our Support Team is ready to help customers setup Nginx Ingress Controller for Dashboard service on Minikube.

Setting up Nginx Ingress Controller for Dashboard service on Minikube

Today we are going to take a look at how our Support Engineers set up name-based Ingress rules in addition to enabling Ingress controller on Minikube. This permits the Ingress controller to take over and follow through the rules in forwarding requests to kubernetes-dashboard service.

 

Moreover, our Support Techs will also demonstrate how to map Minikube’s IP to a CNAME in the local /etc/hosts file.

Ingress controllers are pods like other applications. They are a part of the cluster and are able to see other pods. Furthermore, we have to expose them with the help of a Service with type either LoadBalancer or NodePort.

Additionally, the controller has the ability to inspect HTTP requests and direct clients to the correct pod depending on the characteristics like URL path or domain name.

How to install Nginx Ingress Controller on Minikube

  1. First, we start the Minikube with the following command:
    $ minikube start --vm=true  --driver=hyperkit

    We need to specify the driver in the command as seen above. According to our Support Techs, not using the driver flag results in the Minikube opting for Docker rather than vm.

  2. Next, we enable the NGINX Ingress controller in the Kubernetes cluster on Minikube with this command:
    $ minikube addons enable ingress
    Verifying ingress addon...
    The 'ingress' addon is enabled
  3. Then, execute the command below to see the ingress-nginx-controller pod up and running in the kube-system namespace:
    $ kubectl get pods -n kube-system
    NAME                                        READY   STATUS      RESTARTS   AGE
    coredns-66bff467f8-r9fxd                    1/1     Running     0          3m1s
    etcd-minikube                               1/1     Running     0          3m4s
    ingress-nginx-admission-create-tctgw        0/1     Completed   0          2m4s
    ingress-nginx-admission-patch-6bwhd         0/1     Completed   0          2m4s
    ingress-nginx-controller-69ccf5d9d8-r7724   1/1     Running     0          2m4s
    kube-apiserver-minikube                     1/1     Running     0          3m4s
    kube-controller-manager-minikube            1/1     Running     0          3m4s
    kube-proxy-l29xr                            1/1     Running     0          3m1s
    kube-scheduler-minikube                     1/1     Running     0          3m4s
    storage-provisioner                         1/1     Running     0          3m4s

How to create Ingress rules

At this point, the kubernetes-dashboard is not available externally.

$ kubectl get all -n kubernetes-dashboard
NAME                                            READY   STATUS    RESTARTS   AGE
pod/dashboard-metrics-scraper-dc6947fbf-rw5tv   1/1     Running   0          4m40s
pod/kubernetes-dashboard-6dbb54fd95-k85gz       1/1     Running   0          4m40s

NAME                                TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
service/dashboard-metrics-scraper   ClusterIP   10.106.255.59            8000/TCP   4m40s
service/kubernetes-dashboard        ClusterIP   10.107.136.213           80/TCP     4m40s

NAME                                        READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/dashboard-metrics-scraper   1/1     1            1           4m41s
deployment.apps/kubernetes-dashboard        1/1     1            1           4m41s

NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/dashboard-metrics-scraper-dc6947fbf   1         1         1       4m41s
replicaset.apps/kubernetes-dashboard-6dbb54fd95       1         1         1       4m41s

In other words, we do not have access to any about the kubernetes-dashboard unless we execute this command:

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0/aio/deploy/recommended.yaml   
namespace/kubernetes-dashboard configured
serviceaccount/kubernetes-dashboard configured
service/kubernetes-dashboard configured
secret/kubernetes-dashboard-certs configured
secret/kubernetes-dashboard-csrf configured
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
secret/kubernetes-dashboard-key-holder configured
configmap/kubernetes-dashboard-settings configured
role.rbac.authorization.k8s.io/kubernetes-dashboard configured
clusterrole.rbac.authorization.k8s.io/kubernetes-dashboard configured
rolebinding.rbac.authorization.k8s.io/kubernetes-dashboard configured
The ClusterRoleBinding "kubernetes-dashboard" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"ClusterRole", Name:"kubernetes-dashboard"}: cannot change roleRef

The output of the kubectl get all -n kubernetes-dashboard lets us know that the pod and service for the Dashboard are up and running. So, it is time to set up Ingress rules to access it via the hostname.

Before that, we have to take a look at the dashboard-ingress.yaml:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: dashboard-ingress
  namespace: kubernetes-dashboard
spec:
  rules:
  - host: dashboard.info
    http:
      paths:
        - pathType: Prefix
          path: "/"
          backend:
            service:
              name: kubernetes-dashboard
              port:
                number: 80

This tells us that the rules are currently forwarding every request in regards to dashboard.info to the internal kubernetes-dashboard service.

Hence, we create the ingress rules as seen below:

$ kubectl apply -f dashboard-ingress.yaml
ingress.networking.k8s.io/dashboard-ingress created  

$ kubectl get ingress -n kubernetes-dashboard
NAME                CLASS    HOSTS            ADDRESS        PORTS   AGE
dashboard-ingress      dashboard.info   192.168.64.7   80      108s

Our Support Engineers recommend adding the information to /etc/hosts:

192.168.64.7    dashboard.info

After this is set up, any future requests from the Minikube cluster are taken over by the Ingress controller. It then follows through with the rules and ultimately forwards the requests to the kubernetes-dashboard.

Now, head to the browser and enter the domain name, dashboard.info to see a screen similar to the one below:

Nginx Ingress Controller for Dashboard service on Minikube

In case none of the paths or hosts match the HTTP request in the Ingress rules, the traffic heads to the default backend. For instance, the “404 page not found” response if the path is not present in any of the Ingress objects.

[Looking for a solution to another query? We are just a click away.]

Conclusion

In brief, our skilled Support Engineers at Bobcares demonstrated how to set up Nginx Ingress Controller for Dashboard service on Minikube.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.

Privacy Preference Center

Necessary

Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

PHPSESSID - Preserves user session state across page requests.

gdpr[consent_types] - Used to store user consents.

gdpr[allowed_cookies] - Used to store user allowed cookies.

PHPSESSID, gdpr[consent_types], gdpr[allowed_cookies]
PHPSESSID
WHMCSpKDlPzh2chML

Statistics

Statistic cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.

_ga - Preserves user session state across page requests.

_gat - Used by Google Analytics to throttle request rate

_gid - Registers a unique ID that is used to generate statistical data on how you use the website.

smartlookCookie - Used to collect user device and location information of the site visitors to improve the websites User Experience.

_ga, _gat, _gid
_ga, _gat, _gid
smartlookCookie
_clck, _clsk, CLID, ANONCHK, MR, MUID, SM

Marketing

Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.

IDE - Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user.

test_cookie - Used to check if the user's browser supports cookies.

1P_JAR - Google cookie. These cookies are used to collect website statistics and track conversion rates.

NID - Registers a unique ID that identifies a returning user's device. The ID is used for serving ads that are most relevant to the user.

DV - Google ad personalisation

_reb2bgeo - The visitor's geographical location

_reb2bloaded - Whether or not the script loaded for the visitor

_reb2bref - The referring URL for the visit

_reb2bsessionID - The visitor's RB2B session ID

_reb2buid - The visitor's RB2B user ID

IDE, test_cookie, 1P_JAR, NID, DV, NID
IDE, test_cookie
1P_JAR, NID, DV
NID
hblid
_reb2bgeo, _reb2bloaded, _reb2bref, _reb2bsessionID, _reb2buid

Security

These are essential site cookies, used by the google reCAPTCHA. These cookies use an unique identifier to verify if a visitor is human or a bot.

SID, APISID, HSID, NID, PREF
SID, APISID, HSID, NID, PREF