k8s_gateway

原始碼 首頁

啟用方式
k8s_gateway:github.com/ori-edge/k8s_gateway

k8s_gateway - 用於解析所有類型外部 Kubernetes 資源的外掛。

描述

這個外掛與 k8s_external 非常相似,但它支援所有類型的 Kubernetes 外部資源 - Ingress、類型為 LoadBalancer 的 Service 以及 networking.x-k8s.io/Gateway(當它可用時)。

這個外掛依賴於它自己與 k8s API 伺服器的連線,並且不與現有的 kubernetes 外掛共用任何程式碼。假設這個外掛現在可以作為一個獨立的實例(與內部 kube-dns 並行)部署,並作為一個單一的外部 DNS 介面進入您的 Kubernetes 叢集。

語法

k8s_gateway [ZONE...] 

您可以選擇性地指定要監看的資源類型以及回應中返回的預設 TTL,例如:

k8s_gateway example.com {
    resources Ingress
    ttl 10
}

範例

. {
  k8s_gateway example.com
}

使用上述配置,外掛將以下列方式運作:

  1. 所有 DNS 查詢將首先與配置的區域進行比對 - example.com
  2. 如果找到匹配項,下一步是將其與任何現有的 Ingress 資源進行比對。查找是針對 Ingress 的 spec.rules[*].host 欄位中配置的 FQDN 執行。在此階段,可以將從 .status.loadBalancer.ingress 收集的 IP 返回給使用者。
  3. 如果沒有找到匹配的 Ingress,則繼續搜尋 Service 物件。由於服務沒有真正的網域名稱,因此使用 serviceName.namespace 作為鍵來執行查找。
  4. 如果找到匹配項,則以類似的方式將其返回給最終使用者,或者外掛回應 NXDOMAIN。

支援的功能

k8s_gateway 根據配置中指定的區域,使用其外部 IP 位址解析 Kubernetes 資源。這個外掛將解析以下類型的資源:

類型 比對依據 外部 IP 來自
Ingress 所有來自 spec.rules[*].host 與配置區域匹配的 FQDN .status.loadBalancer.ingress
Service[*] name.namespace + 任何配置的區域 .status.loadBalancer.ingress

[*]: 僅解析類型為 LoadBalancer 的服務

目前僅支援 A 類型查詢,所有其他查詢都會產生 NODATA 回應。

這個外掛應該用於叢集內 DNS 解析,並且預設情況下不會包含預設的上游 kubernetes 外掛。