Versions Compared

Key

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

...

Each instance of a DNS Provider Information record has a unique name within the Project and is created and managed by the Traffic Controller API.  The name was be used as a 'key' and the associated 'value' will be a JSON object which contains record will contain all of the parameters needed to invoke 'external-dns' for that specific provider.  This key value pair is then added to the key value pair list of the logical cloud or the appropriate The unique (within a project) DNS Provider 'name' will be used to construct a key that is added to either the logical cloud or cluster(s) KV list to associate the DNS Provider Info with the cloud/cluster.  More than one DNS Provider Information record can be associated with a logical cloud or a cluster.Image Removed

TBD: format of key - such as: (composed of 'project', 'dns provider name'),  what would the value be ? (perhaps some IP address label?)


Image Added


The following example illustrates the DNS PRovider Key Value pair.  The idea is that the 'externalDnsParameters' portion will be used to create the parameters list for the 'external-dns' deployment that will be created to handle this DNS Provider.

Code Block
themeMidnight
titleDNS Provider Information Key Value Pair
"<dnsprovidername>URL: /v2/project/{project-name}/traffic-controller/dnsproviders
POST BODY:
{
  "name": {"<dnsprovidername>",
  "description": "description for DNS Provider",
  "externalDnsParameters": {   // list will be supplied to external-dns as parameters.
    "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.
  }
}

...

Code Block
themeMidnight
titlePOST
URL: /v2/project/{project-name}/rbcomposite-apps/{rbcomposite-app-name}/{rb-version}/traffic-intent-sets/{traffic-intent-set-name}/dnsproviders
POST BODY:
{
  "name": "<dnsprovidername>"   // values used as a key to find the DNS Provider Information details from the logical-cloud or cluster KV pair list.
}

...

Code Block
themeMidnight
titleGET
URL: /v2/project/{project-name}/rbcomposite-apps/{rbcomposite-app-name}/{rb-version}/traffic-intent-sets/{traffic-intent-set-name}/dnsproviders
GET RESPONSE BODY:
[
  {
    "name": "dnsprovidername1"
  },
  {
    "name": "dnsprovidername2"
  },
  {
    "name": "dnsprovidername3"
  },
  {
    "name": "dnsprovidername4"
  }
]

URL: /v2/project/{project-name}/rbcomposite-apps/{rbcomposite-app-name}/{rb-version}/traffic-intent-sets/{traffic-intent-set-name}/dnsproviders/dnsprovidername2
GET RESPONSE BODY:
{
  "name": "dnsprovidername2"
}

...