Ingress Kubernetes

Ingress adalah salah satu teknik yang paling powerful untuk mengexpose services keluar. Ada banyak jenis ingress, seperti nginx ingress.

Instalasi nginx ingress

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

Jika menggunakan kubeadm, jalankan setelah script diatas

https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

Referensi untuk instalasi ingress-nginx yang lain : Deploy Ingress

Lab

dengan mereferensi ke tulisan pv & pvc sebelumnya, berhasil membuat sebuah deployment dengan PVC. sekarang buat sebuah ingress agar deployment tersebut dapat diakses dari luar.

Buat sebuah service dengan tipe ClusterIP, service ini akan merefer deployment dengan label app: nginx

kind: Service
apiVersion: v1
metadata:
  name: webserver
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    app: nginx

Lalu buat sebuah ingress

kind:                                     Ingress
apiVersion:                               extensions/v1beta1
metadata:
  name:                                   nginx-public
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: wew.nginx.com 
    http:
      paths:
      - path: /web
        backend:
          serviceName: webserver
          servicePort: 80

Ingress diatas akan merefer ke service dengan nama webserver, lalu kita dapat mengaksesnya dengan url wew.nginx.com/web

ubuntu@master:~$ kubectl create -f service.yaml 
service "webserver" created
ubuntu@master:~$ kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   5d
webserver    ClusterIP   10.104.117.30   <none>        80/TCP    6s
ubuntu@master:~$ kubectl create -f ingress.yaml 
ingress.extensions "nginx-public" created
ubuntu@master:~$ kubectl get ingress
NAME           HOSTS           ADDRESS   PORTS     AGE
nginx-public   wew.nginx.com             80        7s

Untuk mengakses ingress, terlebih dahulu tambahkan wew.nginx.com dan ip address kubernetes node (10.101.101.10) kedalam /etc/hosts

ubuntu@master:~$ kubectl get service --all-namespaces
NAMESPACE       NAME                   TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
default         kubernetes             ClusterIP   10.96.0.1        <none>        443/TCP                      5d
default         webserver              ClusterIP   10.104.117.30    <none>        80/TCP                       1m
ingress-nginx   default-http-backend   ClusterIP   10.105.156.163   <none>        80/TCP                       5d
ingress-nginx   ingress-nginx          NodePort    10.110.134.232   <none>        80:30303/TCP,443:32238/TCP   5d
kube-system     kube-dns               ClusterIP   10.96.0.10       <none>        53/UDP,53/TCP                5d
kube-system     kubernetes-dashboard   NodePort    10.100.102.181   <none>        443:30566/TCP                5d
ubuntu@master:~$ cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       master
10.101.101.10 wew.nginx.com
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Lalu lakukan curl

ubuntu@master:~$ curl http://wew.nginx.com:30303/web
Index file from kubernetes ingress pvc

 

Comments are closed.