ExternalDNS 使用教程

ExternalDNS 使用教程

external-dnsConfigure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services项目地址:https://gitcode.com/gh_mirrors/ex/external-dns

项目介绍

ExternalDNS 是一个开源项目,旨在将 Kubernetes 资源(如服务和入口)与外部 DNS 提供商同步。它通过 Kubernetes API 获取资源列表,并配置外部 DNS 提供商(如 AWS Route 53 或 Google Cloud DNS)来管理 DNS 记录。ExternalDNS 不是 DNS 服务器,而是通过动态控制 DNS 记录来实现 Kubernetes 资源的可发现性。

项目快速启动

部署 ExternalDNS

以下是一个简单的部署 ExternalDNS 的示例,假设你使用的是 AWS 环境:

  1. 创建 IAM 策略

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "route53:ChangeResourceRecordSets"
          ],
          "Resource": [
            "arn:aws:route53:::hostedzone/*"
          ]
        },
        {
          "Effect": "Allow",
          "Action": [
            "route53:ListHostedZones",
            "route53:ListResourceRecordSets"
          ],
          "Resource": [
            "*"
          ]
        }
      ]
    }
    
  2. 部署 ExternalDNS

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: external-dns
    spec:
      strategy:
        type: Recreate
      selector:
        matchLabels:
          app: external-dns
      template:
        metadata:
          labels:
            app: external-dns
        spec:
          containers:
          - name: external-dns
            image: k8s.gcr.io/external-dns/external-dns:v0.7.6
            args:
            - --source=service
            - --source=ingress
            - --domain-filter=example.com
            - --provider=aws
            - --policy=sync
            - --aws-zone-type=public
            - --registry=txt
            - --txt-owner-id=my-identifier
    

应用案例和最佳实践

案例一:使用 ExternalDNS 管理 AWS Route 53

假设你有一个 Kubernetes 集群,并且希望将服务和入口的 DNS 记录同步到 AWS Route 53。你可以按照上述快速启动中的步骤配置 ExternalDNS,并确保 IAM 策略和部署文件正确无误。

最佳实践

  1. 设置 --txt-owner-id:建议为 --txt-owner-id 设置一个唯一且不变的值,以确保 ExternalDNS 能够安全地管理非空托管区域。
  2. 使用 --dry-run 模式:在实际应用更改之前,可以使用 --dry-run 模式来查看即将提交到 DNS 提供商 API 的更改。

典型生态项目

Kubernetes Ingress Controller

ExternalDNS 通常与 Kubernetes Ingress Controller 一起使用,以实现外部流量的路由和管理。常见的 Ingress Controller 包括:

  • NGINX Ingress Controller:提供高性能的反向代理和负载均衡。
  • AWS Load Balancer Controller:专门为 AWS 环境设计的负载均衡器控制器。

Cert-Manager

Cert-Manager 是一个用于自动管理 TLS 证书的项目,与 ExternalDNS 结合使用可以实现自动化的 SSL/TLS 证书颁发和管理。

通过这些生态项目的结合使用,可以构建一个完整的外部访问和安全管理体系。

external-dnsConfigure external DNS servers (AWS Route53, Google CloudDNS and others) for Kubernetes Ingresses and Services项目地址:https://gitcode.com/gh_mirrors/ex/external-dns

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宗津易Philip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值