説明
このプラグインは 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
}
上記の構成により、プラグインは次のように動作します。
- すべての DNS クエリは、最初に構成されたゾーン(example.com)に対して照合されます。
- 一致がある場合、次のステップはその照合を既存の Ingress リソースに対して行うことです。ルックアップは、Ingress の
spec.rules[*].host
フィールドに構成された FQDN に対して実行されます。この段階で、.status.loadBalancer.ingress
から収集した IP を使用して、結果をユーザーに返すことができます。 - 一致する Ingress が見つからない場合、検索は Service オブジェクトで続行されます。Service にドメイン名がないため、ルックアップはキーとして
serviceName.namespace
を使用して実行されます。 - 一致するものがあれば、同様の方法でエンドユーザーに返されます。そうでない場合、プラグインは 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 プラグインは含まれません。