k8s_gateway

ソース ホーム

有効にする方法
k8s_gateway:github.com/ori-edge/k8s_gateway

k8s_gateway - すべての種類の外部 Kubernetes リソースを解決するためのプラグインです。

説明

このプラグインは k8s_external と非常によく似ていますが、Ingress、LoadBalancer タイプの Service、networking.x-k8s.io/Gateway(利用可能になった場合)のすべての種類の Kubernetes 外部リソースをサポートしています。

このプラグインは独自の k8s API サーバーへの接続に依存しており、既存の kubernetes プラグインとはコードを共有しません。このプラグインは、これからは個別のインスタンス(内部 kube-dns と並行)としてデプロイされ、Kubernetes クラスタへの単一の外部 DNS インターフェイスとして機能できると想定されています。

構文

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 オブジェクトで続行されます。Service にドメイン名がないため、ルックアップはキーとして serviceName.namespace を使用して実行されます。
  4. 一致するものがあれば、同様の方法でエンドユーザーに返されます。そうでない場合、プラグインは NXDOMAIN で応答します。

サポートされている機能

k8s_gateway は、構成で指定されたゾーンに基づいて、Kubernetes リソースを外部 IP アドレスに解決します。このプラグインは、次のタイプのリソースを解決します。

種類 照合 外部 IP は以下
Ingress すべての FQDN から spec.rules[*].host で構成されたゾーンと一致 .status.loadBalancer.ingress
Service[*] name.namespace と構成されたゾーン .status.loadBalancer.ingress

[*]: LoadBalancer タイプの service のみを解決

現在は A タイプのクエリのみをサポートしており、他のすべてのクエリは NODATA 応答になります。

このプラグインは、クラスタ内 DNS 解決に使用されるものではありません。デフォルトでは、デフォルトのアップストリーム kubernetes プラグインは含まれません。