#dns #kubernetes #record #ares #automatic #system #dns-records

app k8s-ares

ARES:自动记录系统 - Kubernetes的DNS运营商

2个不稳定版本

0.1.0 2020年9月3日
0.0.1 2020年9月1日

#4 in #ares

自定义许可

56KB
832

k8s-ares

ARES:自动记录系统。

A Kubernetes本地系统,用于自动创建和管理DNS记录,旨在与外部DNS并行运行。

配置通过ares-secret机密对象管理,通常在默认命名空间中。这可能在将来改为默认使用ARES部署的命名空间。

配置

配置文件应如下所示

- selector:
  - syntixi.io
  provider: cloudflare
  providerOptions:
    apiToken: ***

相应的机密对象可以如下所示

apiVersion: v1
kind: Secret
metadata:
  name: ares-secret
stringData:
- selector:
  - syntixi.io
  provider: cloudflare
  providerOptions:
    apiToken: ***

如果您想控制多个不同提供者下的多个域名区域,您可以在默认数组中添加另一个元素,并在那里配置另一个提供者。您可以通过单个提供者配置多个域名区域。

自定义资源定义

ARES监视syntixi.io/v1alpha1/Record自定义资源定义,以了解要添加、删除或修改哪些域名。以下是一个示例资源。

apiVersion: syntixi.io/v1alpha1
kind: Record
metadata:
  name: example
spec:
  fqdn: example.syntixi.io
  ttl: 100
  type: CNAME
  value:
  - syntixi.io

对于可能更改的地址,例如Pod可能运行的节点,建议使用值From选择器,例如Pod选择器。以下示例包括一个Pod和一个指向Pod运行的节点的记录,其选择器类似于Kubernetes 文档 中的选择器。

此不应用于入站流量(为此,您应使用LoadBalancer服务或外部dns的入口记录)。然而,这对于将SPF记录指向出站邮件记录非常有用,其中邮件可以来自多个节点之一。

apiVersion: v1
kind: Pod
metadata:
  name: nginx-hello-world
  app: nginx
spec:
  containers:
  - name: nginx
    image: nginxdemos/hello
---
apiVersion: syntixi.io/v1alpha1
kind: Record
metadata:
  name: example-selector
spec:
  fqdn: selector.syntixi.io
  ttl: 1
  valueFrom:
    podSelector:
      matchLabels:
        app: nginx

当创建syntixi.io/v1alpha1/Record资源时,将为ARES创建一个额外的记录来跟踪DNS记录的所有权。只要该跟踪记录存在,当Kubernetes资源被删除时,相应的记录和跟踪记录也将被删除。

许可:MIT

依赖项

~71MB
~1M SLoC