Browse Source

some cleanup

master
Vladimir Smagin 5 months ago
parent
commit
d3fbe71466
52 changed files with 2 additions and 10912 deletions
  1. +0
    -25
      .github/ISSUE_TEMPLATE/---bug-report.md
  2. +0
    -14
      .github/ISSUE_TEMPLATE/--enhancement-request.md
  3. +0
    -19
      .github/ISSUE_TEMPLATE/-support-request.md
  4. +0
    -69
      .github/labeler.yml
  5. +0
    -16
      .github/pull_request_template.md
  6. +0
    -44
      .github/workflows/ci.yml
  7. +0
    -70
      .golangci.yml
  8. +0
    -1
      .zappr.yaml
  9. +0
    -568
      CHANGELOG.md
  10. +0
    -22
      CONTRIBUTING.md
  11. +0
    -10
      OWNERS
  12. +0
    -15
      SECURITY_CONTACTS
  13. +0
    -18
      cloudbuild.yaml
  14. +2
    -2
      code-of-conduct.md
  15. +0
    -192
      docs/tutorials/akamai-fastdns.md
  16. +0
    -169
      docs/tutorials/alb-ingress.md
  17. +0
    -390
      docs/tutorials/alibabacloud.md
  18. +0
    -276
      docs/tutorials/aws-sd.md
  19. +0
    -429
      docs/tutorials/aws.md
  20. +0
    -408
      docs/tutorials/azure-private-dns.md
  21. +0
    -441
      docs/tutorials/azure.md
  22. +0
    -216
      docs/tutorials/cloudflare.md
  23. +0
    -219
      docs/tutorials/contour.md
  24. +0
    -232
      docs/tutorials/coredns.md
  25. +0
    -256
      docs/tutorials/designate.md
  26. +0
    -201
      docs/tutorials/digitalocean.md
  27. +0
    -221
      docs/tutorials/dnsimple.md
  28. +0
    -147
      docs/tutorials/dyn.md
  29. +0
    -161
      docs/tutorials/exoscale.md
  30. +0
    -82
      docs/tutorials/externalname.md
  31. +0
    -578
      docs/tutorials/gke.md
  32. +0
    -200
      docs/tutorials/hostport.md
  33. +0
    -262
      docs/tutorials/infoblox.md
  34. +0
    -304
      docs/tutorials/istio.md
  35. +0
    -309
      docs/tutorials/kube-ingress-aws.md
  36. +0
    -187
      docs/tutorials/linode.md
  37. +0
    -699
      docs/tutorials/nginx-ingress.md
  38. +0
    -206
      docs/tutorials/ns1.md
  39. +0
    -172
      docs/tutorials/openshift.md
  40. +0
    -161
      docs/tutorials/oracle.md
  41. +0
    -242
      docs/tutorials/ovh.md
  42. +0
    -170
      docs/tutorials/pdns.md
  43. +0
    -386
      docs/tutorials/public-private-route53.md
  44. +0
    -206
      docs/tutorials/rcodezero.md
  45. +0
    -171
      docs/tutorials/rdns.md
  46. +0
    -300
      docs/tutorials/rfc2136.md
  47. +0
    -209
      docs/tutorials/scaleway.md
  48. +0
    -32
      docs/tutorials/security-context.md
  49. +0
    -187
      docs/tutorials/transip.md
  50. +0
    -620
      docs/tutorials/ultradns.md
  51. +0
    -190
      docs/tutorials/vinyldns.md
  52. +0
    -188
      docs/tutorials/vultr.md

+ 0
- 25
.github/ISSUE_TEMPLATE/---bug-report.md View File

@ -1,25 +0,0 @@
---
name: "\U0001F41E Bug report"
about: Report a bug encountered while operating external-dns
title: ''
labels: kind/bug
assignees: ''
---
<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks!
-->
**What happened**:
**What you expected to happen**:
**How to reproduce it (as minimally and precisely as possible)**:
**Anything else we need to know?**:
**Environment**:
- External-DNS version (use `external-dns --version`):
- DNS provider:
- Others:

+ 0
- 14
.github/ISSUE_TEMPLATE/--enhancement-request.md View File

@ -1,14 +0,0 @@
---
name: "✨ Enhancement Request"
about: Suggest an enhancement to external-dns
title: ''
labels: kind/feature
assignees: ''
---
<!-- Please only use this template for submitting enhancement requests. This can be something like a new provider or a new gateway. -->
**What would you like to be added**:
**Why is this needed**:

+ 0
- 19
.github/ISSUE_TEMPLATE/-support-request.md View File

