K8S Ingress/Ingress Controller
介紹
Ingress
定義規則
Ingress 是 K8s 所提供的工具,用在定義應用程式如何公開服務
Ingress Controller
實現規則與分流
Ingress Controller 負責監聽 Ingress 管理路由 Nginx 等,Ingress Controller 會根據 Ingress Controler 分配流量到應用程式
實作
建立 Ingress
手上有三個 service
- efk-elasticsearch-client
- efk-kibana
- hl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress
annotations:
kubernetes.io/ingress.class: "traefik"
traefik.ingress.kubernetes.io/frontend-entry-points: http,https
#traefik.ingress.kubernetes.io/redirect-entry-point: https
#traefik.ingress.kubernetes.io/redirect-permanent: "true"
spec:
ingressClassName: traefik
rules:
- http:
paths:
- path: /es
pathType: Prefix
backend:
service:
name: efk-elasticsearch-client
port:
number: 9200
- path: /kb
pathType: Prefix
backend:
service:
name: efk-kibana
port:
number: 443
- path: /
pathType: Exact
backend:
service:
name: hl
port:
number: 8080
建立 Ingress Controller
1 | kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml |
一旦更新或刪除 Ingress 資源,Nginx Ingress Controller 會自動響應並相應地更新或刪除相關的路由規則。
參考資料
- [Kubernetes / K8s]Ingress 和 Ingress Controller 差別
- Kubernetes - Ingress
- GitHub marcel-dempers/docker-development-youtube-series