Ingress

Ingress 是一組規則的集合,允許入站連線連至後端定義的端點。

apiVersion: networking.k8s.io/v1

import "k8s.io/api/networking/v1"

Ingress

Ingress 是一組規則的集合,允許入站連線連至後端定義的端點。Ingress 可以設定為提供服務可從外部存取的 URL、負載平衡流量、終止 SSL、提供基於名稱的虛擬主機等等。


IngressSpec

IngressSpec 描述使用者希望存在的 Ingress。


  • defaultBackend (IngressBackend)

    defaultBackend 是應該處理與任何規則都不符之請求的後端。如果未指定規則,則必須指定 DefaultBackend。如果未設定 DefaultBackend,則與任何規則都不符之請求的處理將取決於 Ingress 控制器。

  • ingressClassName (string)

    ingressClassName 是 IngressClass 叢集資源的名稱。Ingress 控制器實作使用此欄位來瞭解它們是否應該服務此 Ingress 資源,透過一個過渡連線 (控制器 -> IngressClass -> Ingress 資源)。雖然從未正式定義 kubernetes.io/ingress.class 註解 (簡單常數名稱),但 Ingress 控制器廣泛支援它,以在 Ingress 控制器與 Ingress 資源之間建立直接繫結。新建立的 Ingress 資源應優先使用此欄位。然而,即使註解已正式棄用,但基於回溯相容性的原因,Ingress 控制器仍應在存在時遵守該註解。

  • rules ([]IngressRule)

    Atomic:將在合併期間被取代

    rules 是用於設定 Ingress 的主機規則清單。如果未指定,或沒有規則符合,則所有流量都會傳送至預設後端。

    IngressRule 代表將指定主機下的路徑對應至相關後端服務的規則。首先評估傳入的請求以進行主機比對,然後路由至與符合的 IngressRuleValue 相關聯的後端。

    • rules.host (string)

      host 是網路主機的完整網域名稱,如 RFC 3986 所定義。請注意與 RFC 3986 中定義的 URI 的「host」部分有以下偏差:1. 不允許 IP。目前 IngressRuleValue 只能套用至父 Ingress Spec 中的 IP。2. 不遵守 : 分隔符號,因為不允許連接埠。目前 Ingress 的連接埠對於 http 隱含為 :80,對於 https 隱含為 :443。這兩者在未來都可能會變更。傳入的請求會先根據 IngressRuleValue 比對主機。如果未指定主機,Ingress 會根據指定的 IngressRuleValue 路由所有流量。

      host 可以是「精確」的,即沒有網路主機終止點的網域名稱 (例如「foo.bar.com」),或是「萬用字元」,即以單一萬用字元標籤為首碼的網域名稱 (例如「*.foo.com」)。萬用字元 '*' 必須以本身形式顯示為第一個 DNS 標籤,且僅符合單一標籤。您不能擁有本身形式的萬用字元標籤 (例如 Host == "*")。請求將以以下方式根據 Host 欄位比對:1. 如果 host 是精確的,則如果 http host 標頭等於 Host,則請求符合此規則。2. 如果 host 是萬用字元,則如果 http host 標頭等於萬用字元規則的字尾 (移除第一個標籤),則請求符合此規則。

    • rules.http (HTTPIngressRuleValue)

      HTTPIngressRuleValue 是指向後端的 http 選擇器清單。在範例中:http://<host>/<path>?<searchpart> -> 後端,其中 URL 的各部分對應於 RFC 3986,此資源將用於比對最後一個 '/' 之後和第一個 '?' 或 '#' 之前的所有內容。

      • rules.http.paths ([]HTTPIngressPath),必要

        Atomic:將在合併期間被取代

        paths 是將請求對應至後端的路徑集合。

        HTTPIngressPath 將路徑與後端關聯。符合路徑的傳入 URL 會轉發至後端。

        • rules.http.paths.backend (IngressBackend),必要

          backend 定義將流量轉發至的參照服務端點。

        • rules.http.paths.pathType (string),必要

          pathType 決定路徑比對的解讀方式。PathType 可以是下列其中一個值:* Exact:完全比對 URL 路徑。* Prefix:根據以 '/' 分隔的 URL 路徑前綴進行比對。比對是以路徑元素逐個元素進行。路徑元素指的是路徑中以 '/' 分隔符號分隔的標籤列表。如果請求路徑的每個 p 都是路徑 p 的元素級前綴,則請求符合路徑 p。請注意,如果路徑的最後一個元素是請求路徑中最後一個元素的子字串,則不視為符合(例如,/foo/bar 符合 /foo/bar/baz,但不符合 /foo/barbaz)。

          • ImplementationSpecific:路徑比對的解讀方式取決於 IngressClass。實作可以將此視為獨立的 PathType,或將其視為與 PrefixExact 路徑類型相同。實作必須支援所有路徑類型。
        • rules.http.paths.path (字串)

          path 會與傳入請求的路徑進行比對。目前它可以包含 RFC 3986 定義的傳統 "path" URL 部分中不允許的字元。路徑必須以 '/' 開頭,且在使用值為 "Exact" 或 "Prefix" 的 PathType 時必須存在。

  • tls ([]IngressTLS)

    Atomic:將在合併期間被取代

    tls 代表 TLS 設定。目前 Ingress 僅支援單一 TLS 埠,即 443。如果此列表中的多個成員指定不同的主機,則會根據透過 SNI TLS 擴展指定的主機名稱在同一埠上進行多工處理,前提是滿足 Ingress 的 Ingress 控制器支援 SNI。

    IngressTLS 描述與 Ingress 相關聯的傳輸層安全性。

    • tls.hosts ([]字串)

      Atomic:將在合併期間被取代

      hosts 是 TLS 憑證中包含的主機列表。此列表中的值必須與 tlsSecret 中使用的名稱相符。如果未指定,則預設為滿足此 Ingress 的負載平衡器控制器的萬用字元主機設定。

    • tls.secretName (字串)

      secretName 是用於終止埠 443 上 TLS 流量的密鑰名稱。此欄位為選填,允許僅根據 SNI 主機名稱進行 TLS 路由。如果偵聽器中的 SNI 主機與 IngressRule 使用的 "Host" 標頭欄位衝突,則 SNI 主機將用於終止,而 "Host" 標頭的值將用於路由。

