Skip to main content
  1. Posts/

Setup Nginx Ingress Controller On Kubernetes

·2 mins·
kubernetes kubernetes
Table of Contents

NGINX Ingress Controller adalah komponen yang digunakan dalam arsitektur Kubernetes untuk mengelola dan mengarahkan lalu lintas masuk (ingress) ke layanan-layanan dalam klaster Kubernetes.

Beberapa fungsi utama dari NGINX Ingress Controller seperti:

  • Routing dan Load Balancing
  • Manajemen SSL/TLS
  • Virtual Host Routing
  • Path-Based Routing
  • Rewrite Rules
  • Rate Limiting
  • Autoscaling
  • Aplikasi Multitenancy

Deploy Nginx Ingress Controller
#

Terdapat 2 Nginx ingress controllers yaitu

Pada simulasi ini akan menggunakan Nginx ingress controller dari kubernetes community.

Deploy Nginx ingress controller

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml

Pastikan pods NGINX Ingress Controller running.

# kubectl get pods -n ingress-nginx
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-mgbf5        0/1     Completed   0          14m
ingress-nginx-admission-patch-xnvnv         0/1     Completed   3          14m
ingress-nginx-controller-79d66f886c-qnzsm   1/1     Running     0          14m

Deploy a Demo Application
#

Buat namespace site.

kubectl create ns site

Selanjutnya Buat file deployment.yaml lalu edit seperti berikut.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo
  namespace: site
spec:
  replicas: 4
  selector:
    matchLabels:
      app: demo
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: demo
    spec:
      containers:
      - image: nginxdemos/hello
        imagePullPolicy: Always
        name: hello
        ports:
        - containerPort: 80
          protocol: TCP
      restartPolicy: Always

Deploy demosite.

kubectl apply -f deployment.yaml

Cek deployment status

kubectl get deployments -n site

Buat file service.yaml lalu edit seperti berikut.

apiVersion: v1
kind: Service
metadata:
  name: demo-service
  namespace: site
spec:
  internalTrafficPolicy: Cluster
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: demo
  type: ClusterIP

Deploy service.

kubectl apply -f service.yaml

Create Ingress Object for Application
#

Buat ingress agar app: demo dapat diakses menggunakan DNS.

Sebelumnya pastikan Anda sudah membuat record pada domain atau subdomain ke tujuan IP node yang menjadi ingress-nginx-controller

kubectl get pods -n ingress-nginx \
-o custom-columns=NAME:.metadata.name,NODE:spec.nodeName
NAME                                        NODE
ingress-nginx-admission-create-5h25b        worker2
ingress-nginx-admission-patch-7rjv4         worker1
ingress-nginx-controller-79d66f886c-j5qzc   worker1

Buat file ingress.yaml lalu edit seperti berikut.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-ing
  namespace: site
spec:
  ingressClassName: nginx
  rules:
  - host: web8.example.com
    http:
      paths:
      - backend:
          service:
            name: demo-service
            port:
              number: 80
        path: /
        pathType: Prefix

Ganti web8.example.com dengan domain atau subdomain yang telah disetting A record.

Deploy ingress ke cluster.

kubectl apply -f ingress.yaml

Test akses website melalui http://web8.example.com pada browser.

Related

Installing SSL Certificates on Zimbra Servers
·1 min
zimbra zimbra
Eksekusi Skrip Saat Startup dan Shutdown
·2 mins
linux linux
Install Specific Version of Package X with Yum Package Manager
·1 min
centos centos
Create Multiple IP Addresses in Linux
·2 mins
linux centos ubuntu linux
Subnet Cheat Sheet
·2 mins
linux linux
Kombinasikan Beberapa Middleware dengan Middleware Chain
·1 min
traefik traefik docker