Skip to content

Cloud Providers Overview

The Hub and Spoke DNS Operator uses a provider abstraction pattern to support multiple cloud DNS services through a unified interface.

Provider Architecture

classDiagram
    class DNSProvider {
        <<abstract>>
        +create_or_update_record(host, ip, ttl)
        +delete_record(host)
    }
    class AzureDNSProvider {
        +azure-mgmt-dns SDK
    }
    class GCPDNSProvider {
        +google-cloud-dns SDK
    }
    class AWSDNSProvider {
        +boto3 SDK
    }
    DNSProvider <|-- AzureDNSProvider
    DNSProvider <|-- GCPDNSProvider
    DNSProvider <|-- AWSDNSProvider

The cloudProvider Helm value (or CLOUD_PROVIDER environment variable) selects which provider is instantiated at startup.

Comparison

Feature Azure DNS Google Cloud DNS AWS Route53
Auth Method Managed Identity / Workload Identity Service Account Key / Workload Identity IRSA / Access Keys
Record Types A records A records A records
Zone Type Public DNS Zone Managed Zone Hosted Zone
Required Role DNS Zone Contributor roles/dns.admin route53:Change/ListResourceRecordSets
SDK azure-mgmt-dns google-cloud-dns boto3

Choosing a Provider

All three providers offer the same core functionality. Choose based on where your DNS zone is hosted:

  • Azure DNS — Best for Azure-native environments with AKS and Managed Identity
  • Google Cloud DNS — Best for GCP environments with GKE and Workload Identity
  • AWS Route53 — Best for AWS environments with EKS and IRSA

Multi-cloud DNS

You can run multiple instances of the operator in the same cluster, each configured with a different provider, to manage DNS records across multiple cloud providers simultaneously.

Setup Guides