IngressBackend

IngressBackend 描述給定服務和埠的所有端點。


  • resource (TypedLocalObjectReference)

    resource 是對 Ingress 物件命名空間中另一個 Kubernetes 資源的 ObjectRef。如果指定了 resource,則不得指定 service.Nameservice.Port。這是與 "Service" 互斥的設定。

  • service (IngressServiceBackend)

    service 參考服務作為後端。這是與 "Resource" 互斥的設定。

    IngressServiceBackend 參考 Kubernetes Service 作為後端。

    • service.name (字串),必填

      name 是被參考的服務。服務必須存在於與 Ingress 物件相同的命名空間中。

    • service.port (ServiceBackendPort)

      被參考服務的埠。IngressServiceBackend 需要埠名稱或埠號。

      ServiceBackendPort 是被參考的服務埠。

      • service.port.name (字串)

        name 是 Service 上的埠名稱。這是與 "Number" 互斥的設定。

      • service.port.number (int32)

        number 是 Service 上的數字埠號(例如 80)。這是與 "Name" 互斥的設定。

IngressStatus

IngressStatus 描述 Ingress 的目前狀態。


  • loadBalancer (IngressLoadBalancerStatus)

    loadBalancer 包含負載平衡器的目前狀態。

    IngressLoadBalancerStatus 代表負載平衡器的狀態。

    • loadBalancer.ingress ([]IngressLoadBalancerIngress)

      Atomic:將在合併期間被取代

      ingress 是包含負載平衡器 Ingress 點的列表。

      IngressLoadBalancerIngress 代表負載平衡器 Ingress 點的狀態。

      • loadBalancer.ingress.hostname (字串)

        hostname 是為基於 DNS 的負載平衡器 Ingress 點設定的。

      • loadBalancer.ingress.ip (字串)

        ip 是為基於 IP 的負載平衡器 Ingress 點設定的。

      • loadBalancer.ingress.ports ([]IngressPortStatus)

        Atomic:將在合併期間被取代

        ports 提供有關此負載平衡器公開的埠的資訊。

        IngressPortStatus 代表服務埠的錯誤狀況

        • loadBalancer.ingress.ports.port (int32),必填

          port 是 Ingress 埠的埠號。

        • loadBalancer.ingress.ports.protocol (字串),必填

          protocol 是 Ingress 埠的協定。支援的值為:"TCP"、"UDP"、"SCTP"

        • loadBalancer.ingress.ports.error (字串)

          error 用於記錄服務埠的問題。錯誤的格式應符合以下規則:- 內建錯誤值應在此檔案中指定,且應使用 CamelCase 名稱

          • 雲端供應商特定的錯誤值必須具有符合 foo.example.com/CamelCase 格式的名稱。

