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