Versions Compared

Key

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

...

Code Block
themeMidnight
titleDNS Provider Information Key Value PairUpdate Record API
collapsetrue
URL: /v2/project/{project-name}/dns-update-records/
POST BODY:
{
  "metadata": {
    "name": "name_of_dns_information_record",
    "description": "description of the DNS information",
    "userdata1": "some user data",
    "userdata2": "some different user data"
  },
  "spec": {
    "provider": "coredns",
    "external-dns-parameters": {
      "oneOf": [      ## schema-like (array structure not in body) - one of the following is selected to match the 'provider' - e.g. 'coredns' in this case
      {
        "aws-zone-type": "public",
        "aws-zone-tags": "zone tags",
        "aws-assume-role": "arn:aws:iam::123455567:role/external-dns",
        "aws-batch-change-size": 1000,
        "aws-batch-change-interval": "1s",
        "aws-evaluate-target-health": true,
        "no-aws-evaluate-target-health": true,
        "aws-api-retries": 3,
        "aws-prefer-cname": true
      },
      {
        "azure-config-file": "/etc/kubernetes/azure.json",
        "azure-resource-group": "resource group",
        "azure-subscription-id": "subscription id",
        "azure-user-assigned-identity-client-id": "client id"
      },
      {
        "coredns-prefix": "skydns"
      },
      {
        "rfc2136-host": "host.sample.com",
        "rfc2136-zone": "",
        "rfc2136-insecure": false,
        "rfc2136-tsig-keyname": "tsig key",
        "rfc2136-tsig-secret": "tsig secret",
        "rfc2136-tsig-secret-alg": "tsig secret alg",
        "rfc2136-tsig-axfr": "axfr",
        "request-timeout": "30s"
      }
      ],
      "contour-load-balancer": "heptio-contour/contour",   ## from here on, possible parameters used by external-dns - not all required
      "fqdn-template": "template",
      "combine-fqdn-annotation": true,
      "ignore-hostname-annotation": true,
      "compatibility": "mate",
      "publish-internal-services": true,
      "publish-host-ip": true,
      "service-type-filter": "all",
      "domain-filter": "example.com",
      "exclude-domains": "example.com",
      "zone-id-filter": "zone filter",
      "tls-ca": "tls ca path",
      "tls-client-cert": "tls client cert path",
      "tls-client-cert-key": "tls client cert key path",
      "policy": "sync",
      "registry": "txt",
      "txt-owner-id": "default",
      "txt-prefix": "custom string",
      "txt-cache-interval": "30s",
      "interval": "30s",
      "once": true,
      "dry-run": true,
      "log-format": "text",
      "metrics-address": ":7979",
      "log-level": "info"
    }
  }
}

...

for each DNS Update Record find the KV pair for this intent in either the logical cloud or a cluster prepare a
Code Block
themeMidnight
titleDNS Endpoint CRD generation algorithm
Intent processing algorithm
collapsetrue
	Get the TC Intent Set - and acquire the Inbound Intents
	Get the Generic Placement Intents to find the list of clusters that apply logical-clouds for this intentcomposite app
 	For  for each clusterinbound intent in the TC     forset (e.g. each sub-appApp with an external FQDN defined inbound intent)
		If externalName and publicDomain (e.g. in an ISTIO gatewayFQDN: <externalName>.<publicDomain>) are set
			Identify the logical-cloud associated with the     acquireApp
			Query the IP(s) associated with cluster and scope of logical-cloud KV for the DNS ProviderUpdate Record list associated with the logical cloud
			For all DNS Update  create DNSendpointCRD(s) manifests including a label with the DNSproviderNameRecords
				Create an external-dns deployment for the Provider information in the DNS Update Record
					Source will be DNSendpointCRs labeled with this composite-app/dns-context (e.g. logical cloud context)
			For each cluster in which this app is deployed
				Obtain the IP address for public network access
				Create/Update the DNSendpointCRD with endpoints for this App
		If externalName and localDomain (e.g. FQDN: <externalName>.<localDomain>) are set
			Query the cluster KV for the DNS Update Record list associated with the cluster
			For each logical cloud this app is deployed to
				For each cluster this app is deployed to
					For all DNS Update Records in the logical cloud 'dns-update-record-list' KV pair
						Create an external-dns deployment
							Source will be DNSendpointCRs labeled with this composite-app/dns-context (e.g. cluster context)
Create DNSendpointCRD records to be handled by this deployment

Notes:

  • There will need to be a way to find the appropriate set of IPs to use.  Some IPs will be appropriate for a public scope (e.g. update a DNS Provider associated with the logical cloud) and others may be local to the cluster network (e.g. cluster DNS Providers).

...