Ingress
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Ingress
Ingress 是一組規則的集合,允許入站連線連至後端定義的端點。Ingress 可以設定為提供服務可從外部存取的 URL、負載平衡流量、終止 SSL、提供基於名稱的虛擬主機等等。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata (ObjectMeta)
標準物件的中繼資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
spec (IngressSpec)
spec 是 Ingress 的期望狀態。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
status (IngressStatus)
status 是 Ingress 的目前狀態。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
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
,或將其視為與Prefix
或Exact
路徑類型相同。實作必須支援所有路徑類型。
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.Name
和service.Port
。這是與 "Service" 互斥的設定。service (IngressServiceBackend)
service
參考服務作為後端。這是與 "Resource" 互斥的設定。
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
提供有關此負載平衡器公開的埠的資訊。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 的集合。
items ([]Ingress),必填
items
是 Ingress 的列表。apiVersion (字串)
APIVersion
定義此物件表示形式的版本化綱要。伺服器應將已識別的綱要轉換為最新的內部值,並可能拒絕無法識別的值。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resourceskind (字串)
Kind
是代表此物件所代表的 REST 資源的字串值。伺服器可能會從客戶端提交請求的端點推斷出此值。無法更新。使用 CamelCase。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kindsmetadata (ListMeta)
標準物件的中繼資料。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
操作
get
讀取指定的 Ingress
HTTP 請求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
參數
回應
200 (Ingress):確定
401:未經授權
get
讀取指定 Ingress 的狀態
HTTP 請求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
參數
回應
200 (Ingress):確定
401:未經授權
list
列出或監看種類為 Ingress 的物件
HTTP 請求
GET /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
參數
namespace (在路徑中):字串,必填
allowWatchBookmarks (在查詢中):布林值
continue (在查詢中):字串
fieldSelector (在查詢中):字串
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
watch (在查詢中):布林值
回應
200 (IngressList):確定
401:未經授權
list
列出或監看種類為 Ingress 的物件
HTTP 請求
GET /apis/networking.k8s.io/v1/ingresses
參數
allowWatchBookmarks (在查詢中):布林值
continue (在查詢中):字串
fieldSelector (在查詢中):字串
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
watch (在查詢中):布林值
回應
200 (IngressList):確定
401:未經授權
create
建立 Ingress
HTTP 請求
POST /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
參數
namespace (在路徑中):字串,必填
body:Ingress,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
回應
200 (Ingress):確定
201 (Ingress):已建立
202 (Ingress):已接受
401:未經授權
update
取代指定的 Ingress
HTTP 請求
PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
參數
name (在路徑中):字串,必填
Ingress 的名稱
namespace (在路徑中):字串,必填
body:Ingress,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
回應
200 (Ingress):確定
201 (Ingress):已建立
401:未經授權
update
取代指定 Ingress 的狀態
HTTP 請求
PUT /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
參數
name (在路徑中):字串,必填
Ingress 的名稱
namespace (在路徑中):字串,必填
body:Ingress,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
回應
200 (Ingress):確定
201 (Ingress):已建立
401:未經授權
patch
部分更新指定的 Ingress
HTTP 請求
PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
參數
name (在路徑中):字串,必填
Ingress 的名稱
namespace (在路徑中):字串,必填
body:Patch,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
force (在查詢中):布林值
pretty (在查詢中):字串
回應
200 (Ingress):確定
201 (Ingress):已建立
401:未經授權
patch
部分更新指定 Ingress 的狀態
HTTP 請求
PATCH /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status
參數
name (在路徑中):字串,必填
Ingress 的名稱
namespace (在路徑中):字串,必填
body:Patch,必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
force (在查詢中):布林值
pretty (在查詢中):字串
回應
200 (Ingress):確定
201 (Ingress):已建立
401:未經授權
delete
刪除 Ingress
HTTP 請求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}
參數
name (在路徑中):字串,必填
Ingress 的名稱
namespace (在路徑中):字串,必填
body:DeleteOptions
dryRun (在查詢中):字串
gracePeriodSeconds (在查詢中):整數
pretty (在查詢中):字串
propagationPolicy (在查詢中):字串
回應
200 (Status):確定
202 (Status):已接受
401:未經授權
deletecollection
刪除 Ingress 的集合
HTTP 請求
DELETE /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses
參數
namespace (在路徑中):字串,必填
body:DeleteOptions
continue (在查詢中):字串
dryRun (在查詢中):字串
fieldSelector (在查詢中):字串
gracePeriodSeconds (在查詢中):整數
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
propagationPolicy (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
回應
200 (Status):確定
401:未經授權
此頁面為自動產生。
如果您計劃回報此頁面的問題,請在您的問題描述中提及此頁面為自動產生。此修正可能需要在 Kubernetes 專案的其他地方進行。