Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

The following sequence diagram illustrates the approach:


Elements of the DNS update design

DNSendpointCRD

The DNS CRD can be based on the examples here:  https://github.com/kubernetes-sigs/external-dns/tree/master/docs/contributing/crd-source

The above can already be used as a DNS source for external-dns.  Possible modification is to have external-dns use CRs with matching labels as a source.

DNS Provider Intent API


Code Block
themeMidnight
titlePOST
URL: /v2/project/{project-name}/rb/{rb-name}/{rb-version}/traffic-intent-sets/{traffic-intent-set-name}/dnsproviders
POST BODY:
{
  "name": "dnsprovider-intent-name1",    // use to label DNSendpointCRDs created
  "description": "dns provider intent for updating user facing microservice FQDNs to external DNS providers",
  "dnsProvider": [
    {
      "id": "microservice01", // unique name of the microservice - provides association to other connectivity intents
      "cluster-selector": "label1, label2, ...",  // labels to select which clusters this dns provider is to be used
      "externalDnsParameters": {   // list will be supplied to external-dns as parameters.
                                   // for example ...
        "aws-zone-type": "",          When using the AWS provider, filter for zones of this type (optional, options: public, private)
        "aws-zone-tags": "",          When using the AWS provider, filter for zones with these tags
        "aws-assume-role":"",         When using the AWS provider, assume this IAM role. Useful for hosted zones in another AWS account. Specify the full ARN, e.g. `arn:aws:iam::123455567:role/external-dns` (optional)
        "aws-batch-change-size":"1000",  When using the AWS provider, set the maximum number of changes that will be applied in each batch.
        "aws-batch-change-interval":"1s", When using the AWS provider, set the interval between batch changes.
        "aws-evaluate-target-health":"enabled", When using the AWS provider, set whether to evaluate the health of a DNS target (default: enabled, disable with --no-aws-evaluate-target-health)
        "aws-api-retries":"3",           When using the AWS provider, set the maximum number of retries for API calls before giving up.
        "aws-prefer-cname":"disabled"           When using the AWS provider, prefer using CNAME instead of ALIAS (default: disabled)
         etc.
      }
    },
    ...
  ]
}

Items to resolve:

  1. How to determine IP address(es) for specific cluster
    1. How to determine which IP address(es) go with which service
    2. How to determine which IP address(es) go with which DNS provider (e.g. local, vs public)
  2. How to gate external DNS updates until services are deployed in the clusters.