fill=#000/>/>
Navigate back to the homepage

Deploy Traefik Ingress on kubernetes

Fahmi
February 15th, 2020 · 1 min read

Hi sobat, Sesuai dengan judul diatas, mau sharing setup ingress di k8s, existing kita menggunakan traefik untuk ingressnya, akan tetapi soon akan kembali ke nginx.

Flow

1graph LR
2A[SLB Alibaba] -->|port 80 node worker|B(Ingress)
3 B --> C{service}
4 C --> D[pod]
5 C --> E[pod]

Ingress masuk dalam katagori layer 7 jadi http/https aja. jika kalian mau custom port bisa memilih opsi menggunakan NodePort atau LoadBalancer detail bisa dilihat disini, oke langgsung masuk kepembahasan setup ingress menggunakan traefik di kubernetes :

  • Create namespace

kubectl create ns ingress

  • Create file RBAC

rbac-traefik.yaml

1---
2kind: ClusterRole
3apiVersion: rbac.authorization.k8s.io/v1beta1
4metadata:
5 name: traefik-ingress-controller
6rules:
7 - apiGroups:
8 - ""
9 resources:
10 - services
11 - endpoints
12 - secrets
13 verbs:
14 - get
15 - list
16 - watch
17 - apiGroups:
18 - extensions
19 resources:
20 - ingresses
21 verbs:
22 - get
23 - list
24 - watch
25 - apiGroups:
26 - extensions
27 resources:
28 - ingresses/status
29 verbs:
30 - update
31---
32kind: ClusterRoleBinding
33apiVersion: rbac.authorization.k8s.io/v1beta1
34metadata:
35 name: traefik-ingress-controller
36roleRef:
37 apiGroup: rbac.authorization.k8s.io
38 kind: ClusterRole
39 name: traefik-ingress-controller
40subjects:
41- kind: ServiceAccount
42 name: traefik-ingress-controller
43 namespace: ingress

kubectl apply -f rbac-traefik.yaml

  • Create file DaemonSet

daemonset-traefik.yaml

1---
2apiVersion: v1
3kind: ServiceAccount
4metadata:
5 name: traefik-ingress-controller
6 namespace: ingress
7---
8kind: DaemonSet
9apiVersion: apps/v1
10metadata:
11 name: traefik-ingress-controller
12 namespace: ingress
13 labels:
14 k8s-app: traefik-ingress-lb
15spec:
16 selector:
17 matchLabels:
18 k8s-app: traefik-ingress-lb
19 name: traefik-ingress-lb
20 template:
21 metadata:
22 labels:
23 k8s-app: traefik-ingress-lb
24 name: traefik-ingress-lb
25 spec:
26 serviceAccountName: traefik-ingress-controller
27 terminationGracePeriodSeconds: 60
28 containers:
29 - image: traefik:v1.7
30 name: traefik-ingress-lb
31 ports:
32 - name: http
33 containerPort: 80
34 hostPort: 80
35 - name: admin
36 containerPort: 8080
37 hostPort: 8080
38 securityContext:
39 capabilities:
40 drop:
41 - ALL
42 add:
43 - NET_BIND_SERVICE
44 args:
45 - --api
46 - --kubernetes
47 - --logLevel=INFO
48---
49kind: Service
50apiVersion: v1
51metadata:
52 name: traefik-ingress-service
53 namespace: ingress
54spec:
55 selector:
56 k8s-app: traefik-ingress-lb
57 ports:
58 - protocol: TCP
59 port: 80
60 name: web
61 - protocol: TCP
62 port: 8080
63 name: admin

kubectl apply -f daemonset-traefik.yaml

Done, service ingress with traefik kalian sudah selesai, saatnya kita expose service aplikasi kita

ingress yaml

1apiVersion: extensions/v1beta1
2kind: Ingress
3metadata:
4 name: aplikasi-1
5 namespace: production
6 annotations:
7 kubernetes.io/ingress.class: traefik
8spec:
9 rules:
10 - host: {domain kamu}
11 http:
12 paths: /
13 - backend:
14 serviceName: {nama service}
15 servicePort: {port service}

kamu juga bisa akses dashboard traefik

  • Dashboard traefik {IP_NODE-WORKER}:8080

finish, congratulations :) #cheers

More articles from Fahmi

Deploy nginx Ingress on kubernetes

Kenapa kita memilih balik lagi ke nginx yaa salah satunya banyak feature yang masih dipake untuk service apps kita. semua feature tersebut kita bisa set melalui configmap dan annotations.

February 20th, 2020 · 1 min read

Deploy Traefik Ingress on kubernetes

mau sharing `setup ingress` di k8s, existing kita menggunakan traefik untuk ingressnya, akan tetapi soon akan kembali ke nginx.

February 15th, 2020 · 1 min read
© 2020 Fahmi
Link to $mailto:me@fahmi.my.id