{"id":3346,"date":"2022-10-13T09:21:52","date_gmt":"2022-10-13T09:21:52","guid":{"rendered":"https:\/\/www.checkmateq.com\/blog\/?p=3346"},"modified":"2022-12-02T08:24:28","modified_gmt":"2022-12-02T08:24:28","slug":"ingress-controller","status":"publish","type":"post","link":"https:\/\/www.checkmateq.com\/blog\/ingress-controller","title":{"rendered":"How to set up Nginx Ingress Controller on Kubernetes"},"content":{"rendered":"<p><strong>Kubernetes Ingress<\/strong> is an API object that <strong>exposes HTTP and HTTPS \u00a0routes<\/strong> from outside the cluster to services within the cluster.\u00a0 An <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/services-networking\/ingress\/\">Ingress<\/a> can be set up to load balance traffic, provide name-based virtual hosting, and provide Services with externally-reachable URLs. An ingress is not used for exposing arbitrary ports or protocols.<\/p>\n<p>A load balancer is typically used by an ingress controller to fulfill ingress requests, but it may also set up your edge router or additional frontends to assist in handling traffic.\u00a0The ingress controller doesn&#8217;t come by default in the Kubernetes cluster. We will use helm to deploy the Nginx Ingress controller.<\/p>\n<h2>Follow the below steps to deploy the ingress controller<\/h2>\n<ul>\n<li>First, we will install the helm.<\/li>\n<\/ul>\n<pre><code class=\"language-console\" data-lang=\"console\">curl -fsSL -o get_helm.sh https:\/\/raw.githubusercontent.com\/helm\/helm\/main\/scripts\/get-helm-3\r\nchmod 700 get_helm.sh\r\n.\/get_helm.sh<\/code><\/pre>\n<ul>\n<li>Add Nginx ingress repository to helm<\/li>\n<\/ul>\n<pre>helm repo add ingress-nginx https:\/\/kubernetes.github.io\/ingress-nginx\r\n<\/pre>\n<ul>\n<li>Update the dataset<\/li>\n<\/ul>\n<pre>helm repo update\r\n<\/pre>\n<ul>\n<li>Install the ingress controller<\/li>\n<\/ul>\n<pre>helm install ingress-nginx ingress-nginx\/ingress-nginx\r\n<\/pre>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-3349\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-aws-engineer-300x41.png\" alt=\"Nginx\" width=\"746\" height=\"102\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-aws-engineer-300x41.png 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-aws-engineer-1024x141.png 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-aws-engineer-768x106.png 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-aws-engineer-1200x166.png 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-aws-engineer.png 1464w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<h3>Deploying an application with an Ingress controller in AWS EKS<\/h3>\n<ul>\n<li>First, we will deploy an Nginx web application with a deployment manifest file.<\/li>\n<\/ul>\n<pre><code>apiVersion: apps\/v1\r\nkind: Deployment\r\nmetadata:\r\n  name: nginx-webapp\r\n  labels:\r\n    app: frontend\r\nspec:\r\n  replicas: 1\r\n  selector:\r\n    matchLabels:\r\n       app: frontend\r\n  template:\r\n    metadata:\r\n       labels:\r\n         app: frontend\r\n    spec:\r\n     containers:\r\n      - name: nginx-webapp\r\n        image: harshithk\/webapp:latest\r\n        ports:\r\n          - containerPort: 80\r\n<\/code><\/pre>\n<ul>\n<li>Next, we will create a ClusterIP service manifest file and deploy it.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<pre><code>\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  name: nginx-webapp\r\nspec:\r\n  type: ClusterIP\r\n  ports:\r\n    - targetPort: 80\r\n      port: 80\r\n  selector:\r\n    app: frontend\r\n<\/code><\/pre>\n<ul>\n<li>Now we create an Ingress resource manifest file with routing rules and deploy it.<\/li>\n<\/ul>\n<pre><code>\r\napiVersion: networking.k8s.io\/v1\r\nkind: Ingress\r\nmetadata:\r\n name: minimal-ingress\r\nspec:\r\n  ingressClassName: nginx\r\n  rules:\r\n   - http:\r\n      paths:\r\n       - path: \/\r\n         pathType: Prefix\r\n         backend:\r\n            service:\r\n              name: nginx-webapp\r\n              port:\r\n                number: 80\r\n<\/code><\/pre>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-3351\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services-300x39.png\" alt=\"Nginx\" width=\"754\" height=\"98\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services-300x39.png 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services-1024x132.png 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services-768x99.png 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services-1536x198.png 1536w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services-1200x155.png 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/Checkmate-AWS-cloud-services.png 1891w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<ul>\n<li>Now use Load Balancer External-IP to access the application.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\"alignnone wp-image-3359\" src=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-web-app-developer-300x67.png\" alt=\"\" width=\"752\" height=\"168\" srcset=\"https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-web-app-developer-300x67.png 300w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-web-app-developer-1024x228.png 1024w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-web-app-developer-768x171.png 768w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-web-app-developer-1200x267.png 1200w, https:\/\/www.checkmateq.com\/blog\/wp-content\/uploads\/2022\/10\/hire-web-app-developer.png 1287w\" sizes=\"(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/p>\n<p><a href=\"https:\/\/www.checkmateq.com\/\">Please contact<\/a>\u00a0our technical consultants if you have anything related to cloud infrastructure to be discussed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes Ingress is an API object that exposes HTTP and HTTPS \u00a0routes from outside the cluster to services within the cluster.\u00a0 An Ingress can be set up to load balance traffic, provide name-based virtual hosting, and provide Services with externally-reachable URLs. An ingress is not used for exposing arbitrary ports or protocols. A load balancer &hellip; <a href=\"https:\/\/www.checkmateq.com\/blog\/ingress-controller\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How to set up Nginx Ingress Controller on Kubernetes&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":3366,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[2,71,70,69,68,7,8],"_links":{"self":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts\/3346"}],"collection":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/comments?post=3346"}],"version-history":[{"count":10,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts\/3346\/revisions"}],"predecessor-version":[{"id":3856,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/posts\/3346\/revisions\/3856"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/media\/3366"}],"wp:attachment":[{"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/media?parent=3346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/categories?post=3346"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.checkmateq.com\/blog\/wp-json\/wp\/v2\/tags?post=3346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}