@ -1,19 +0,0 @@
---
name: "❓Support Request"
about: Support request or question relating to external-dns
title: ''
labels: triage/support
assignees: ''
---
<!--
STOP -- PLEASE READ!
GitHub is not the right place for support requests.
If you're looking for help, check our [docs](https://github.com/kubernetes-sigs/external-dns/tree/HEAD/docs).
You can also post your question on the [Kubernetes Slack #external-dns](https://kubernetes.slack.com/archives/C771MKDKQ).
-->

+ 0
- 69
.github/labeler.yml View File

@ -1,69 +0,0 @@
# Add 'docs' to any changes within 'docs' folder or any subfolders
docs:
- docs/**/*
# Add 'provider/alibaba' in file which starts with alibaba
provider/alibaba: provider/alibaba*
# Add 'provider/aws' in file which starts with aws
provider/aws: provider/aws*
# Add 'provider/azure' in file which starts with azure
provider/azure: provider/azure*
# Add 'provider/cloudflare' in file which starts with cloudflare
provider/cloudflare: provider/cloudflare*
# Add 'provider/coredns' in file which starts with coredns
provider/coredns: provider/coredns*
# Add 'provider/designate' in file which starts with designate
provider/designate: provider/designate*
# Add 'provider/digitalocean' in file which starts with digitalocean
provider/digitalocean: provider/digital_ocean*
# Add 'provider/dnssimple' in file which starts with dnssimple
provider/dnssimple: provider/dnssimple*
# Add 'provider/dyn' in file which starts with dyn
provider/dyn: provider/dyn*
# Add 'provider/exoscale' in file which starts with exoscale
provider/exoscale: provider/exoscale*
# Add 'provider/transip' in file which starts with transip
provider/transip: provider/transip*
# Add 'provider/rfc2136' in file which starts with rfc2136
provider/rfc2136: provider/rfc2136*
# Add 'provider/rdns' in file which starts with rdns
provider/rdns: provider/rdns*
# Add 'provider/powerdns' in file which starts with pdns
provider/powerdns: provider/pdns*
# Add 'provider/google' in file which starts with google
provider/google: provider/google*
# Add 'provider/infoblox' in file which starts with infoblox
provider/infoblox: provider/infoblox*
# Add 'provider/linode' in file which starts with linode
provider/linode: provider/linode*
# Add 'provider/ns1' in file which starts with ns1
provider/ns1: provider/ns1*
# Add 'provider/oci' in file which starts with oci
provider/oci: provider/oci*
# Add 'provider/vinyldns' in file which starts with vinyldns
provider/vinyldns: provider/vinyldns*
# Add 'provider/vultr' in file which starts with vultr
provider/vultr: provider/vultr*
# Add 'provider/ultradns' in file which starts with ultradns
provider/ultradns: provider/ultradns*

+ 0
- 16
.github/pull_request_template.md View File

@ -1,16 +0,0 @@
<!--
Please read https://github.com/kubernetes-sigs/external-dns#contributing before submitting
your pull request. Please fill in each section below to help us better prioritize your pull request. Thanks!
-->
**Description**
<!-- Please provide a summary of the change here. -->
<!-- Please link to all GitHub issue that this pull request implements(i.e. Fixes #123) -->
Fixes #ISSUE
**Checklist**
- [ ] Unit tests updated
- [ ] End user documentation updated

+ 0
- 44
.github/workflows/ci.yml View File

@ -1,44 +0,0 @@
name: Go
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v2
with:
go-version: ^1.14
id: go
- name: Check out code into the Go module directory
uses: actions/checkout@v2
- name: Install CI
run: |
go get -v -t -d ./...
if [ -f Gopkg.toml ]; then
curl https://raw.githubusercontent.com/golang/dep/master/install.sh | sh
dep ensure
fi
- name: Lint
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.30.0
make lint
- name: Test
run: make test
- name: Send coverage
uses: shogo82148/actions-goveralls@v1
with:
path-to-profile: profile.cov

+ 0
- 70
.golangci.yml View File

@ -1,70 +0,0 @@
linters-settings:
exhaustive:
default-signifies-exhaustive: false
goimports:
local-prefixes: sigs.k8s.io/external-dns
golint:
min-confidence: 0.9
maligned:
suggest-new: true
misspell:
locale: US
linters:
# please, do not use `enable-all`: it's deprecated and will be removed soon.
# inverted configuration with `enable-all` and `disable` is not scalable during updates of golangci-lint
disable-all: true
enable:
- deadcode
- depguard
- dogsled
- gofmt
- goimports
- golint
- goprintffuncname
- gosimple
- govet
- ineffassign
- interfacer
- misspell
- rowserrcheck
- staticcheck
- structcheck
- stylecheck
- typecheck
- unconvert
- unused
- varcheck
- whitespace
issues:
# Excluding configuration per-path, per-linter, per-text and per-source
exclude-rules:
- path: _test\.go
linters:
- deadcode
- depguard
- dogsled
- gofmt
- goimports
- golint
- goprintffuncname
- gosimple
- govet
- ineffassign
- interfacer
- misspell
- nolintlint
- rowserrcheck
- staticcheck
- structcheck
- stylecheck
- typecheck
- unconvert
- unused
- varcheck
- whitespace
run:
skip-files:
- endpoint/zz_generated.deepcopy.go

+ 0
- 1
.zappr.yaml View File

@ -1 +0,0 @@
X-Zalando-Team: teapot

+ 0
- 568
CHANGELOG.md View File

@ -1,568 +0,0 @@
## Unreleased
- Add quick start section to contributing docs (#1766) @seanmalloy
- Enhance pull request template @seanmalloy
- Improve errors context for AWS provider
- Scaleway Provider (#1643) @Sh4d1
- Enable azure_private_dns to work with non "AzurePublicCloud" clouds (#1578) @daddonpa
- Fix typos in documentation @ddymko
- Add Cloudflare documentation on use of `--zone-id-filter` (#1751) @loozhengyuan
- Fix: alibaba cloud keeping create record (#1682) @LXM
- Update all container registry references to use k8s.gcr.io @seanmalloy
- Provide available prometheus metrics in documentation @vinny-sabatini
- Fix index out of range when hostname has no dots (#1756) @chemasan
- Fixes test coverage with coveralls (#1755) @jgrumboe
- Add tutorial for GKE with workload identity (#1765) @ddgenome
- Fix NodePort with externaltrafficpolicy targets duplication @codearky
- Update contributing section in README (#1760) @seanmalloy
- Option to cache AWS zones list @bpineau
## v0.7.3 - 2020-08-05
- Fix: add serviceaccount name in kustomize deployment (#1689) @jmthvt
- Updates Oracle OCI SDK to latest (#1687) @ericrrath
- UltraDNS Provider (#1635) @kbhandari
- Update apiVersions in docs (#1690) @ddgenome
- use the github actions build status badge (#1702) @tariq1890
- Upgrade Oracle OCI SDK (#1688) @ericrrath
- update dependencies and minor dep tree cleanup (#1692) @tariq1890
- Update link for linode cloud manager (#1661) @phillc
- Remove occurrences of "master" from the project (#1636) @Raffo
- Create pull_request_template (#1662) @njuettner
- dependencies: Upgrade all k8s client-go dependent sources to v1.18.X (#1627) @josephglanville
- add GitHub Actions (#1657) @Raffo
- add new source for istio virtual services (#1607) @tariq1890
- use latest Alpine version in ExternalDNS dockerfile (#1655) @tariq1890
- Update TTL docs to confirm DNSimple support (#1547) @weppos
- rm unused flag param istio-ingressgateways (#1649) @tariq1890
- Upgrade istio httpbin from 1.0 to 1.6 version (#1640) @ikovnatskymiacar
- Add endpoints to kustomize base (#1638) @Raffo
- DigitalOcean: support multiple targets per endpoint (#1595) @tdyas
- Vultr : Version bump + changes (#1637) @ddymko
- Hetzner DNS service support (#1570) @21h
- Add OVH API rate limiting option (Fix #1546) (#1619) @Hugome
- Add kustomize base (#1631) @Raffo
- increase test timeout to fix intermittent failures of ingress tests (#1612) @tdyas
- AWS: change the order of the actions, DELETE before CREATE fixes #1411 (#1555) @OmerKahani
- Fix handling of DNS updates for RFC2136 provider. (#1613) @dmayle
- digitalocean: increase API page size (#1611) @tdyas
- improve linter quality for external-dns (#1618) @njuettner
- fix convert int to string bug (#1620) @tariq1890
## v0.7.2 - 2020-06-03
- Update blogpost in README (#1610) @vanhumbeecka
- Support for AWS Route53 in China (#1603) @greenu
- Update Govcloud provider hosted zones (#1592) @clhuang
- Fix issue with too large DNS messages (#1590) @dmayle
- use the latest linode go version (#1587) @tariq1890
- use istio client-go and clean up k8s deps (#1584) @tariq1890
- Add owners for cloudflare and coredns providers (#1582) @Raffo
- remove some code duplication in gateway source (#1575) @tariq1890
- update Contour IngressRoute deps (#1569) @stevesloka
- Make tests faster (#1568) @sheerun
- Fix scheduling of reconciliation (#1567) @sheerun
- fix minor typos in istio gateway source docs (#1566) @tariq1890
- Provider structure refactor (#1565) @Raffo
- Fix typo in ttl.md (#1564) @rtnpro
- Fix goreportcard warnings (#1561) @squat
- Use consistent headless service name in example (#1559) @lowkeyliesmyth
- Update go versions to 1.14.x that were missed in commit 99cebfcf from PR #1476 (#1554) @stealthybox
- Remove duplicate selector from DigitalOcean manifest (#1553) @ggordan
- Upgrade DNSimple client and add support for contexts (#1551) @weppos
- Upgrade github.com/miekg/dns to v1.1.25 (#1545) @davidcollom
- Fix updates in CloudFlare provider (#1542) @sheerun
- update readme for latest version (#1539) @elsesiy
- Improve Cloudflare tests in preparation to fix other issues (#1537) @sheerun
- Allow for custom property comparators (#1536) @sheerun
- fix typo (#1535) @tmatias
- Bump github.com/pkg/errors from 0.8.1 to 0.9.1 (#1531) @njuettner
- Bump github.com/digitalocean/godo from 1.19.0 to 1.34.0 (#1530) @njuettner
- Bump github.com/prometheus/client_golang from 1.0.0 to 1.5.1 (#1529) @njuettner
- Bump github.com/akamai/AkamaiOPEN-edgegrid-golang from 0.9.10 to 0.9.11 (#1528) @njuettner
- Fix RFC2316 Windows Documentation (#1516) @scottd018
- remove dependency on kubernetes/kubernetes (#1513) @tariq1890
- update akamai openapi dependency (#1511) @tariq1890
- Vultr Provider (#1509) @ddymko
- Add AWS region ap-east-1(HK) (#1497) @lovemai073
- Fix: file coredns.go is not `goimports`-ed (#1496) @njuettner
- Allow ZoneIDFilter for Cloudflare (#1494) @james-callahan
- update etcd dependency to latest version (#1485) @tariq1890
- Support for openshift routes (#1484) @jgrumboe
- add --txt-suffix feature (#1483) @jgrumboe
- update to go 1.14 (#1476) @jochen42
- Multiple A records support for the same FQDN (#1475) @ytsarev
- Implement annotation filter for CRD source (#1399) @ytsarev
## v0.7.1 - 2020-04-01
- Prometheus metric: timestamp of last successful sync with the DNS provider (#1480) @njuettner
- Bump alpine base image to 3.11.5 (#1477) @Annegies
- Docs: Add first maintainers in list (#1472) @Raffo
- Fix DomainFilter type in OVH provider (#1469) @ytsarev
- New provider: OVH (#1439) @Hugome
## v0.7.0 - 2020-03-10
- New source: Add support for Skipper's RouteGroup CRD (#1444) @szuecs
- Change DomainFilter to apply to records as well (#1442) @bl1nk
- Docs: Update docker image references of ExternalDNS (#1427) @tariq1890
- Remove duplicate targets from endpoints for headless services (#1426) @thomasv314
- Add issue templates to Github (#1424) @njuettner
- Azure: Don't use SPN to authenticate when clientid or secret is 'msi' (#1422) @norshtein
- Rfc2136: Add option to define minimum TTL (#1412) @ouzklcn
- Azure Private DNS: Fix updates of unchanged records (#1377) @jasper-d
- Headless service: Retrieve endpoints via Endpoints resource (#1005) @devkid
## v0.6.0 - 2020-02-11
- Azure Private DNS: Fix endless loop in zone-detection (#1397) @saidst
- Uprade golangci-lint and add megacheck & interface linters (#1390) @tariq1890
- Update alpine base image to 3.11 (#1387) @tariq1890
- New provider: Akamai FastDNS (#1384) @KarstenSiemer
- Docs: Fix broken links (#1382) @ttonline6
- Docs: Fix broken links (#1381) @ttonline6
- Docs: Update AWS documentation (#1380) @otterley
- Docs: istio.md: update existing external-dns to enable Istio Gateway DNS for customers (#1378) @marcellodesales
- Remove context.TODO()s in external-dns (#1374) @tariq1890
- Docs: add region for aws-sd external-dns deployment (#1367) @guitarrapc
- Docs: a how-to of a working GCP GKE app demo (#1365) @jpantsjoha
- Add ctx parameter to provider interface and AWS API (#1364) @tariq1890
- Add version to binary for --version flag (#1361) @linki
- Update aws sdk dep and golangci-lint release (#1360) @tariq1890
- Add support for human-friendly TTL values (#1237) @hypnoglow
- Change ApplyChanges in RFC2136 to batch update (#1164) @h3ndrk
- Add --watchers flag to allow controller to respond automatically to Ingress or Service updates (#687) @jlamillan
## v0.5.18 - 2020-01-09
- Use correct link to contributors guide (#1349) @szuecs
- AWS-SD: Rebrand AWS Auto Naming to Cloud Map (#1348) @vanekjar
- Add more linters and improve code quality (#1347) @tariq1890
- Suppress noisy logging of klog (#1344) @saidst
- Update VinylDNS documentation (#1342) @dgrizzanti
- Remove incubator references in README (#1341) @Raffo
- Rename project root package to sigs.k8s.io (#1334) @tariq1890
- Add CRD documentation and fix samples (#1332) @ytsarev
- Add support for multiple Istio ingress gateways (#1328) @ashleyschuett
- Enable image publishing to gcr.io via cloudbuild (#1326) @njuettner
- Corrected a typo in the Readme (#1323) @drewhemm
- Rework tutorial for Azure Private DNS (#1319) @saidst
- Correct typos and superflous spaces in the provider code (#1315) @stensonb
- Add missing bracket in CLI help output (#1308) @ekeih
- Add missing service account to deployment spec in the docs (#1305) @linki
- Bump the version of golangci-lint (#1296) @njuettner
- Fix broken link of ingress-gce and ingress-nginx (#1290) @sivanzcw
- Use apps/v1 for the deployment to be compatible with Kubernetes 1.16 (#1279) @scholzj
- Normalize function return and comments on exported type (#1277) @sivanzcw
- Use non-deprecated initializer with go context (#1271) @linki
- Fix several golint errors (#1270) @bysph
- Add Azure Private DNS Provider (#1269) @saidst
- Fix tutorial for kubernetes 1.16+ (#1268) @yujunz
- Add me-south region to list of canonical hosted zones (#1266) @poweroftrue
- Add gov region to list of canonical hosted zones (#1260) @helgi
- Update broken links to RDNS (#1259) @Slach
- Designate: add snippet for RBAC environment (#1254) @bavarianbidi
- Fix log-level parameter in tutorials (#1253) @bavarianbidi
- Improve RFC2136 documentation (#1251) @alex-orange
- Google Provider: Add support for batching updates (#1248) @vdesjardins
- Azure: add support for specifying user assigned identity's clientID to authenticate (#1247) @norshtein
- Automatically add provider labels on pull requests via Github actions (#1242) @njuettner
- Improve documentation for nginx ingress controller on AWS (#1234) @PiotrJander
- Use apps/v1 instead of extensions/v1beta1 in Deployment examples (#1225) @reegnz
- Add documentation to make the use of namespaces clearer (#1223) @dgrizzanti
- Add support for using Nodes as Source (#1218) @skoef
- Add missing RBAC permissions for the ServiceAccount in the docs (#1206) @dooman87
- Upgrade client-go + azure sdk (#1195) @timja
- RFC2136: Add support for batching updates (#1164) @h3ndrk
- Fix confusing arrow direction in the Azure tutorial (#1163) @adipascu
- Route53: Add RBAC manifest and update wording around IAM policy (#1149) @dkeightley
- Route53: Add support for all AWS Route53 routing policies; add additional Setldentifier abstraction layer (#1008) @devkid
## v0.5.17 - 2019-09-17
- Exoscale: add context support (#1193) @greut
- Cloudflare: Support API Token Auth (#1189) @Evesy
- AWS: Fix IAM Roles for Service Accounts permission problem (#1185) @serialx
- Core: Upgrade go version to 1.13 in external-dns (#1184) @tariq1890
- AWS: Update the AWS SDK to support Web Identity providers for IAM credentials (#1182) @MarcusNoble
- Docs: Update rfc2136 tutorial for use with Microsoft DNS (#1178) @bjschafer
- AWS: Update the AWS go SDK to support AWS IAM for Service Accounts (#1172) @micahhausler
- AWS-SD: Add support for AWS Network Load Balancers (#1170) @vanekjar
- Core: Add create-only policy (#1160) @danieldabate
- AWS: Fix --aws-api-retries (#1158) @coreypobrien
- Source: Support delegate Heptio Contour IngressRoutes (#1144) @jonasrmichel
- Core: TXTRegistry: do not overwrite labels of records returned by the provider (#1136) @multi-io
- Infoblox: Fixing incorrect match of zone dns names (#1128) @gregsidelinger
- Source: Improvements to the source CRD (#1107) @JoaoBraveCoding
- Core: Fix txt prefix bug (#1013) @p53
## v0.5.16 - 2019-08-16
- Fix flaky unit test in provider package (#1151) @tariq1890
- Dockerfile: Update version of base images (#1148) @tariq1890
- DigitalOcean: Update `godo` to the latest stable version (#1145) @tariq1890
- Fix build pipeline for Go v1.13 (#1142) @linki
- AWS: Add Hosted Zone ID to logging output (#1129) @helgi
- IstioGateway: Support namespaces on hostnames (#1124) @dcherman
- AWS: Document `--prefer-cname` flag (#1123) @dbluxo
- Add Tutorial for DNSimple provider (#1121) @marc-sensenich
- Update Go version and golangci-lint to the latest release (#1120) @njuettner
- Allow compilation on 32bit machines (#1116) @mylesagray
- AWS: Allow to force usage of CNAME over ALIAS (#1103) @linki
- CoreDNS: add option to specify prefix name (#1102) @xunpan
- New provider: Rancher DNS (RDNS) (#1098) @Jason-ZW
- Document where e2e tests are currently located (#1094) @jaypipes
- Add initial KEP for ExternalDNS (#1092) @Raffo
- Update Dockerfiles to follow best practices (#1091) @taharah
- New Source: Heptio Contour IngressRoute (#1084) @jonasrmichel
- AWS: Add dualstack support with ALB ingress controllers (#1079) @twilfong
- Allow handling of multiple Oracle Cloud (OCI) zones (#1061) @suman-ganta
- Namespace exposed metrics with the external_dns prefix (#794) @linki
## v0.5.15 - 2019-07-03
- RFC2136: Fix when merging multiple targets (#1082) @hachh
- New provider VinylDNS (#1080) @dgrizzanti
- Core: Fix for DomainFilter exclusions (#1059) @cmattoon
- Core: Update aws-go-sdk to be compatible with kube-aws-iam-controller (#1054) @mikkeloscar
- RFC2136: Log RR adds/deletes as Info (#1041) @gclawes
- Docs: Cloudflare set ttl annotation for proxied entries to 1 (#1039) @MiniJerome
- Core: Install ca-certificates (#1038) @dryewo
- Cloudflare: Fix provider to return a single endpoint for each name/type (#1034) @shasderias
- Core: Sanitize dockerfiles for external-dns (#1033) @tariq1890
- Core: Add empty source (#1032) @anandkumarpatel
- Google: Zones should be filter by their ID and Name (#1031) @simonswine
- Core: Fix panic on empty targets for custom resources (#1029) @arturo-c
- Core: Support externalTrafficPolicy annotation with "local" mode for NodePort service (#1023) @yverbin
- Core: Add support for ExternalName services (#1018) @mironov
## v0.5.14 - 2019-05-14
- Docs: Update aws.md (#1009) @pawelprazak
- New provider TransIP (#1007) @skoef
- Docs: Add docker image faq (#1006) @Raffo
- DNSimple: Support apex records (#1004) @jbowes
- NS1: Add --ns1-endpoint and --ns1-ignoressl flags (#1002) @mburtless
- AWS: Cache the endpoints on the controller loop (#1001) @fraenkel
- Core: Supress Kubernetes logs (#991) @njuettner
- Core: distroless/static image (#989) @jharshman
- Core: Headless service missing DNS entry (#984) @yverbin
- New provider NS1 (#963) @mburtless
- Core: Add Cloud Foundry routes as a source (#955) @dgrizzanti
## v0.5.13 - 2019-04-18
- Azure: Support multiple A targets (#987) @michaelfig
- Core: Fixing what seems an obvious omission of /github.com/ dir in Dockerfile (#985) @llamahunter
- Docs: GKE tutorial remove disable-addon argument (#978) @ggordan
- Docs: Alibaba Cloud config file missing by enable sts token (#977) @xianlubird
- Docs: Alibaba Cloud fix wrong arg in manifest (#976) @iamzhout
- AWS: Set a default TTL for Alias records (#975) @fraenkel
- Cloudflare: Add support for multiple target addresses (#970) @nta
- AWS: Adding China ELB endpoints and hosted zone id's (#968) @jfillo
- AWS: Streamline ApplyChanges (#966) @fraenkel
- Core: Switch to go modules (#960) @njuettner
- Docs: AWS how to check if your cluster has a RBAC (#959) @confiq
- Docs: AWS remove superfluous trailing period from hostname (#952) @hobti01
- Core: Add generic logic to remove secrets from logs (#951) @dsbrng25b
- RFC2136: Remove unnecessary parameter (#948) @ChristianMoesl
- Infoblox: Reduce verbosity of logs (#945) @dsbrng25b
## v0.5.12 - 2019-03-26
- Bumping istio to 1.1.0 (#942) @venezia
- Docs: Added stability matrix and minor improvements to README (#938) @Raffo
- Docs: Added a reference to a blogpost which uses ExternalDNS in a CI/CD setup (#928) @vanhumbeecka
- Use k8s informer cache instead of making active API GET requests (#917) @jlamillan
- Docs: Tiny clarification about two available deployment methods (#935) @przemolb
- Add support for multiple Istio IngressGateway LoadBalancer Services (#907) @LorbusChris
- Set log level to debug when axfr is disabled (#932) @arief-hidayat
- Infoblox provider support for DNS view (#895) @dsbrng25b
- Add RcodeZero Anycast DNS provider (#874) @dklesev
- Docs: Dropping owners (#929) @njuettner
- Docs: Added description for multiple dns name (#911) @st1t
- Docs: Clarify that hosted zone identifier is to be used (#915) @dirkgomez
- Docs: Make dep step which may be needed to run make build (#913) @dirkgomez
- PowerDNS: Fixed Domain Filter Bug (#827) @anandsinghkunwar
- Allow hostname annotations to be ignored (#745) @anandkumarpatel
- RFC2136: Fixed typo in debug output (#899) @hpandeycodeit
## v0.5.11 - 2019-02-11
- Fix constant updating issue introduced with v0.5.10 (#886) @jhohertz
- Ignore evaluate target health for calculating changes for AWS (#880) @linki
- Pagination for cloudflare zones (#873) @njuettner
## v0.5.10 - 2019-01-28
- Docs: Improve documentation regarding Alias (#868) @alexnederlof
- Adds a new flag `--aws-api-retries` which allows overriding the number of retries (#858) @viafoura
- Docs: Make awscli commands use JSON output (#849) @ifosch
- Docs: Add missing apiVersion to Ingress resource (#847) @shlao
- Fix for AWS private DNS zone (#844) @xianlubird
- Add support for AWS ELBs in eu-north-1 (#843) @argoyle
- Create a SECURITY_CONTACTS file (#842) @njuettner
- Use correct product name for Google Cloud DNS (#841) @seils
- Change default AWSBatchChangeSize to 1000 (#839) @medzin
- Fix dry-run mode in rfc2136 provider (#838) @lachlancooper
- Fix typos in rfc2136 provider (#837) @lachlancooper
- rfc2136 provider: one IP Target per RRSET (#836) @ivanfilippov
- Normalize DNS names during planning (#833) @justinsb
- Implement Stringer for planTableRow (#832) @justinsb
- Docs: Better security granularity concerning external dns service principal for Azure (#829) @DenisBiondic
- Docs: Update links in Cloudflare docs (#824) @PascalKu
- Docs: Add metrics info to FAQ (#822) @zachyam
- Docs: Update nameserver IPs in coredns.md (#820) @mozhuli
- Docs: Fix commands to cleanup Cloudflare (#818) @acrogenesis
- Avoid unnecessary updating for CRD resource (#810) @xunpan
- Fix issues with CoreDNS provider and more than 1 targets (#807) @xunpan
- AWS: Add zone tag filter (#804) @csrwng
- Docs: Update CoreDNS tutorial with RBAC manifest (#803) @Lujeni
- Use SOAP API to improve DYN's provider's performance (#799) @sanyu
- Expose managed resources and records as metrics (#793) @linki
- Docs: Updating Azure tutorial (#788) @pelithne
- Improve errors in Records() of Infoblox provider (#785) @dsbrng25b
- Change default apiVersion of CRD Source (#774) @dsbrng25b
- Allow setting Cloudflare proxying on a per-Ingress basis (#650) @eswets
- Support A record for multiple IPs for headless services (#645) @toshipp
## v0.5.9 - 2018-11-22
- Core: Update delivery.yaml to new format (#782) @linki
- Core: Adjust gometalinter timeout by setting env var (#778) @njuettner
- Provider **Google**: Panic assignment to entry in nil map (#776) @njuettner
- Docs: Fix typos (#769) @mooncak
- Docs: Remove duplicated words (#768) @mooncak
- Provider **Alibaba**: Alibaba Cloud Provider Fix Multiple Subdomains Bug (#767) @xianlubird
- Core: Add Traefik to the supported list of ingress controllers (#764) @coderanger
- Provider **Dyn**: Fix some typos in returned messages in dyn.go (#760) @AdamDang
- Docs: Update Azure documentation (#756) @pascalgn
- Provider **Oracle**: Oracle doc fix (add "key:" to secret) (#750) @CaptTofu
- Core: Docker MAINTAINER is deprecated - using LABEL instead (#747) @helgi
- Core: Feature add alias annotation (#742) @vaegt
- Provider **RFC2136**: Fix rfc2136 - setup fails issue and small docs (#741) @antlad
- Core: Fix nil map access of endpoint labels (#739) @shashidharatd
- Provider **PowerDNS**: PowerDNS Add DomainFilter support (#737) @ottoyiu
- Core: Fix domain-filter matching logic to not match similar domain names (#736) @ottoyiu
- Core: Matching entire string for wildcard in txt records with prefixes (#727) @etopeter
- Provider **Designate**: Fix TLS issue with OpenStack auth (#717) @FestivalBobcats
- Provider **AWS**: Add helper script to update route53 txt owner entries (#697) @efranford
- Provider **CoreDNS**: Migrate to use etcd client v3 for CoreDNS provider (#686) @shashidharatd
- Core: Create a non-root user to run the container process (#684) @coderanger
- Core: Do not replace TXT records with A/CNAME records in planner (#581) @jchv
## v0.5.8 - 2018-10-11
- New Provider: RFC2136 (#702) @antlad
- Add Linode to list of supported providers (#730) @cliedeman
- Correctly populate target health check on existing records (#724) @linki
- Don't erase Endpoint labels (#713) @sebastien-prudhomme
## v0.5.7 - 2018-09-27
- Pass all relevant CLI flags to AWS provider (#719) @linki
- Replace glog with a noop logger (#714) @linki
- Fix handling of custom TTL values with Google DNS. (#704) @kevinmdavis
- Continue even if node listing fails (#701) @pascalgn
- Fix Host field in HTTP request when using pdns provider (#700) @peterbale
- Allow AWS batching to fully sync on each run (#699) @bartelsielski
## v0.5.6 - 2018-09-07
- Alibaba Cloud (#696) @xianlubird
- Add Source implementation for Istio Gateway (#694) @jonasrmichel
- CRD source based on getting endpoints from CRD (#657) @shashidharatd
- Add filter by service type feature (#653) @Devatoria
- Add generic metrics for Source & Registry Errors (#652) @wleese
## v0.5.5 - 2018-08-17
- Configure req timeout calling k8s APIs (#681) @jvassev
- Adding assume role to aws_sd provider (#676) @lb-saildrone
- Dyn: cache records per zone using zone's serial number (#675) @jvassev
- Linode provider (#674) @cliedeman
- Cloudflare Link Language Specificity (#673) @christopherhein
- Retry calls to dyn on ErrRateLimited (#671) @jvassev
- Add support to configure TTLs on DigitalOcean (#667) @andrewsomething
- Log level warning option (#664) @george-angel
- Fix usage of k8s.io/client-go package (#655) @shashidharatd
- Fix for empty target annotation (#647) @rdrgmnzs
- Fix log message for #592 when no updates in hosted zones (#634) @audip
- Add aws-evaluate-target-health flag (#628) @peterbale
- Exoscale provider (#625) @FaKod @greut
- Oracle Cloud Infrastructure DNS provider (#626) @prydie
- Update DO CNAME type API request to prevent error 422 (#624) @nenadilic84
- Fix typo in cloudflare.md (#623) @derekperkins
- Infoblox-go-client was only setting timeout for http.Transport.ResponseHeaderTimeout instead of for http.Client (#615) @khrisrichardson
- Adding a flag to optionally publish hostIP instead of podIP for headless services (#597) @Arttii
## v0.5.4 - 2018-06-28
- Only store endpoints with their labels in the cache (#612) @njuettner
- Read hostnames from spec.tls.hosts on Ingress object (#611) @ysoldak
- Reorder provider/aws suitable-zones tests (#608) @elordahl
- Adds TLS flags for pdns provider (#607) @jhoch-palantir
- Update RBAC for external-dns to list nodes (#600) @njuettner
- Add aws max change count flag (#596) @peterbale
- AWS provider: Properly check suitable domains (#594) @elordahl
- Annotation with upper-case hostnames block further updates (#579) @njuettner
## v0.5.3 - 2018-06-15
- Print a message if no hosted zones match (aws provider) (#592) @svend
- Add support for NodePort services (#559) @grimmy
- Update azure.md to fix protocol value (#593) @JasonvanBrackel
- Add cache to limit calls to providers (#589) @jessfraz
- Add Azure MSI support (#578) @r7vme
- CoreDNS/SkyDNS provider (#253) @istalker2
## v0.5.2 - 2018-05-31
- DNSimple: Make DNSimple tolerant of unknown zones (#574) @jbowes
- Cloudflare: Custom record TTL (#572) @njuettner
- AWS ServiceDiscovery: Implementation of AWS ServiceDiscovery provider (#483) @vanekjar
- Update docs to latest changes (#563) @Raffo
- New source - connector (#552) @shashidharatd
- Update AWS SDK dependency to v1.13.7 @vanekjar
## v0.5.1 - 2018-05-16
- Refactor implementation of sync loop to use `time.Ticker` (#553) @r0fls
- Document how ExternalDNS gets permission to change AWS Route53 entries (#557) @hjacobs
- Fix CNAME support for the PowerDNS provider (#547) @kciredor
- Add support for hostname annotation in Ingress resource (#545) @rajatjindal
- Fix for TTLs being ignored on headless Services (#546) @danbondd
- Fix failing tests by giving linters more time to do their work (#548) @linki
- Fix misspelled flag for the OpenStack Designate provider (#542) @zentale
- Document additional RBAC rules needed to read Pods (#538) @danbondd
## v0.5.0 - 2018-04-23
- Google: Correctly filter records that don't match all filters (#533) @prydie @linki
- AWS: add support for AWS Network Load Balancers (#531) @linki
- Add a flag that allows FQDN template and annotations to combine (#513) @helgi
- Fix: Use PodIP instead of HostIP for headless Services (#498) @nrobert13
- Support a comma separated list for the FQDN template (#512) @helgi
- Google Provider: Add auto-detection of Google Project when running on GCP (#492) @drzero42
- Add custom TTL support for DNSimple (#477) @jbowes
- Fix docker build and delete vendor files which were not deleted (#473) @njuettner
- DigitalOcean: DigitalOcean creates entries with host in them twice (#459) @njuettner
- Bugfix: Retrive all DNSimple response pages (#468) @jbowes
- external-dns does now provide support for multiple targets for A records. This is currently only supported by the Google Cloud DNS provider (#418) @dereulenspiegel
- Graceful handling of misconfigure password for dyn provider (#470) @jvassev
- Don't log sensitive data on start (#463) @jvassev
- Google: Improve logging to help trace misconfigurations (#388) @stealthybox
- AWS: In addition to the one best public hosted zone, records will be added to all matching private hosted zones (#356) @coreypobrien
- Every record managed by External DNS is now mapped to a kubernetes resource (service/ingress) @ideahitme
- New field is stored in TXT DNS record which reflects which kubernetes resource has acquired the DNS name
- Target of DNS record is changed only if corresponding kubernetes resource target changes
- If kubernetes resource is deleted, then another resource may acquire DNS name
- "Flapping" target issue is resolved by providing a consistent and defined mechanism for choosing a target
- New `--zone-id-filter` parameter allows filtering by zone id (#422) @vboginskey
- TTL annotation check for azure records (#436) @stromming
- Switch from glide to dep (#435) @bkochendorfer
## v0.4.8 - 2017-11-22
- Allow filtering by source annotation via `--annotation-filter` (#354) @khrisrichardson
- Add support for Headless hostPort services (#324) @Arttii
- AWS: Added change batch limiting to a maximum of 4000 Route53 updates in one API call. Changes exceeding the limit will be dropped but all related changes by hostname are preserved within the limit. (#368) @bitvector2
- Google: Support configuring TTL by annotation: `external-dns.alpha.kubernetes.io/ttl`. (#389) @stealthybox
- Infoblox: add option `--no-infoblox-ssl-verify` (#378) @khrisrichardson
- Inmemory: add support to specify zones for inmemory provider via command line (#366) @ffledgling
## v0.4.7 - 2017-10-18
- CloudFlare: Disable proxy mode for TXT and others (#361) @dunglas
## v0.4.6 - 2017-10-12
- [AWS Route53 provider] Support customization of DNS record TTL through the use of annotation `external-dns.alpha.kubernetes.io/ttl` on services or ingresses (#320) @kevinjqiu
- Added support for [DNSimple](https://dnsimple.com/) as DNS provider (#224) @jose5918
- Added support for [Infoblox](https://www.infoblox.com/products/dns/) as DNS provider (#349) @khrisrichardson
## v0.4.5 - 2017-09-24
- Add `--log-level` flag to control log verbosity and remove `--debug` flag in favour of `--log-level=debug` (#339) @ultimateboy
- AWS: Allow filtering for private and public zones via `--aws-zone-type` flag (#329) @linki
- CloudFlare: Add `--cloudflare-proxied` flag to toggle CloudFlare proxy feature (#340) @dunglas
- Kops Compatibility: Isolate ALIAS type in AWS provider (#248) @sethpollack
## v0.4.4 - 2017-08-17
- ExternalDNS now services of type `ClusterIP` with the use of the `--publish-internal-services`. Enabling this will now create the apprioriate A records for the given service's internal ip. @jrnt30
- Fix to have external target annotations on ingress resources replace existing endpoints instead of appending to them (#318)
## v0.4.3 - 2017-08-10
- Support new `external-dns.alpha.kubernetes.io/target` annotation for Ingress (#312)
- Fix for wildcard domains in Route53 (#302)
## v0.4.2 - 2017-08-03
- Fix to support multiple hostnames for Molecule Software's [route53-kubernetes](https://github.com/wearemolecule/route53-kubernetes) compatibility (#301)
## v0.4.1 - 2017-07-28
- Fix incorrect order of constructor parameters (#298)
## v0.4.0 - 2017-07-21
- ExternalDNS now supports three more DNS providers:
* [AzureDNS](https://azure.microsoft.com/en-us/services/dns) @peterhuene
* [CloudFlare](https://www.cloudflare.com/de/dns) @njuettner
* [DigitalOcean](https://www.digitalocean.com/products/networking) @njuettner
- Fixed a bug that prevented ExternalDNS to be run on Tectonic clusters @sstarcher
- ExternalDNS is now a full replace for Molecule Software's `route53-kubernetes` @iterion
- The `external-dns.alpha.kubernetes.io/hostname` annotation accepts now a comma separated list of hostnames and a trailing period is not required anymore. @totallyunknown
- The flag `--domain-filter` can be repeated multiple times like `--domain-filter=example.com --domain-filter=company.org.`. @totallyunknown
- A trailing period is not required anymore for `--domain-filter` when AWS (or any other) provider is used. @totallyunknown
- We added a FakeSource that generates random endpoints and allows to run ExternalDNS without a Kubernetes cluster (e.g. for testing providers) @ismith
- All HTTP requests to external APIs (e.g. DNS providers) generate client side metrics. @linki
- The `--zone` parameter was removed in favor of a provider independent `--domain-filter` flag. @linki
- All flags can now also be set via environment variables. @linki
## v0.3.0 - 2017-05-08
Features:
- Changed the flags to the v0.3 semantics, the following has changed:
1. The TXT registry is used by default and has an owner ID of `default`
2. `--dry-run` is disabled by default
3. The `--compatibility` flag was added and takes a string instead of a boolean
4. The `--in-cluster` flag has been dropped for auto-detection
5. The `--zone` specifier has been replaced by a `--domain-filter` that filters domains by suffix
- Improved logging output
- Generate DNS Name from template for services/ingress if annotation is missing but `--fqdn-template` is specified
- Route 53, Google CloudDNS: Support creation of records in multiple hosted zones.
- Route 53: Support creation of ALIAS records when endpoint target is a ELB/ALB.
- Ownership via TXT records
1. Create TXT records to mark the records managed by External DNS
2. Supported for AWS Route53 and Google CloudDNS
3. Configurable TXT record DNS name format
- Add support for altering the DNS record modification behavior via policies.
## v0.2.0 - 2017-04-07
Features:
- Support creation of CNAME records when endpoint target is a hostname.
- Allow omitting the trailing dot in Service annotations.
- Expose basic Go metrics via Prometheus.
Documentation:
- Add documentation on how to setup ExternalDNS for Services on AWS.
## v0.1.1 - 2017-04-03
Bug fixes:
- AWS Route 53: Do not submit request when there are no changes.
## v0.1.0 - 2017-03-30 (KubeCon)
Features:
- Manage DNS records for Services with `Type=LoadBalancer` on Google CloudDNS.

+ 0
- 22
CONTRIBUTING.md View File

@ -1,22 +0,0 @@
# Contributing Guidelines
Welcome to Kubernetes. We are excited about the prospect of you joining our [community](https://git.k8s.io/community)! The Kubernetes community abides by the CNCF [code of conduct](code-of-conduct.md). Here is an excerpt:
_As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities._
## Getting Started
We have full documentation on how to get started contributing here:
- [Contributor License Agreement](https://git.k8s.io/community/CLA.md) Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests
- [Kubernetes Contributor Guide](https://git.k8s.io/community/contributors/guide) - Main contributor documentation, or you can just jump directly to the [contributing section](https://git.k8s.io/community/contributors/guide#contributing)
- [Contributor Cheat Sheet](https://git.k8s.io/community/contributors/guide/contributor-cheatsheet) - Common resources for existing developers
## Mentorship
- [Mentoring Initiatives](https://git.k8s.io/community/mentoring) - We have a diverse set of mentorship programs available that are always looking for volunteers!
## Contact Information
- [Slack channel](https://kubernetes.slack.com/messages/external-dns)
- [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-network)

+ 0
- 10
OWNERS View File

@ -1,10 +0,0 @@
# See the OWNERS file documentation:
# https://github.com/kubernetes/community/blob/HEAD/contributors/guide/owners.md
approvers:
- raffo
- njuettner
emeritus_approvers:
- hjacobs
- linki

+ 0
- 15
SECURITY_CONTACTS View File

@ -1,15 +0,0 @@
# Defined below are the security contacts for this repo.
#
# They are the contact point for the Product Security Team to reach out
# to for triaging and handling of incoming issues.
#
# The below names agree to abide by the
# [Embargo Policy](https://github.com/kubernetes/sig-release/blob/HEAD/security-release-process-documentation/security-release-process.md#embargo-policy)
# and will be removed and replaced if they violate that agreement.
#
# DO NOT REPORT SECURITY VULNERABILITIES DIRECTLY TO THESE NAMES, FOLLOW THE
# INSTRUCTIONS AT https://kubernetes.io/security/
njuettner
hjacobs
raffo

+ 0
- 18
cloudbuild.yaml View File

@ -1,18 +0,0 @@
# See https://cloud.google.com/cloud-build/docs/build-config
timeout: 1200s
options:
substitution_option: ALLOW_LOOSE
steps:
- name: "gcr.io/k8s-testimages/gcb-docker-gcloud:v20190906-745fed4"
entrypoint: make
env:
- DOCKER_CLI_EXPERIMENTAL=enabled
- VERSION=$_GIT_TAG
- PULL_BASE_REF=$_PULL_BASE_REF
args:
- release.staging
substitutions:
# _GIT_TAG will be filled with a git-based tag for the image, of the form vYYYYMMDD-hash, and
# can be used as a substitution
_GIT_TAG: "12345"
_PULL_BASE_REF: 'master'

+ 2
- 2
code-of-conduct.md View File

@ -1,3 +1,3 @@
# Kubernetes Community Code of Conduct
# Code of Conduct
Please refer to our [Kubernetes Community Code of Conduct](https://git.k8s.io/community/code-of-conduct.md)
In my repository you are free. Be free.

+ 0
- 192
docs/tutorials/akamai-fastdns.md View File

@ -1,192 +0,0 @@
# Setting up Akamai FastDNS
## Prerequisites
Akamai FastDNS provider support was added via [this PR](https://github.com/kubernetes-sigs/external-dns/pull/1384), thus you need to use a release where this pr is included. This should be at least v0.5.18
The Akamai FastDNS provider expects that your zones, you wish to add records to, already exists
and are configured correctly. It does not add, remove or configure new zones in anyway.
To do this please refer to the [FastDNS documentation](https://learn.akamai.com/en-us/products/web_performance/fast_dns.html).
Additional data you will have to provide:
* Service Consumer Domain
* Access token
* Client token
* Client Secret
Make these available to external DNS somehow. In the following example a secret is used by referencing the secret and its keys in the env section of the deployment.
If you happen to have questions regarding authentication, please refer to the [API Client Authentication documentation](https://developer.akamai.com/legacy/introduction/Client_Auth.html)
## Deployment
Deploying external DNS for Akamai is actually nearly identical to deploying
it for other providers. This is what a sample `deployment.yaml` looks like:
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
labels:
app.kubernetes.io/name: external-dns
app.kubernetes.io/version: v0.6.0
spec:
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: external-dns
template:
metadata:
labels:
app.kubernetes.io/name: external-dns
app.kubernetes.io/version: v0.6.0
spec:
# Only use if you're also using RBAC
# serviceAccountName: external-dns
containers:
- name: external-dns
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
args:
- --source=ingress # or service or both
- --provider=akamai
- --registry=txt
- --txt-owner-id={{ owner-id-for-this-external-dns }}
env:
- name: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN
valueFrom:
secretKeyRef:
name: external-dns
key: EXTERNAL_DNS_AKAMAI_SERVICECONSUMERDOMAIN
- name: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN
valueFrom:
secretKeyRef:
name: external-dns
key: EXTERNAL_DNS_AKAMAI_CLIENT_TOKEN
- name: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: external-dns
key: EXTERNAL_DNS_AKAMAI_CLIENT_SECRET
- name: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN
valueFrom:
secretKeyRef:
name: external-dns
key: EXTERNAL_DNS_AKAMAI_ACCESS_TOKEN
```
## RBAC
If your cluster is RBAC enabled, you also need to setup the following, before you can run external-dns:
```yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: external-dns
namespace: default
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: external-dns
rules:
- apiGroups: [""]
resources: ["services","endpoints","pods"]
verbs: ["get","watch","list"]
- apiGroups: ["extensions","networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: external-dns-viewer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: external-dns
subjects:
- kind: ServiceAccount
name: external-dns
namespace: default
```
## Verify ExternalDNS works (Ingress example)
Create an ingress resource manifest file.
> For ingress objects ExternalDNS will create a DNS record based on the host specified for the ingress object.
```yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx" # use the one that corresponds to your ingress controller.
spec:
rules:
- host: foo.bar.com
http:
paths:
- backend:
serviceName: foo
servicePort: 80
```
## Verify ExternalDNS works (Service example)
Create the following sample application to test that ExternalDNS works.
> For services ExternalDNS will look for the annotation `external-dns.alpha.kubernetes.io/hostname` on the service and use the corresponding value.
> If you want to give multiple names to service, you can set it to external-dns.alpha.kubernetes.io/hostname with a comma separator.
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
external-dns.alpha.kubernetes.io/hostname: nginx.external-dns-test.my-org.com
spec:
type: LoadBalancer
ports:
- port: 80
name: http
targetPort: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
name: http
```
**Important!**: Don't run dig, nslookup or similar immediately. You'll get hit by [negative DNS caching](https://tools.ietf.org/html/rfc2308), which is hard to flush.
Wait about 30s-1m (interval for external-dns to kick in)

+ 0
- 169
docs/tutorials/alb-ingress.md View File

@ -1,169 +0,0 @@
# Using ExternalDNS with alb-ingress-controller
This tutorial describes how to use ExternalDNS with the [aws-alb-ingress-controller][1].
[1]: https://kubernetes-sigs.github.io/aws-alb-ingress-controller/
## Setting up ExternalDNS and aws-alb-ingress-controller
Follow the [AWS tutorial](aws.md) to setup ExternalDNS for use in Kubernetes clusters
running in AWS. Specify the `source=ingress` argument so that ExternalDNS will look
for hostnames in Ingress objects. In addition, you may wish to limit which Ingress
objects are used as an ExternalDNS source via the `ingress-class` argument, but
this is not required.
For help setting up the ALB Ingress Controller, follow the [Setup Guide][2].
[2]: https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/controller/setup/
Note that the ALB ingress controller uses the same tags for [subnet auto-discovery][3]
as Kubernetes does with the AWS cloud provider.
[3]: https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/controller/config/#subnet-auto-discovery
In the examples that follow, it is assumed that you configured the ALB Ingress
Controller with the `ingress-class=alb` argument (not to be confused with the
same argument to ExternalDNS) so that the controller will only respect Ingress
objects with the `kubernetes.io/ingress.class` annotation set to "alb".
## Deploy an example application
Create the following sample "echoserver" application to demonstrate how
ExternalDNS works with ALB ingress objects.
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: echoserver
spec:
replicas: 1
selector:
matchLabels:
app: echoserver
template:
metadata:
labels:
app: echoserver
spec:
containers:
- image: gcr.io/google_containers/echoserver:1.4
imagePullPolicy: Always
name: echoserver
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: echoserver
spec:
ports:
- port: 80
targetPort: 8080
protocol: TCP
type: NodePort
selector:
app: echoserver
```
Note that the Service object is of type `NodePort`. We don't need a Service of
type `LoadBalancer` here, since we will be using an Ingress to create an ALB.
## Ingress examples
Create the following Ingress to expose the echoserver application to the Internet.
```yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
kubernetes.io/ingress.class: alb
name: echoserver
spec:
rules:
- host: echoserver.mycluster.example.org
http: &echoserver_root
paths:
- backend:
serviceName: echoserver
servicePort: 80
path: /
- host: echoserver.example.org
http: *echoserver_root
```
The above should result in the creation of an (ipv4) ALB in AWS which will forward
traffic to the echoserver application.
If the `source=ingress` argument is specified, then ExternalDNS will create DNS
records based on the hosts specified in ingress objects. The above example would
result in two alias records being created, `echoserver.mycluster.example.org` and
`echoserver.example.org`, which both alias the ALB that is associated with the
Ingress object.
Note that the above example makes use of the YAML anchor feature to avoid having
to repeat the http section for multiple hosts that use the exact same paths. If
this Ingress object will only be fronting one backend Service, we might instead
create the following:
```yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
external-dns.alpha.kubernetes.io/hostname: echoserver.mycluster.example.org, echoserver.example.org
kubernetes.io/ingress.class: alb
name: echoserver
spec:
rules:
- http:
paths:
- backend:
serviceName: echoserver
servicePort: 80
path: /
```
In the above example we create a default path that works for any hostname, and
make use of the `external-dns.alpha.kubernetes.io/hostname` annotation to create
multiple aliases for the resulting ALB.
## Dualstack ALBs
AWS [supports][4] both IPv4 and "dualstack" (both IPv4 and IPv6) interfaces for ALBs.
The ALB ingress controller uses the `alb.ingress.kubernetes.io/ip-address-type`
annotation (which defaults to `ipv4`) to determine this. If this annotation is
set to `dualstack` then ExternalDNS will create two alias records (one A record
and one AAAA record) for each hostname associated with the Ingress object.
[4]: https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#ip-address-type
Example:
```yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/ip-address-type: dualstack
kubernetes.io/ingress.class: alb
name: echoserver
spec:
rules:
- host: echoserver.example.org
http:
paths:
- backend:
serviceName: echoserver
servicePort: 80
path: /
```
The above Ingress object will result in the creation of an ALB with a dualstack
interface. ExternalDNS will create both an A `echoserver.example.org` record and
an AAAA record of the same name, that each are aliases for the same ALB.

+ 0
- 390
docs/tutorials/alibabacloud.md View File

@ -1,390 +0,0 @@
# Setting up ExternalDNS for Services on Alibaba Cloud
This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster on Alibaba Cloud. Make sure to use **>=0.5.6** version of ExternalDNS for this tutorial
## RAM Permissions
```json
{
"Version": "1",
"Statement": [
{
"Action": "alidns:AddDomainRecord",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "alidns:DeleteDomainRecord",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "alidns:UpdateDomainRecord",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "alidns:DescribeDomainRecords",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "alidns:DescribeDomains",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "pvtz:AddZoneRecord",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "pvtz:DeleteZoneRecord",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "pvtz:UpdateZoneRecord",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "pvtz:DescribeZoneRecords",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "pvtz:DescribeZones",
"Resource": "*",
"Effect": "Allow"
},
{
"Action": "pvtz:DescribeZoneInfo",
"Resource": "*",
"Effect": "Allow"
}
]
}
```
When running on Alibaba Cloud, you need to make sure that your nodes (on which External DNS runs) have the RAM instance profile with the above RAM role assigned.
## Set up a Alibaba Cloud DNS service or Private Zone service
Alibaba Cloud DNS Service is the domain name resolution and management service for public access. It routes access from end-users to the designated web app.
Alibaba Cloud Private Zone is the domain name resolution and management service for VPC internal access.
*If you prefer to try-out ExternalDNS in one of the existing domain or zone you can skip this step*
Create a DNS domain which will contain the managed DNS records. For public DNS service, the domain name should be valid and owned by yourself.
```console
$ aliyun alidns AddDomain --DomainName "external-dns-test.com"
```
Make a note of the ID of the hosted zone you just created.
```console
$ aliyun alidns DescribeDomains --KeyWord="external-dns-test.com" | jq -r '.Domains.Domain[0].DomainId'
```
## Deploy ExternalDNS
Connect your `kubectl` client to the cluster you want to test ExternalDNS with.
Then apply one of the following manifests file to deploy ExternalDNS.
### Manifest (for clusters without RBAC enabled)
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
containers:
- name: external-dns
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
args:
- --source=service
- --source=ingress
- --domain-filter=external-dns-test.com # will make ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones
- --provider=alibabacloud
- --policy=upsert-only # would prevent ExternalDNS from deleting any records, omit to enable full synchronization
- --alibaba-cloud-zone-type=public # only look at public hosted zones (valid values are public, private or no value for both)
- --registry=txt
- --txt-owner-id=my-identifier
volumeMounts:
- mountPath: /usr/share/zoneinfo
name: hostpath
volumes:
- name: hostpath
hostPath:
path: /usr/share/zoneinfo
type: Directory
```
### Manifest (for clusters with RBAC enabled)
```yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: external-dns
rules:
- apiGroups: [""]
resources: ["services","endpoints","pods"]
verbs: ["get","watch","list"]
- apiGroups: ["extensions","networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: external-dns-viewer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: external-dns
subjects:
- kind: ServiceAccount
name: external-dns
namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
serviceAccountName: external-dns
containers:
- name: external-dns
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
args:
- --source=service
- --source=ingress
- --domain-filter=external-dns-test.com # will make ExternalDNS see only the hosted zones matching provided domain, omit to process all available hosted zones
- --provider=alibabacloud
- --policy=upsert-only # would prevent ExternalDNS from deleting any records, omit to enable full synchronization
- --alibaba-cloud-zone-type=public # only look at public hosted zones (valid values are public, private or no value for both)
- --registry=txt
- --txt-owner-id=my-identifier
- --alibaba-cloud-config-file= # enable sts token
volumeMounts:
- mountPath: /usr/share/zoneinfo
name: hostpath
volumes:
- name: hostpath
hostPath:
path: /usr/share/zoneinfo
type: Directory
```
## Arguments
This list is not the full list, but a few arguments that where chosen.
### alibaba-cloud-zone-type
`alibaba-cloud-zone-type` allows filtering for private and public zones
* If value is `public`, it will sync with records in Alibaba Cloud DNS Service
* If value is `private`, it will sync with records in Alibaba Cloud Private Zone Service
## Verify ExternalDNS works (Ingress example)
Create an ingress resource manifest file.
> For ingress objects ExternalDNS will create a DNS record based on the host specified for the ingress object.
```yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: foo
annotations:
kubernetes.io/ingress.class: "nginx" # use the one that corresponds to your ingress controller.
spec:
rules:
- host: foo.external-dns-test.com
http:
paths:
- backend:
serviceName: foo
servicePort: 80
```
## Verify ExternalDNS works (Service example)
Create the following sample application to test that ExternalDNS works.
> For services ExternalDNS will look for the annotation `external-dns.alpha.kubernetes.io/hostname` on the service and use the corresponding value.
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
external-dns.alpha.kubernetes.io/hostname: nginx.external-dns-test.com.
spec:
type: LoadBalancer
ports:
- port: 80
name: http
targetPort: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
name: http
```
After roughly two minutes check that a corresponding DNS record for your service was created.
```console
$ aliyun alidns DescribeDomainRecords --DomainName=external-dns-test.com
{
"PageNumber": 1,
"TotalCount": 1,
"PageSize": 20,
"RequestId": "1DBEF426-F771-46C7-9802-4989E9C94EE8",
"DomainRecords": {
"Record": [
{
"RR": "nginx",
"Status": "ENABLE",
"Value": "1.2.3.4",
"Weight": 1,
"RecordId": "3994015629411328",
"Type": "A",
"DomainName": "external-dns-test.com",
"Locked": false,
"Line": "default",
"TTL": 600
},
{
"RR": "nginx",
"Status": "ENABLE",
"Value": "heritage=external-dns;external-dns/owner=my-identifier",
"Weight": 1,
"RecordId": "3994015629411329",
"Type": "TTL",
"DomainName": "external-dns-test.com",
"Locked": false,
"Line": "default",
"TTL": 600
}
]
}
}
```
Note created TXT record alongside ALIAS record. TXT record signifies that the corresponding ALIAS record is managed by ExternalDNS. This makes ExternalDNS safe for running in environments where there are other records managed via other means.
Let's check that we can resolve this DNS name. We'll ask the nameservers assigned to your zone first.
```console
$ dig nginx.external-dns-test.com.
```
If you hooked up your DNS zone with its parent zone correctly you can use `curl` to access your site.
```console
$ curl nginx.external-dns-test.com.
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
</head>
<body>
...
</body>
</html>
```
## Custom TTL
The default DNS record TTL (Time-To-Live) is 300 seconds. You can customize this value by setting the annotation `external-dns.alpha.kubernetes.io/ttl`.
e.g., modify the service manifest YAML file above:
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
external-dns.alpha.kubernetes.io/hostname: nginx.external-dns-test.com
external-dns.alpha.kubernetes.io/ttl: 60
spec:
...
```
This will set the DNS record's TTL to 60 seconds.
## Clean up
Make sure to delete all Service objects before terminating the cluster so all load balancers get cleaned up correctly.
```console
$ kubectl delete service nginx
```
Give ExternalDNS some time to clean up the DNS records for you. Then delete the hosted zone if you created one for the testing purpose.
```console
$ aliyun alidns DeleteDomain --DomainName external-dns-test.com
```
For more info about Alibaba Cloud external dns, please refer this [docs](https://yq.aliyun.com/articles/633412)

+ 0
- 276
docs/tutorials/aws-sd.md View File

@ -1,276 +0,0 @@
# Setting up ExternalDNS using AWS Cloud Map API
This tutorial describes how to set up ExternalDNS for usage within a Kubernetes cluster with [AWS Cloud Map API](https://docs.aws.amazon.com/cloud-map/).
**AWS Cloud Map** API is an alternative approach to managing DNS records directly using the Route53 API. It is more suitable for a dynamic environment where service endpoints change frequently. It abstracts away technical details of the DNS protocol and offers a simplified model. AWS Cloud Map consists of three main API calls:
* CreatePublicDnsNamespace – automatically creates a DNS hosted zone
* CreateService – creates a new named service inside the specified namespace
* RegisterInstance/DeregisterInstance – can be called multiple times to create a DNS record for the specified *Service*
Learn more about the API in the [AWS Cloud Map API Reference](https://docs.aws.amazon.com/cloud-map/latest/api/API_Operations.html).
## IAM Permissions
To use the AWS Cloud Map API, a user must have permissions to create the DNS namespace. Additionally you need to make sure that your nodes (on which External DNS runs) have an IAM instance profile with the `AWSCloudMapFullAccess` managed policy attached, that provides following permissions:
```
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:GetHostedZone",
"route53:ListHostedZonesByName",
"route53:CreateHostedZone",
"route53:DeleteHostedZone",
"route53:ChangeResourceRecordSets",
"route53:CreateHealthCheck",
"route53:GetHealthCheck",
"route53:DeleteHealthCheck",
"route53:UpdateHealthCheck",
"ec2:DescribeVpcs",
"ec2:DescribeRegions",
"servicediscovery:*"
],
"Resource": [
"*"
]
}
]
}
```
## Set up a namespace
Create a DNS namespace using the AWS Cloud Map API:
```console
$ aws servicediscovery create-public-dns-namespace --name "external-dns-test.my-org.com"
```
Verify that the namespace was truly created
```console
$ aws servicediscovery list-namespaces
```
## Deploy ExternalDNS
Connect your `kubectl` client to the cluster that you want to test ExternalDNS with.
Then apply the following manifest file to deploy ExternalDNS.
### Manifest (for clusters without RBAC enabled)
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
containers:
- name: external-dns
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
env:
- name: AWS_REGION
value: us-east-1 # put your CloudMap NameSpace region
args:
- --source=service
- --source=ingress
- --domain-filter=external-dns-test.my-org.com # Makes ExternalDNS see only the namespaces that match the specified domain. Omit the filter if you want to process all available namespaces.
- --provider=aws-sd
- --aws-zone-type=public # Only look at public namespaces. Valid values are public, private, or no value for both)
- --txt-owner-id=my-identifier
```
### Manifest (for clusters with RBAC enabled)
```yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: external-dns
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
name: external-dns
rules:
- apiGroups: [""]
resources: ["services","endpoints","pods"]
verbs: ["get","watch","list"]
- apiGroups: ["extensions","networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list","watch"]
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: external-dns-viewer
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: external-dns
subjects:
- kind: ServiceAccount
name: external-dns
namespace: default
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: external-dns
spec:
strategy:
type: Recreate
selector:
matchLabels:
app: external-dns
template:
metadata:
labels:
app: external-dns
spec:
serviceAccountName: external-dns
containers:
- name: external-dns
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
env:
- name: AWS_REGION
value: us-east-1 # put your CloudMap NameSpace region
args:
- --source=service
- --source=ingress
- --domain-filter=external-dns-test.my-org.com # Makes ExternalDNS see only the namespaces that match the specified domain. Omit the filter if you want to process all available namespaces.
- --provider=aws-sd
- --aws-zone-type=public # Only look at public namespaces. Valid values are public, private, or no value for both)
- --txt-owner-id=my-identifier
```
## Verify that ExternalDNS works (Service example)
Create the following sample application to test that ExternalDNS works.
> For services ExternalDNS will look for the annotation `external-dns.alpha.kubernetes.io/hostname` on the service and use the corresponding value.
```yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
annotations:
external-dns.alpha.kubernetes.io/hostname: nginx.external-dns-test.my-org.com
spec:
type: LoadBalancer
ports:
- port: 80
name: http
targetPort: 80
selector:
app: nginx
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
name: http
```
After one minute check that a corresponding DNS record for your service was created in your hosted zone. We recommended that you use the [Amazon Route53 console](https://console.aws.amazon.com/route53) for that purpose.
## Custom TTL
The default DNS record TTL (time to live) is 300 seconds. You can customize this value by setting the annotation `external-dns.alpha.kubernetes.io/ttl`.
For example, modify the service manifest YAML file above: