antony@notes:~/kubernetes$ cat "k8s-ingress.md"
k8s ingress
k8s ingress
The Ingress resource
一個最小的 Ingress 資源範例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
ingressClassName: nginx-example
rules:
- http:
paths:
- path: /testpath
pathType: Prefix
backend:
service:
name: test
port:
number: 80一個 Ingress 需要有 apiVersion、kind、metadata 和 spec 這些欄位。Ingress 物件的名稱必須是有效的 DNS Subdomain Names。Ingress 通常會使用 annotations 來設定一些選項,這取決於所使用的 Ingress Controller,例如 rewrite-target annotation。不同的 Ingress controllers 支持不同的 annotations,建議查閱你選擇的 Ingress controller 文件來了解支援的 annotations 有哪些。
Ingress spec 包含了設定 load balancer 或 proxy server 所需的所有資訊。最重要的是,它包含了一組規則,用來匹配所有進入的請求。Ingress 資源只支援 HTTP(S) 流量的規則。
如果沒有指定 ingressClassName,應該定義一個 default Ingress class。
有一些 Ingress controllers 在沒有定義預設 IngressClass 的情況下也能工作,例如 Ingress-NGINX controller 可以通過 --watch-ingress-without-class 這個標誌來設定。不過,建議還是像下面這樣指定預設的 IngressClass。