You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将同一DNS Zone配置到多云厂商?AWS与GCP DNS自动化需求

可以实现,以下是两种基于Kubernetes和ExternalDNS的可行方案

方案一:让GCP集群的ExternalDNS直接更新AWS Route53

这种方案无需改动域名的NS配置,所有DNS记录统一在Route53管理,是最简洁的实现方式:

    1. 配置AWS权限:创建一个IAM角色,赋予以下最小权限(避免过度授权):
    • route53:ChangeResourceRecordSets:允许修改DNS记录
    • route53:ListHostedZones:允许列举托管区
    • route53:ListResourceRecordSets:允许列举现有记录
      生成该角色对应的Access Key ID和Secret Access Key。
    1. 在GCP集群中创建AWS凭证Secret:
    kubectl create secret generic aws-credentials --from-literal=aws_access_key_id=你的AccessKeyID --from-literal=aws_secret_access_key=你的SecretAccessKey
    
    1. 部署ExternalDNS到GCP集群:
      在Deployment中挂载上述Secret,并指定AWS作为provider,示例配置片段:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: external-dns
    spec:
      template:
        spec:
          volumes:
          - name: aws-credentials
            secret:
              secretName: aws-credentials
          containers:
          - name: external-dns
            image: k8s.gcr.io/external-dns/external-dns:v0.13.1
            args:
            - --provider=aws
            - --domain-filter=example.com
            - --aws-zone-type=public
            - --source=service
            - --source=ingress
            volumeMounts:
            - name: aws-credentials
              mountPath: /root/.aws
              readOnly: true
    
    1. 配置GCP服务的注解:
      在需要生成DNS记录的Service或Ingress上添加注解:
    annotations:
      external-dns.alpha.kubernetes.io/hostname: name3.example.com
    
    这样ExternalDNS会自动监听资源变化,在Route53中创建对应记录。

方案二:多主DNS架构,同时托管example.com在AWS和GCP

如果需要将DNS记录分散在两个云服务商管理,可以采用多主DNS模式:

    1. 在GCP Cloud DNS创建托管区:
      新建public类型的example.com托管区,记录下GCP分配的NS服务器地址。
    1. 更新域名注册商的NS配置:
      将域名注册商处的NS服务器列表,同时添加AWS Route53和GCP Cloud DNS的所有NS节点(两边的NS地址都要包含),实现DNS查询的多主冗余。
    1. 分别配置两边的ExternalDNS:
    • AWS集群的ExternalDNS保持原有配置,继续管理Route53中的name1.example.com、name2.example.com等记录。
    • GCP集群的ExternalDNS配置为GCP provider,管理Cloud DNS中的name3.example.com等记录,启动参数示例:
      args:
      - --provider=google
      - --domain-filter=example.com
      - --source=service
      - --source=ingress
      
  • 注意事项:
    • 确保两边的子域名不冲突(比如AWS服务用aws-*.example.com,GCP服务用gcp-*.example.com)。
    • 设置合理的TTL值(比如300秒),减少解析缓存带来的记录不一致问题。

最佳实践

  • 优先选择方案一,架构更简单,维护成本更低,无需处理多服务商的记录一致性问题。
  • 无论哪种方案,都要遵循最小权限原则配置IAM角色,避免泄露过高权限的凭证。
  • 定期验证DNS记录的正确性,可使用dig或nslookup工具测试解析结果。

内容的提问来源于stack exchange,提问作者sri05

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:01:35