Skip to content

antony@notes:~/kubernetes$ cat "k8s-ingress.md"

k8s ingress

2024-10-27· kubernetes

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 需要有 apiVersionkindmetadataspec 這些欄位。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