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