IngressList

IngressList 是 Ingress 的集合。


操作


get 讀取指定的 Ingress

HTTP 請求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

參數

  • name (在路徑中):字串,必填

    Ingress 的名稱

  • namespace (在路徑中):字串,必填

    命名空間

  • pretty (在查詢中):字串

    pretty

回應

200 (Ingress):確定

401:未經授權

get 讀取指定 Ingress 的狀態

HTTP 請求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

參數

  • name (在路徑中):字串,必填

    Ingress 的名稱

  • namespace (在路徑中):字串,必填

    命名空間

  • pretty (在查詢中):字串

    pretty

回應

200 (Ingress):確定

401:未經授權

list 列出或監看種類為 Ingress 的物件

HTTP 請求

GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

參數

回應

200 (IngressList):確定

401:未經授權

list 列出或監看種類為 Ingress 的物件

HTTP 請求

GET /apis/networking.k8s.io/v1/ingresses

參數

回應

200 (IngressList):確定

401:未經授權

create 建立 Ingress

HTTP 請求

POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

參數

回應

200 (Ingress):確定

201 (Ingress):已建立

202 (Ingress):已接受

401:未經授權

update 取代指定的 Ingress

HTTP 請求

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

參數

  • name (在路徑中):字串,必填

    Ingress 的名稱

  • namespace (在路徑中):字串,必填

    命名空間

  • bodyIngress,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • pretty (在查詢中):字串

    pretty

回應

200 (Ingress):確定

201 (Ingress):已建立

401:未經授權

update 取代指定 Ingress 的狀態

HTTP 請求

PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

參數

  • name (在路徑中):字串,必填

    Ingress 的名稱

  • namespace (在路徑中):字串,必填

    命名空間

  • bodyIngress,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • pretty (在查詢中):字串

    pretty

回應

200 (Ingress):確定

201 (Ingress):已建立

401:未經授權

patch 部分更新指定的 Ingress

HTTP 請求

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

參數

  • name (在路徑中):字串,必填

    Ingress 的名稱

  • namespace (在路徑中):字串,必填

    命名空間

  • bodyPatch,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • force (在查詢中):布林值

    force

  • pretty (在查詢中):字串

    pretty

回應

200 (Ingress):確定

201 (Ingress):已建立

401:未經授權

patch 部分更新指定 Ingress 的狀態

HTTP 請求

PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status

參數

  • name (在路徑中):字串,必填

    Ingress 的名稱

  • namespace (在路徑中):字串,必填

    命名空間

  • bodyPatch,必填

  • dryRun (在查詢中):字串

    dryRun

  • fieldManager (在查詢中):字串

    fieldManager

  • fieldValidation (在查詢中):字串

    fieldValidation

  • force (在查詢中):布林值

    force

  • pretty (在查詢中):字串

    pretty

回應

200 (Ingress):確定

201 (Ingress):已建立

401:未經授權

delete 刪除 Ingress

HTTP 請求

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}

參數

回應

200 (Status):確定

202 (Status):已接受

401:未經授權

deletecollection 刪除 Ingress 的集合

HTTP 請求

DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses

參數

回應

200 (Status):確定

401:未經授權

此頁面為自動產生。

如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。此修正可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2024 年 8 月 28 日下午 6:01 PST:Update generated API reference for v1.31 (8ba98c79c1)