Kubernetesingress
was introduced to overcome short comings of services. Another version of Kubernetes such asOpenshift
created similar ingress such asRoutes
.
Kubernetes Service - Drawbacks
- Missing Enterprise Grade Load Bancing Capabilities.
- Driving Cloud Cost - for Public IP Address
Kubernetes service [svc] of type=[LoadBalancer] does not support enterprise grade Loadbancing capabilities but rather simple round robin fashion.
To Solve this problem Kubernetes have asked Enterprise Load Balancers such as (F5, NGINX, Ambassador, HA Proxy to name a few) to createIngress Controllers and user to create a Ingress resources. Its user's responsibilities
Enterprise Load Balancer Offers Advanced Capabilities
- Ratio Based Routing
- Sticky Session Routing
- Host Based
- Path Based
- Domain Based
- White listing IP Addresses
- Black Listing IP Addresses
1. Install NGINX controller in Kubernetes.
minikube addons enable ingress
to install onMinikube- Verify
Ingress Controller
installed or not
$minikube addons enable ingress* ingress is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS - Using image registry.k8s.io/ingress-nginx/controller:v1.8.1 - Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407 - Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407* Verifying ingress addon...* The 'ingress' addon is enabled
- verify by following command
kubectl get pods -A | grep nginx
PS C:\Users\Jasper\OneDrive\Documents\CodeRepo\kubernetes\d38_ingress_ctrl> kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGEdefault sample-python-deployment-5787bd6b9f-656fn 1/1 Running 1 (16h ago) 20hdefault sample-python-deployment-5787bd6b9f-t9ttj 1/1 Running 1 (16h ago) 20hingress-nginx ingress-nginx-admission-create-vcq7w 0/1 Completed 0 132mingress-nginx ingress-nginx-admission-patch-g6szm 0/1 Completed 1 132mingress-nginx ingress-nginx-controller-7799c6795f-qc9w5 1/1 Running 0 132mkube-system coredns-5d78c9869d-nscfc 1/1 Running 3 (16h ago) 12dkube-system etcd-minikube 1/1 Running 3 (16h ago) 12dkube-system kube-apiserver-minikube 1/1 Running 3 (16h ago) 12dkube-system kube-controller-manager-minikube 1/1 Running 3 (16h ago) 12dkube-system kube-proxy-gzk52 1/1 Running 3 (16h ago) 12dkube-system kube-scheduler-minikube 1/1 Running 3 (16h ago) 12dkube-system storage-provisioner 1/1 Running 12 (69m ago) 12d
2. Create Ingress Resource in Kubernetes.
- Route
foo.bar.com
to IP Addresses -- _(To mock it in local, in real time - we do not need to mock is as IP address is mapped to Domain Name by DNS) _ - Belowingress.yml file is to route
foo.bar.com
to Servicesample-python-service
apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: sample-python-service-ingressspec: rules: - host: "foo.bar.com" http: paths: - pathType: Prefix path: "/bar" backend: service: name: sample-python-service port: number: 80
- Create
Ingress
resourcekubectl apply -f ingress.yml
- Notice: Nothing happens if you don't install kubernetes controller. Controller will watch for this resource to be created and they applies the logic.
$ kubectl apply -f ingress.ymlingress.networking.k8s.io/sample-python-service-ingress created
3. Verify Ingress Resource in Kubernetes.
- Run command
kubectl get ingress
to viewingress
resource
kubectl get ingressNAME CLASS HOSTS ADDRESS PORTS AGEsample-python-service-ingress nginx foo.bar.com 192.168.59.105 80 6m35s
3. Route domain toIngress
- Locate
Hosts File
and updateconfig
to point domain namefoo.bar.com
to createdingress-service
--> which points toservice
- Where is the Hosts FileLocated?
The location of the hosts file will differ by operating system. The typical locations are noted below.
Windows 10 - "C:\Windows\System32\drivers\etc\hosts"Linux - "/etc/hosts"Mac OS X - "/private/etc/hosts"
4. Verify domain is routed to Application (Ingress-> Service-> App)
Credits:-
Thanks toAbhishek Veeramalla
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse