From 761bd9af669a3a93c1cefffc613e6ff5aaf66356 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Apr 2022 06:55:34 +0000 Subject: [PATCH 01/10] Bump github.com/projectcontour/contour from 1.20.0 to 1.20.1 Bumps [github.com/projectcontour/contour](https://github.com/projectcontour/contour) from 1.20.0 to 1.20.1. - [Release notes](https://github.com/projectcontour/contour/releases) - [Changelog](https://github.com/projectcontour/contour/blob/main/RELEASES.md) - [Commits](https://github.com/projectcontour/contour/compare/v1.20.0...v1.20.1) --- updated-dependencies: - dependency-name: github.com/projectcontour/contour dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- go.mod | 10 +++++----- go.sum | 16 ++++++++++------ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index aefd07cd7..5a49924c3 100644 --- a/go.mod +++ b/go.mod @@ -39,8 +39,8 @@ require ( github.com/oracle/oci-go-sdk v24.3.0+incompatible github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014 github.com/pkg/errors v0.9.1 - github.com/projectcontour/contour v1.20.0 - github.com/prometheus/client_golang v1.11.0 + github.com/projectcontour/contour v1.20.1 + github.com/prometheus/client_golang v1.11.1 github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210127161313-bd30bebeac4f github.com/sirupsen/logrus v1.8.1 github.com/stretchr/testify v1.7.0 @@ -49,8 +49,8 @@ require ( github.com/ultradns/ultradns-sdk-go v0.0.0-20200616202852-e62052662f60 github.com/vinyldns/go-vinyldns v0.0.0-20200211145900-fe8a3d82e556 github.com/vultr/govultr/v2 v2.14.1 - go.etcd.io/etcd/api/v3 v3.5.0 - go.etcd.io/etcd/client/v3 v3.5.0 + go.etcd.io/etcd/api/v3 v3.5.2 + go.etcd.io/etcd/client/v3 v3.5.2 go.uber.org/ratelimit v0.2.0 golang.org/x/net v0.0.0-20211216030914-fe4d6282115f golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 @@ -132,7 +132,7 @@ require ( github.com/stretchr/objx v0.3.0 // indirect github.com/terra-farm/udnssdk v1.3.5 // indirect github.com/ukfast/go-durationstring v1.1.0 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.0 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.2 // indirect go.opencensus.io v0.23.0 // indirect go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect diff --git a/go.sum b/go.sum index ebc30518e..5cd3243da 100644 --- a/go.sum +++ b/go.sum @@ -1039,8 +1039,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/projectcontour/contour v1.20.0 h1:rgLAV/jn191Sm2Dxl1Qt4uBxev+91ChHEReErOoKTTs= -github.com/projectcontour/contour v1.20.0/go.mod h1:89iazZsq4zyVXPlhFUw+LeseZKmXCJkrbBelWlskXJc= +github.com/projectcontour/contour v1.20.1 h1:HpGlFhy+qH25b0SJDQmMCNORFEXTaEwVK9K/TJc4Xkc= +github.com/projectcontour/contour v1.20.1/go.mod h1:AEl8+/Hs8w4xC7LE5pReiUUaqLXUka/+daJ1mE7sp1E= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= @@ -1051,8 +1051,9 @@ github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeD github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0 h1:HNkLOAEQMIDv/K+04rukrLx6ch7msSRwf3/SASFAGtQ= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -1245,13 +1246,16 @@ go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489 h1:1JFLBqwIgdyHN1ZtgjTBwO+blA6gVOmZurpiMEsETKo= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0 h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU= +go.etcd.io/etcd/api/v3 v3.5.2 h1:tXok5yLlKyuQ/SXSjtqHc4uzNaMqZi2XsoSPr/LlJXI= +go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/pkg/v3 v3.5.2 h1:4hzqQ6hIb3blLyQ8usCU4h3NghkqcsohEQ3o3VetYxE= +go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.etcd.io/etcd/client/v3 v3.5.0 h1:62Eh0XOro+rDwkrypAGDfgmNh5Joq+z+W9HZdlXMzek= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= +go.etcd.io/etcd/client/v3 v3.5.2 h1:WdnejrUtQC4nCxK0/dLTMqKOB+U5TP/2Ya0BJL+1otA= +go.etcd.io/etcd/client/v3 v3.5.2/go.mod h1:kOOaWFFgHygyT0WlSmL8TJiXmMysO/nNUlEsSsN6W4o= go.etcd.io/etcd/pkg/v3 v3.5.0/go.mod h1:UzJGatBQ1lXChBkQF0AuAtkRQMYnHubxAEYIrC3MSsE= go.etcd.io/etcd/raft/v3 v3.5.0/go.mod h1:UFOHSIvO/nKwd4lhkwabrTD3cqW5yVyYYf/KlD00Szc= go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4= From e74d2f75879ab1c3baef2ca9d245f12325b31ba1 Mon Sep 17 00:00:00 2001 From: Matt Dainty Date: Thu, 21 Apr 2022 01:07:11 +0100 Subject: [PATCH 02/10] Update to stable GSS-TSIG API --- go.mod | 21 +++++++++++++-------- go.sum | 30 ++++++++++++++++++++++++++++++ provider/rfc2136/rfc2136.go | 17 +++++------------ 3 files changed, 48 insertions(+), 20 deletions(-) diff --git a/go.mod b/go.mod index 49b511c54..e5502ac30 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/alecthomas/kingpin v2.2.5+incompatible github.com/aliyun/alibaba-cloud-sdk-go v1.61.1483 github.com/aws/aws-sdk-go v1.42.52 - github.com/bodgit/tsig v0.0.2 + github.com/bodgit/tsig v1.2.0 github.com/cloudflare/cloudflare-go v0.25.0 github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381 github.com/datawire/ambassador v1.6.0 @@ -31,7 +31,7 @@ require ( github.com/linki/instrumented_http v0.3.0 github.com/linode/linodego v0.32.2 github.com/maxatome/go-testdeep v1.11.0 - github.com/miekg/dns v1.1.36-0.20210109083720-731b191cabd1 + github.com/miekg/dns v1.1.48 github.com/nesv/go-dynect v0.6.0 github.com/nic-at/rc0go v1.1.1 github.com/openshift/api v0.0.0-20200605231317-fb2a6ca106ae @@ -52,7 +52,7 @@ require ( go.etcd.io/etcd/api/v3 v3.5.2 go.etcd.io/etcd/client/v3 v3.5.2 go.uber.org/ratelimit v0.2.0 - golang.org/x/net v0.0.0-20220325170049-de3da57026de + golang.org/x/net v0.0.0-20220412020605-290c469a71a5 golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a golang.org/x/sync v0.0.0-20210220032951-036812b2e83c google.golang.org/api v0.74.0 @@ -86,6 +86,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/evanphx/json-patch v4.12.0+incompatible // indirect github.com/fatih/structs v1.1.0 // indirect + github.com/go-logr/logr v1.2.0 // indirect github.com/go-playground/locales v0.12.1 // indirect github.com/go-playground/universal-translator v0.16.0 // indirect github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48 // indirect @@ -101,7 +102,7 @@ require ( github.com/googleapis/gnostic v0.5.5 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.1 // indirect - github.com/hashicorp/go-multierror v1.1.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.0 // indirect github.com/hashicorp/go-uuid v1.0.2 // indirect github.com/imdario/mergo v0.3.12 // indirect @@ -109,8 +110,9 @@ require ( github.com/jcmturner/dnsutils/v2 v2.0.0 // indirect github.com/jcmturner/gofork v1.0.0 // indirect github.com/jcmturner/goidentity/v6 v6.0.1 // indirect - github.com/jcmturner/gokrb5/v8 v8.4.1 // indirect - github.com/jcmturner/rpc/v2 v2.0.2 // indirect + github.com/jcmturner/gokrb5/v8 v8.4.2 // indirect + github.com/jcmturner/rpc/v2 v2.0.3 // indirect + github.com/jinzhu/copier v0.3.2 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/leodido/go-urn v1.1.0 // indirect @@ -137,11 +139,14 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.19.1 // indirect - golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 // indirect - golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 // indirect + golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect + golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect + golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect + golang.org/x/tools v0.1.10 // indirect + golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb // indirect google.golang.org/grpc v1.45.0 // indirect diff --git a/go.sum b/go.sum index 6bb0f4040..b1af08d31 100644 --- a/go.sum +++ b/go.sum @@ -215,6 +215,8 @@ github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bodgit/tsig v0.0.2 h1:seNt23SrPW8dkWoyRYzdeuqFEzr+lDc0dAJvo94xB8U= github.com/bodgit/tsig v0.0.2/go.mod h1:0mYe0t9it36SOvDQyeFekc7bLtvljFz7H9vHS/nYbgc= +github.com/bodgit/tsig v1.2.0 h1:wNfc7yTk2OuWh/s7nEFa9h+SkIfTn7e4xlFtf1Sgvr4= +github.com/bodgit/tsig v1.2.0/go.mod h1:bsN2ntwGE/s3EeoawjAoKUcAfO4Fr0nGKC72vNF/cqM= github.com/bombsimon/logrusr/v2 v2.0.1/go.mod h1:ByVAX+vHdLGAfdroiMg6q0zgq2FODY2lc5YJvzmOJio= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= @@ -427,6 +429,7 @@ github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTg github.com/go-logr/logr v0.3.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.0.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/zapr v0.1.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-logr/zapr v0.2.0/go.mod h1:qhKdvif7YF5GI9NWEpyxTSSBdGmzkNguibrdCNVPunU= @@ -661,6 +664,7 @@ github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyC github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= +github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= @@ -700,6 +704,8 @@ github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1: github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= @@ -763,10 +769,16 @@ github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJA github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= github.com/jcmturner/gokrb5/v8 v8.4.1 h1:IGSJfqBzMS6TA0oJ7DxXdyzPK563QHa8T2IqER2ggyQ= github.com/jcmturner/gokrb5/v8 v8.4.1/go.mod h1:T1hnNppQsBtxW0tCHMHTkAt8n/sABdzZgZdoFrZaZNM= +github.com/jcmturner/gokrb5/v8 v8.4.2 h1:6ZIM6b/JJN0X8UM43ZOM6Z4SJzla+a/u7scXFJzodkA= +github.com/jcmturner/gokrb5/v8 v8.4.2/go.mod h1:sb+Xq/fTY5yktf/VxLsE3wlfPqQjp0aWNYyvBVK62bc= github.com/jcmturner/rpc/v2 v2.0.2 h1:gMB4IwRXYsWw4Bc6o/az2HJgFUA1ffSh90i26ZJ6Xl0= github.com/jcmturner/rpc/v2 v2.0.2/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= +github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jetstack/cert-manager v1.5.1/go.mod h1:YGW5O4iuy9SvAfnXCjZOu0B5Upsvg/FaWaqm5UuwkdI= +github.com/jinzhu/copier v0.3.2 h1:QdBOCbaouLDYaIPFfi1bKv5F5tPpeTwXe4sD0jqtz5w= +github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -891,6 +903,9 @@ github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7 github.com/miekg/dns v1.1.34/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.36-0.20210109083720-731b191cabd1 h1:kZZmnTeY2r+88mDNCVV/uCXL2gG3rkVPTN9jcYfGQcI= github.com/miekg/dns v1.1.36-0.20210109083720-731b191cabd1/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.48 h1:Ucfr7IIVyMBz4lRE8qmGUuZ4Wt3/ZGu9hmcMT3Uu4tQ= +github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.1.1/go.mod h1:EBArHfARyrSWO/+Wyr9zwEkc6XMFB9XyNgFNmRkZZU4= @@ -1337,11 +1352,14 @@ golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s39J9CbLn7Cc5a7IC5rwsMQ= golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1379,6 +1397,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o= +golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1448,6 +1468,8 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220325170049-de3da57026de h1:pZB1TWnKi+o4bENlbzAgLrEbY4RMYmUIRobMcSmfeYc= golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1558,6 +1580,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1587,6 +1610,8 @@ golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 h1:eJv7u3ksNXoLbGSKuv2s/SIO4tJVxc/A+MTpzxDgz/Q= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1692,12 +1717,17 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= +golang.org/x/tools v0.1.10 h1:QjFRCZxdOhBJ/UNgnBZLbNV13DlbnK0quyivTnXJM20= +golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gomodules.xyz/jsonpatch/v2 v2.0.1/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index 21fab5f88..79f1ad0fe 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -25,7 +25,6 @@ import ( "time" "github.com/bodgit/tsig" - extendedClient "github.com/bodgit/tsig/client" "github.com/bodgit/tsig/gss" "github.com/miekg/dns" @@ -127,8 +126,8 @@ func NewRfc2136Provider(host string, port int, zoneName string, insecure bool, k } // KeyName will return TKEY name and TSIG handle to use for followon actions with a secure connection -func (r rfc2136Provider) KeyData() (keyName *string, handle *gss.GSS, err error) { - handle, err = gss.New() +func (r rfc2136Provider) KeyData() (keyName string, handle *gss.Client, err error) { + handle, err = gss.NewClient(new(dns.Client)) if err != nil { return keyName, handle, err } @@ -394,7 +393,7 @@ func (r rfc2136Provider) SendMessage(msg *dns.Msg) error { } log.Debugf("SendMessage") - c := new(extendedClient.Client) + c := new(dns.Client) c.SingleInflight = true if !r.insecure { @@ -406,15 +405,9 @@ func (r rfc2136Provider) SendMessage(msg *dns.Msg) error { defer handle.Close() defer handle.DeleteContext(keyName) - c.TsigAlgorithm = map[string]*extendedClient.TsigAlgorithm{ - tsig.GSS: { - Generate: handle.GenerateGSS, - Verify: handle.VerifyGSS, - }, - } - c.TsigSecret = map[string]string{*keyName: ""} + c.TsigProvider = handle - msg.SetTsig(*keyName, tsig.GSS, clockSkew, time.Now().Unix()) + msg.SetTsig(keyName, tsig.GSS, clockSkew, time.Now().Unix()) } else { c.TsigSecret = map[string]string{r.tsigKeyName: r.tsigSecret} msg.SetTsig(r.tsigKeyName, r.tsigSecretAlg, clockSkew, time.Now().Unix()) From ec8589f2655ea3f3173dcb64ac2784bb5caab811 Mon Sep 17 00:00:00 2001 From: Matt Dainty Date: Thu, 21 Apr 2022 01:08:46 +0100 Subject: [PATCH 03/10] Switch to external HMAC TSIG provider Maintains HMAC-MD5 support with newer versions of github.com/miekg/dns package. --- provider/rfc2136/rfc2136.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index 79f1ad0fe..5799aae6f 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -409,7 +409,7 @@ func (r rfc2136Provider) SendMessage(msg *dns.Msg) error { msg.SetTsig(keyName, tsig.GSS, clockSkew, time.Now().Unix()) } else { - c.TsigSecret = map[string]string{r.tsigKeyName: r.tsigSecret} + c.TsigProvider = tsig.HMAC{r.tsigKeyName: r.tsigSecret} msg.SetTsig(r.tsigKeyName, r.tsigSecretAlg, clockSkew, time.Now().Unix()) } } From 535719d1d8313fb3f6c2d1463cf093326fa8093f Mon Sep 17 00:00:00 2001 From: Matt Dainty Date: Thu, 21 Apr 2022 01:35:14 +0100 Subject: [PATCH 04/10] Add missing HMAC algorithms --- provider/rfc2136/rfc2136.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/provider/rfc2136/rfc2136.go b/provider/rfc2136/rfc2136.go index 5799aae6f..f72ecd172 100644 --- a/provider/rfc2136/rfc2136.go +++ b/provider/rfc2136/rfc2136.go @@ -74,7 +74,9 @@ var ( tsigAlgs = map[string]string{ "hmac-md5": dns.HmacMD5, "hmac-sha1": dns.HmacSHA1, + "hmac-sha224": dns.HmacSHA224, "hmac-sha256": dns.HmacSHA256, + "hmac-sha384": dns.HmacSHA384, "hmac-sha512": dns.HmacSHA512, } ) From f271f0ac9a8aba9d8fa0796ed0563c5b8a434b82 Mon Sep 17 00:00:00 2001 From: Raffaele Di Fazio Date: Fri, 29 Apr 2022 09:51:16 +0200 Subject: [PATCH 05/10] Revert "Workflow for automatic documentation creation and publishing" --- .github/workflows/docs.yml | 43 --------------- .gitignore | 7 --- README.md | 83 ++++++++++++++-------------- docs/scripts/copy_docs.sh | 9 --- docs/scripts/docs.go | 47 ---------------- docs/scripts/index.html.gotmpl | 3 - docs/scripts/requirements.txt | 5 -- {docs/img => img}/external-dns.png | Bin mkdocs.yml | 86 ----------------------------- 9 files changed, 40 insertions(+), 243 deletions(-) delete mode 100644 .github/workflows/docs.yml delete mode 100755 docs/scripts/copy_docs.sh delete mode 100644 docs/scripts/docs.go delete mode 100644 docs/scripts/index.html.gotmpl delete mode 100644 docs/scripts/requirements.txt rename {docs/img => img}/external-dns.png (100%) delete mode 100644 mkdocs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 12179cb20..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Release Docs - -on: - push: - tags: - - "v*" - -jobs: - release_docs: - name: Release Docs - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - uses: actions/setup-python@v2 - with: - python-version: "3.10" - cache: "pip" - cache-dependency-path: "./docs/scripts/requirements.txt" - - - uses: actions/setup-go@v2 - with: - go-version: ^1.17 - - - run: | - pip install -r docs/scripts/requirements.txt - - - name: setup - run: | - ./docs/scripts/copy_docs.sh - go run ./docs/scripts/docs.go - - - name: Configure Git user - run: | - git config --local user.email "github-actions[bot]@users.noreply.github.com" - git config --local user.name "github-actions[bot]" - - - name: build and push - run: | - mike deploy ${{ github.ref_name }} latest --push --update-aliases - mike set-default --push latest diff --git a/.gitignore b/.gitignore index ee7a88934..80a6ea158 100644 --- a/.gitignore +++ b/.gitignore @@ -54,10 +54,3 @@ profile.cov # Helm charts !/charts/external-dns/ - -docs/LICENSE.md -docs/code-of-conduct.md -docs/CONTRIBUTING.md -docs/index.md -docs/redirect -site \ No newline at end of file diff --git a/README.md b/README.md index b9c92cf9c..8bc505cdb 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ ---- -hide: - - toc - - navigation ---- -

- ExternalDNS + ExternalDNS

# ExternalDNS - -[![Build Status](https://github.com/kubernetes-sigs/external-dns/workflows/Go/badge.svg)](https://github.com/kubernetes-sigs/external-dns/actions) [![Coverage Status](https://coveralls.io/repos/github/kubernetes-sigs/external-dns/badge.svg)](https://coveralls.io/github/kubernetes-sigs/external-dns) [![GitHub release](https://img.shields.io/github/release/kubernetes-sigs/external-dns.svg)](https://github.com/kubernetes-sigs/external-dns/releases) [![go-doc](https://godoc.org/github.com/kubernetes-sigs/external-dns?status.svg)](https://godoc.org/github.com/kubernetes-sigs/external-dns) [![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes-sigs/external-dns)](https://goreportcard.com/report/github.com/kubernetes-sigs/external-dns) +[![Build Status](https://github.com/kubernetes-sigs/external-dns/workflows/Go/badge.svg)](https://github.com/kubernetes-sigs/external-dns/actions) +[![Coverage Status](https://coveralls.io/repos/github/kubernetes-sigs/external-dns/badge.svg)](https://coveralls.io/github/kubernetes-sigs/external-dns) +[![GitHub release](https://img.shields.io/github/release/kubernetes-sigs/external-dns.svg)](https://github.com/kubernetes-sigs/external-dns/releases) +[![go-doc](https://godoc.org/github.com/kubernetes-sigs/external-dns?status.svg)](https://godoc.org/github.com/kubernetes-sigs/external-dns) +[![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes-sigs/external-dns)](https://goreportcard.com/report/github.com/kubernetes-sigs/external-dns) ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. @@ -26,7 +23,7 @@ To see ExternalDNS in action, have a look at this [video](https://www.youtube.co ## The Latest Release -ExternalDNS allows you to keep selected zones (via `--domain-filter`) synchronized with Ingresses and Services of `type=LoadBalancer` and nodes in various cloud providers: +ExternalDNS' allows you to keep selected zones (via `--domain-filter`) synchronized with Ingresses and Services of `type=LoadBalancer` and nodes in various cloud providers: * [Google Cloud DNS](https://cloud.google.com/dns/docs/) * [AWS Route 53](https://aws.amazon.com/route53/) * [AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/) @@ -80,38 +77,38 @@ We define the following stability levels for providers: The following table clarifies the current status of the providers according to the aforementioned stability levels: -| Provider | Status | Maintainers | -| ------------------------------- | ------ | ---------------------------- | -| Google Cloud DNS | Stable | | -| AWS Route 53 | Stable | | -| AWS Cloud Map | Beta | | -| Akamai Edge DNS | Beta | | -| AzureDNS | Beta | | -| BlueCat | Alpha | @seanmalloy @vinny-sabatini | -| CloudFlare | Beta | | -| RcodeZero | Alpha | | -| DigitalOcean | Alpha | | -| DNSimple | Alpha | | -| Infoblox | Alpha | @saileshgiri | -| Dyn | Alpha | | -| OpenStack Designate | Alpha | | -| PowerDNS | Alpha | | -| CoreDNS | Alpha | | -| Exoscale | Alpha | | -| Oracle Cloud Infrastructure DNS | Alpha | | -| Linode DNS | Alpha | | -| RFC2136 | Alpha | | -| NS1 | Alpha | | -| TransIP | Alpha | | -| VinylDNS | Alpha | | -| RancherDNS | Alpha | | -| OVH | Alpha | | -| Scaleway DNS | Alpha | @Sh4d1 | -| Vultr | Alpha | | -| UltraDNS | Alpha | | -| GoDaddy | Alpha | | -| Gandi | Alpha | @packi | -| SafeDNS | Alpha | @assureddt | +| Provider | Status | Maintainers | +| -------- | ------ | ----------- | +| Google Cloud DNS | Stable | | +| AWS Route 53 | Stable | | +| AWS Cloud Map | Beta | | +| Akamai Edge DNS | Beta | | +| AzureDNS | Beta | | +| BlueCat | Alpha | @seanmalloy @vinny-sabatini | +| CloudFlare | Beta | | +| RcodeZero | Alpha | | +| DigitalOcean | Alpha | | +| DNSimple | Alpha | | +| Infoblox | Alpha | @saileshgiri | +| Dyn | Alpha | | +| OpenStack Designate | Alpha | | +| PowerDNS | Alpha | | +| CoreDNS | Alpha | | +| Exoscale | Alpha | | +| Oracle Cloud Infrastructure DNS | Alpha | | +| Linode DNS | Alpha | | +| RFC2136 | Alpha | | +| NS1 | Alpha | | +| TransIP | Alpha | | +| VinylDNS | Alpha | | +| RancherDNS | Alpha | | +| OVH | Alpha | | +| Scaleway DNS | Alpha | @Sh4d1 | +| Vultr | Alpha | | +| UltraDNS | Alpha | | +| GoDaddy | Alpha | | +| Gandi | Alpha | @packi | +| SafeDNS | Alpha | @assureddt | ## Kubernetes version compatibility @@ -177,7 +174,7 @@ The following tutorials are provided: * [UltraDNS](docs/tutorials/ultradns.md) * [GoDaddy](docs/tutorials/godaddy.md) * [Gandi](docs/tutorials/gandi.md) -* [SafeDNS](docs/tutorials/UKFast_SafeDNS.md) +* [SafeDNS](docs/tutorials/safedns.md) * [Nodes as source](docs/tutorials/nodes.md) ### Running Locally diff --git a/docs/scripts/copy_docs.sh b/docs/scripts/copy_docs.sh deleted file mode 100755 index 7e114b84a..000000000 --- a/docs/scripts/copy_docs.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -set -eo pipefail - -cp CONTRIBUTING.md code-of-conduct.md ./docs/ - -cp LICENSE ./docs/LICENSE.md - -cp README.md ./docs/index.md diff --git a/docs/scripts/docs.go b/docs/scripts/docs.go deleted file mode 100644 index 2a79b6f01..000000000 --- a/docs/scripts/docs.go +++ /dev/null @@ -1,47 +0,0 @@ -/* -Copyright 2017 The Kubernetes Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package main - -import ( - "log" - "os" - "strings" -) - -func removeLinkPrefixInIndex() { - content, err := os.ReadFile("./docs/index.md") - if err != nil { - log.Fatalf("Could not read index.md file. Make sure to run copy_docs.sh script first. Original error: %s", err) - } - - updatedContent := strings.ReplaceAll(string(content), "](./docs/", "](") - updatedContent = strings.ReplaceAll(updatedContent, "](docs/", "](") - - f, err := os.OpenFile("./docs/index.md", os.O_RDWR, 0644) - if err != nil { - log.Fatalf("Could not open index.md file to update content. Original error: %s", err) - } - defer f.Close() - - if _, err := f.WriteString(updatedContent); err != nil { - log.Fatalf("Failed writing links update to index.md. Original error: %s", err) - } -} - -func main() { - removeLinkPrefixInIndex() -} diff --git a/docs/scripts/index.html.gotmpl b/docs/scripts/index.html.gotmpl deleted file mode 100644 index 26b836eba..000000000 --- a/docs/scripts/index.html.gotmpl +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/scripts/requirements.txt b/docs/scripts/requirements.txt deleted file mode 100644 index cacaecf19..000000000 --- a/docs/scripts/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -mkdocs-git-revision-date-localized-plugin == 1.0.0 -mkdocs == 1.3.0 -mkdocs-material == 8.2.8 -mkdocs-literate-nav == 0.4.0 -mike == 1.1.2 \ No newline at end of file diff --git a/docs/img/external-dns.png b/img/external-dns.png similarity index 100% rename from docs/img/external-dns.png rename to img/external-dns.png diff --git a/mkdocs.yml b/mkdocs.yml deleted file mode 100644 index c1b9ed623..000000000 --- a/mkdocs.yml +++ /dev/null @@ -1,86 +0,0 @@ -site_name: external-dns -site_author: external-dns maintainers - -repo_name: kubernetes-sigs/external-dns -repo_url: https://github.com/kubernetes-sigs/external-dns/ - -nav: - - index.md - - Tutorials: tutorials/ - - Advanced Topics: - - Initial Design: initial-design.md - - TTL: ttl.md - - Contributing: - - Kubernetes Contributions: CONTRIBUTING.md - - Release: release.md - - contributing/* - - About: - - FAQ: faq.md - - Out of Incubator: 20190708-external-dns-incubator.md - - Code of Conduct: code-of-conduct.md - - License: LICENSE.md - -theme: - name: material - features: - - content.code.annotate - - navigation.top - - navigation.tracking - - navigation.indexes - - navigation.instant - - navigation.tabs - - navigation.tabs.sticky - -extra: - version: - provider: mike - -markdown_extensions: - - meta - - tables - - toc: - permalink: true - - abbr - - extra - - admonition - - smarty - - sane_lists - - nl2br - - attr_list - - def_list - - footnotes - - md_in_html - - pymdownx.arithmatex: - generic: true - - pymdownx.betterem: - smart_enable: all - - pymdownx.caret - - pymdownx.details - - pymdownx.emoji: - emoji_index: !!python/name:materialx.emoji.twemoji - emoji_generator: !!python/name:materialx.emoji.to_svg - - pymdownx.highlight: - use_pygments: true - anchor_linenums: true - - pymdownx.inlinehilite - - pymdownx.keys - - pymdownx.mark - - pymdownx.smartsymbols - - pymdownx.snippets - - pymdownx.superfences: - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format - - pymdownx.tabbed: - alternate_style: true - - pymdownx.tilde - - pymdownx.tasklist: - custom_checkbox: true - -plugins: - - search - - literate-nav - - git-revision-date-localized: - type: date - fallback_to_build_date: true From 35a76ad62d0dde4c9af5d914bfbef5fb120140fd Mon Sep 17 00:00:00 2001 From: Johan Ryberg Date: Fri, 29 Apr 2022 10:24:37 +0000 Subject: [PATCH 06/10] Updated tutorial to support Kubernetes 1.22 --- docs/tutorials/azure.md | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/docs/tutorials/azure.md b/docs/tutorials/azure.md index ec21778b0..5a4215cf8 100644 --- a/docs/tutorials/azure.md +++ b/docs/tutorials/azure.md @@ -149,6 +149,8 @@ The contents of `azure.json` should be similar to this: } ``` +*NOTE:* If there are multiple user assigned identitys available add "userAssignedIdentityID": "" to the json + If you have all the information necessary: create a file called azure.json containing the json structure above and substitute the values. Otherwise create a service principal as previously shown before creating the Kubernetes secret. Then add the secret to the Kubernetes cluster before continuing: @@ -191,7 +193,7 @@ spec: spec: containers: - name: external-dns - image: k8s.gcr.io/external-dns/external-dns:v0.8.0 + image: k8s.gcr.io/external-dns/external-dns:v0.11.0 args: - --source=service - --source=ingress @@ -207,7 +209,7 @@ spec: secret: secretName: azure-config-file items: - - key: externaldns-config.json + - key: azure.json path: azure.json ``` @@ -223,15 +225,18 @@ 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"] + - apiGroups: [''] + resources: ['endpoints', 'pods', 'services'] + verbs: ['get', 'watch', 'list'] + - apiGroups: ['extensions'] + resources: ['ingresses'] + verbs: ['get', 'watch', 'list'] + - apiGroups: ["networking.k8s.io"] + resources: ["ingresses"] + verbs: ["get","watch","list"] + - apiGroups: [""] + resources: ["nodes"] + verbs: ["watch", "list"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -281,7 +286,7 @@ spec: secret: secretName: azure-config-file items: - - key: externaldns-config.json + - key: azure.json path: azure.json ``` @@ -354,7 +359,7 @@ spec: secret: secretName: azure-config-file items: - - key: externaldns-config.json + - key: azure.json path: azure.json ``` From 511bc8a7f2fa74e4ea73472deea54d89ea078d1a Mon Sep 17 00:00:00 2001 From: Johan Ryberg Date: Fri, 29 Apr 2022 14:11:22 +0000 Subject: [PATCH 07/10] Updated miminal version of external-dns for this tutorial --- docs/tutorials/azure.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorials/azure.md b/docs/tutorials/azure.md index 5a4215cf8..c54cdf0cd 100644 --- a/docs/tutorials/azure.md +++ b/docs/tutorials/azure.md @@ -3,7 +3,7 @@ This tutorial describes how to setup ExternalDNS for usage within a Kubernetes cluster on Azure. -Make sure to use **>=0.5.7** version of ExternalDNS for this tutorial. +Make sure to use **>=0.11.0** version of ExternalDNS for this tutorial. This tutorial uses [Azure CLI 2.0](https://docs.microsoft.com/en-us/cli/azure/install-azure-cli) for all Azure commands and assumes that the Kubernetes cluster was created via Azure Container Services and `kubectl` commands From ea45b03972a22389d24cd1e98795d5c07042085c Mon Sep 17 00:00:00 2001 From: Alfred Krohmer Date: Tue, 27 Apr 2021 11:00:18 +0200 Subject: [PATCH 08/10] Headless service: allow to specify target as NodeExternalIP or by annotation If external-dns.alpha.kubernetes.io/target annotation is present on a pod, it's value will be used as the target for the headless service. If annotation external-dns.alpha.kubernetes.io/access=public is present, NodeExternalIP of the node running the pod is used as the target for the headless service. --- docs/tutorials/hostport.md | 32 ++++++++ source/service.go | 36 ++++++--- source/service_test.go | 145 ++++++++++++++++++++++++++++++++++++- source/source.go | 11 +++ 4 files changed, 210 insertions(+), 14 deletions(-) diff --git a/docs/tutorials/hostport.md b/docs/tutorials/hostport.md index 75512fdf4..774a756a6 100644 --- a/docs/tutorials/hostport.md +++ b/docs/tutorials/hostport.md @@ -198,3 +198,35 @@ kafka-1.ksvc.example.org kafka-2.ksvc.example.org ``` +#### Using pods' HostIPs as targets + +Add the following annotation to your `Service`: + +```yaml +external-dns.alpha.kubernetes.io/endpoints-type: HostIP +``` + +external-dns will now publish the value of the `.status.hostIP` field of the pods backing your `Service`. +``` + +#### Using node external IPs as targets + +Add the following annotation to your `Service`: + +```yaml +external-dns.alpha.kubernetes.io/endpoints-type: NodeExternalIP +``` + +external-dns will now publish the node external IP (`.status.addresses` entries of with `type: NodeExternalIP`) of the nodes on which the pods backing your `Service` are running. + +#### Using pod annotations to specify target IPs + +Add the following annotation to the **pods** backing your `Service`: + +```yaml +external-dns.alpha.kubernetes.io/target: "1.2.3.4" +``` + +external-dns will publish the IP specified in the annotation of each pod instead of using the podIP advertised by Kubernetes. + +This can be useful e.g. if you are NATing public IPs onto your pod IPs and want to publish these in DNS. diff --git a/source/service.go b/source/service.go index ef3acd97d..9c47579dd 100644 --- a/source/service.go +++ b/source/service.go @@ -259,11 +259,13 @@ func (sc *serviceSource) extractHeadlessEndpoints(svc *v1.Service, hostname stri pods, err := sc.podInformer.Lister().Pods(svc.Namespace).List(selector) if err != nil { - log.Errorf("List Pods of service[%s] error:%v", svc.GetName(), err) + log.Errorf("List pods of service[%s] error: %v", svc.GetName(), err) return endpoints } - targetsByHeadlessDomain := make(map[string][]string) + endpointsType := getEndpointsTypeFromAnnotations(svc.Annotations) + + targetsByHeadlessDomain := make(map[string]endpoint.Targets) for _, subset := range endpointsObject.Subsets { addresses := subset.Addresses if svc.Spec.PublishNotReadyAddresses || sc.alwaysPublishNotReadyAddresses { @@ -294,15 +296,29 @@ func (sc *serviceSource) extractHeadlessEndpoints(svc *v1.Service, hostname stri } for _, headlessDomain := range headlessDomains { - var ep string - if sc.publishHostIP { - ep = pod.Status.HostIP - log.Debugf("Generating matching endpoint %s with HostIP %s", headlessDomain, ep) - } else { - ep = address.IP - log.Debugf("Generating matching endpoint %s with EndpointAddress IP %s", headlessDomain, ep) + targets := getTargetsFromTargetAnnotation(pod.Annotations) + if len(targets) == 0 { + if endpointsType == EndpointsTypeNodeExternalIP { + node, err := sc.nodeInformer.Lister().Get(pod.Spec.NodeName) + if err != nil { + log.Errorf("Get node[%s] of pod[%s] error: %v; not adding any NodeExternalIP endpoints", pod.Spec.NodeName, pod.GetName(), err) + return endpoints + } + for _, address := range node.Status.Addresses { + if address.Type == v1.NodeExternalIP { + targets = endpoint.Targets{address.Address} + log.Debugf("Generating matching endpoint %s with NodeExternalIP %s", headlessDomain, address.Address) + } + } + } else if endpointsType == EndpointsTypeHostIP || sc.publishHostIP { + targets = endpoint.Targets{pod.Status.HostIP} + log.Debugf("Generating matching endpoint %s with HostIP %s", headlessDomain, pod.Status.HostIP) + } else { + targets = endpoint.Targets{address.IP} + log.Debugf("Generating matching endpoint %s with EndpointAddress IP %s", headlessDomain, address.IP) + } } - targetsByHeadlessDomain[headlessDomain] = append(targetsByHeadlessDomain[headlessDomain], ep) + targetsByHeadlessDomain[headlessDomain] = append(targetsByHeadlessDomain[headlessDomain], targets...) } } } diff --git a/source/service_test.go b/source/service_test.go index a13e15169..3fffc256c 100644 --- a/source/service_test.go +++ b/source/service_test.go @@ -2008,15 +2008,18 @@ func TestHeadlessServices(t *testing.T) { fqdnTemplate string ignoreHostnameAnnotation bool labels map[string]string - annotations map[string]string + svcAnnotations map[string]string + podAnnotations map[string]string clusterIP string podIPs []string + hostIPs []string selector map[string]string lbs []string podnames []string hostnames []string podsReady []bool publishNotReadyAddresses bool + nodes []v1.Node expected []*endpoint.Endpoint expectError bool }{ @@ -2033,8 +2036,10 @@ func TestHeadlessServices(t *testing.T) { map[string]string{ hostnameAnnotationKey: "service.example.org", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.2"}, + []string{"", ""}, map[string]string{ "component": "foo", }, @@ -2043,6 +2048,7 @@ func TestHeadlessServices(t *testing.T) { []string{"foo-0", "foo-1"}, []bool{true, true}, false, + []v1.Node{}, []*endpoint.Endpoint{ {DNSName: "foo-0.service.example.org", Targets: endpoint.Targets{"1.1.1.1"}}, {DNSName: "foo-1.service.example.org", Targets: endpoint.Targets{"1.1.1.2"}}, @@ -2063,8 +2069,10 @@ func TestHeadlessServices(t *testing.T) { map[string]string{ hostnameAnnotationKey: "service.example.org", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.2"}, + []string{"", ""}, map[string]string{ "component": "foo", }, @@ -2073,6 +2081,7 @@ func TestHeadlessServices(t *testing.T) { []string{"foo-0", "foo-1"}, []bool{true, true}, false, + []v1.Node{}, []*endpoint.Endpoint{}, false, }, @@ -2090,8 +2099,10 @@ func TestHeadlessServices(t *testing.T) { hostnameAnnotationKey: "service.example.org", ttlAnnotationKey: "1", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.2"}, + []string{"", ""}, map[string]string{ "component": "foo", }, @@ -2100,6 +2111,7 @@ func TestHeadlessServices(t *testing.T) { []string{"foo-0", "foo-1"}, []bool{true, true}, false, + []v1.Node{}, []*endpoint.Endpoint{ {DNSName: "foo-0.service.example.org", Targets: endpoint.Targets{"1.1.1.1"}, RecordTTL: endpoint.TTL(1)}, {DNSName: "foo-1.service.example.org", Targets: endpoint.Targets{"1.1.1.2"}, RecordTTL: endpoint.TTL(1)}, @@ -2120,8 +2132,10 @@ func TestHeadlessServices(t *testing.T) { map[string]string{ hostnameAnnotationKey: "service.example.org", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.2"}, + []string{"", ""}, map[string]string{ "component": "foo", }, @@ -2130,6 +2144,7 @@ func TestHeadlessServices(t *testing.T) { []string{"foo-0", "foo-1"}, []bool{true, false}, false, + []v1.Node{}, []*endpoint.Endpoint{ {DNSName: "foo-0.service.example.org", Targets: endpoint.Targets{"1.1.1.1"}}, {DNSName: "service.example.org", Targets: endpoint.Targets{"1.1.1.1"}}, @@ -2149,8 +2164,10 @@ func TestHeadlessServices(t *testing.T) { map[string]string{ hostnameAnnotationKey: "service.example.org", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.2"}, + []string{"", ""}, map[string]string{ "component": "foo", }, @@ -2159,6 +2176,7 @@ func TestHeadlessServices(t *testing.T) { []string{"foo-0", "foo-1"}, []bool{true, false}, true, + []v1.Node{}, []*endpoint.Endpoint{ {DNSName: "foo-0.service.example.org", Targets: endpoint.Targets{"1.1.1.1"}}, {DNSName: "foo-1.service.example.org", Targets: endpoint.Targets{"1.1.1.2"}}, @@ -2179,8 +2197,10 @@ func TestHeadlessServices(t *testing.T) { map[string]string{ hostnameAnnotationKey: "service.example.org", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.2"}, + []string{"", ""}, map[string]string{ "component": "foo", }, @@ -2189,6 +2209,7 @@ func TestHeadlessServices(t *testing.T) { []string{"", ""}, []bool{true, true}, false, + []v1.Node{}, []*endpoint.Endpoint{ {DNSName: "service.example.org", Targets: endpoint.Targets{"1.1.1.1", "1.1.1.2"}}, }, @@ -2207,8 +2228,10 @@ func TestHeadlessServices(t *testing.T) { map[string]string{ hostnameAnnotationKey: "service.example.org", }, + map[string]string{}, v1.ClusterIPNone, []string{"1.1.1.1", "1.1.1.1", "1.1.1.2"}, + []string{"", "", ""}, map[string]string{ "component": "foo", }, @@ -2217,11 +2240,120 @@ func TestHeadlessServices(t *testing.T) { []string{"", "", ""}, []bool{true, true, true}, false, + []v1.Node{}, []*endpoint.Endpoint{ {DNSName: "service.example.org", Targets: endpoint.Targets{"1.1.1.1", "1.1.1.2"}}, }, false, }, + { + "annotated Headless services return targets from pod annotation", + "", + "testing", + "foo", + v1.ServiceTypeClusterIP, + "", + "", + false, + map[string]string{"component": "foo"}, + map[string]string{ + hostnameAnnotationKey: "service.example.org", + }, + map[string]string{ + targetAnnotationKey: "1.2.3.4", + }, + v1.ClusterIPNone, + []string{"1.1.1.1"}, + []string{""}, + map[string]string{ + "component": "foo", + }, + []string{}, + []string{"foo"}, + []string{"", "", ""}, + []bool{true, true, true}, + false, + []v1.Node{}, + []*endpoint.Endpoint{ + {DNSName: "service.example.org", Targets: endpoint.Targets{"1.2.3.4"}}, + }, + false, + }, + { + "annotated Headless services return targets from node external IP if endpoints-type annotation is set", + "", + "testing", + "foo", + v1.ServiceTypeClusterIP, + "", + "", + false, + map[string]string{"component": "foo"}, + map[string]string{ + hostnameAnnotationKey: "service.example.org", + endpointsTypeAnnotationKey: EndpointsTypeNodeExternalIP, + }, + map[string]string{}, + v1.ClusterIPNone, + []string{"1.1.1.1"}, + []string{""}, + map[string]string{ + "component": "foo", + }, + []string{}, + []string{"foo"}, + []string{"", "", ""}, + []bool{true, true, true}, + false, + []v1.Node{ + { + Status: v1.NodeStatus{ + Addresses: []v1.NodeAddress{ + { + Type: v1.NodeExternalIP, + Address: "1.2.3.4", + }, + }, + }, + }, + }, + []*endpoint.Endpoint{ + {DNSName: "service.example.org", Targets: endpoint.Targets{"1.2.3.4"}}, + }, + false, + }, + { + "annotated Headless services return targets from hostIP if endpoints-type annotation is set", + "", + "testing", + "foo", + v1.ServiceTypeClusterIP, + "", + "", + false, + map[string]string{"component": "foo"}, + map[string]string{ + hostnameAnnotationKey: "service.example.org", + endpointsTypeAnnotationKey: EndpointsTypeHostIP, + }, + map[string]string{}, + v1.ClusterIPNone, + []string{"1.1.1.1"}, + []string{"1.2.3.4"}, + map[string]string{ + "component": "foo", + }, + []string{}, + []string{"foo"}, + []string{"", "", ""}, + []bool{true, true, true}, + false, + []v1.Node{}, + []*endpoint.Endpoint{ + {DNSName: "service.example.org", Targets: endpoint.Targets{"1.2.3.4"}}, + }, + false, + }, } { tc := tc t.Run(tc.title, func(t *testing.T) { @@ -2241,7 +2373,7 @@ func TestHeadlessServices(t *testing.T) { Namespace: tc.svcNamespace, Name: tc.svcName, Labels: tc.labels, - Annotations: tc.annotations, + Annotations: tc.svcAnnotations, }, Status: v1.ServiceStatus{}, } @@ -2259,10 +2391,11 @@ func TestHeadlessServices(t *testing.T) { Namespace: tc.svcNamespace, Name: podname, Labels: tc.labels, - Annotations: tc.annotations, + Annotations: tc.podAnnotations, }, Status: v1.PodStatus{ - PodIP: tc.podIPs[i], + PodIP: tc.podIPs[i], + HostIP: tc.hostIPs[i], }, } @@ -2298,6 +2431,10 @@ func TestHeadlessServices(t *testing.T) { } _, err = kubernetes.CoreV1().Endpoints(tc.svcNamespace).Create(context.Background(), endpointsObject, metav1.CreateOptions{}) require.NoError(t, err) + for _, node := range tc.nodes { + _, err = kubernetes.CoreV1().Nodes().Create(context.Background(), &node, metav1.CreateOptions{}) + require.NoError(t, err) + } // Create our object under test and get the endpoints. client, _ := NewServiceSource( diff --git a/source/source.go b/source/source.go index 91214b5f3..a59e368ef 100644 --- a/source/source.go +++ b/source/source.go @@ -44,6 +44,8 @@ const ( hostnameAnnotationKey = "external-dns.alpha.kubernetes.io/hostname" // The annotation used for specifying whether the public or private interface address is used accessAnnotationKey = "external-dns.alpha.kubernetes.io/access" + // The annotation used for specifying the type of endpoints to use for headless services + endpointsTypeAnnotationKey = "external-dns.alpha.kubernetes.io/endpoints-type" // The annotation used for defining the desired ingress target targetAnnotationKey = "external-dns.alpha.kubernetes.io/target" // The annotation used for defining the desired DNS record TTL @@ -59,6 +61,11 @@ const ( internalHostnameAnnotationKey = "external-dns.alpha.kubernetes.io/internal-hostname" ) +const ( + EndpointsTypeNodeExternalIP = "NodeExternalIP" + EndpointsTypeHostIP = "HostIP" +) + // Provider-specific annotations const ( // The annotation used for determining if traffic will go through Cloudflare @@ -151,6 +158,10 @@ func getAccessFromAnnotations(annotations map[string]string) string { return annotations[accessAnnotationKey] } +func getEndpointsTypeFromAnnotations(annotations map[string]string) string { + return annotations[endpointsTypeAnnotationKey] +} + func getInternalHostnamesFromAnnotations(annotations map[string]string) []string { internalHostnameAnnotation, exists := annotations[internalHostnameAnnotationKey] if !exists { From afe3b09f45a241750ec3ddceef59ceaf84c096d0 Mon Sep 17 00:00:00 2001 From: Raffaele Di Fazio Date: Fri, 6 May 2022 10:10:52 +0200 Subject: [PATCH 09/10] Revert "Revert "Workflow for automatic documentation creation and publishing"" --- .github/workflows/docs.yml | 43 +++++++++++++++ .gitignore | 7 +++ README.md | 83 ++++++++++++++-------------- {img => docs/img}/external-dns.png | Bin docs/scripts/copy_docs.sh | 9 +++ docs/scripts/docs.go | 47 ++++++++++++++++ docs/scripts/index.html.gotmpl | 3 + docs/scripts/requirements.txt | 5 ++ mkdocs.yml | 86 +++++++++++++++++++++++++++++ 9 files changed, 243 insertions(+), 40 deletions(-) create mode 100644 .github/workflows/docs.yml rename {img => docs/img}/external-dns.png (100%) create mode 100755 docs/scripts/copy_docs.sh create mode 100644 docs/scripts/docs.go create mode 100644 docs/scripts/index.html.gotmpl create mode 100644 docs/scripts/requirements.txt create mode 100644 mkdocs.yml diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 000000000..12179cb20 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,43 @@ +name: Release Docs + +on: + push: + tags: + - "v*" + +jobs: + release_docs: + name: Release Docs + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - uses: actions/setup-python@v2 + with: + python-version: "3.10" + cache: "pip" + cache-dependency-path: "./docs/scripts/requirements.txt" + + - uses: actions/setup-go@v2 + with: + go-version: ^1.17 + + - run: | + pip install -r docs/scripts/requirements.txt + + - name: setup + run: | + ./docs/scripts/copy_docs.sh + go run ./docs/scripts/docs.go + + - name: Configure Git user + run: | + git config --local user.email "github-actions[bot]@users.noreply.github.com" + git config --local user.name "github-actions[bot]" + + - name: build and push + run: | + mike deploy ${{ github.ref_name }} latest --push --update-aliases + mike set-default --push latest diff --git a/.gitignore b/.gitignore index 80a6ea158..ee7a88934 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,10 @@ profile.cov # Helm charts !/charts/external-dns/ + +docs/LICENSE.md +docs/code-of-conduct.md +docs/CONTRIBUTING.md +docs/index.md +docs/redirect +site \ No newline at end of file diff --git a/README.md b/README.md index 8bc505cdb..b9c92cf9c 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,16 @@ +--- +hide: + - toc + - navigation +--- +

- ExternalDNS + ExternalDNS

# ExternalDNS -[![Build Status](https://github.com/kubernetes-sigs/external-dns/workflows/Go/badge.svg)](https://github.com/kubernetes-sigs/external-dns/actions) -[![Coverage Status](https://coveralls.io/repos/github/kubernetes-sigs/external-dns/badge.svg)](https://coveralls.io/github/kubernetes-sigs/external-dns) -[![GitHub release](https://img.shields.io/github/release/kubernetes-sigs/external-dns.svg)](https://github.com/kubernetes-sigs/external-dns/releases) -[![go-doc](https://godoc.org/github.com/kubernetes-sigs/external-dns?status.svg)](https://godoc.org/github.com/kubernetes-sigs/external-dns) -[![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes-sigs/external-dns)](https://goreportcard.com/report/github.com/kubernetes-sigs/external-dns) + +[![Build Status](https://github.com/kubernetes-sigs/external-dns/workflows/Go/badge.svg)](https://github.com/kubernetes-sigs/external-dns/actions) [![Coverage Status](https://coveralls.io/repos/github/kubernetes-sigs/external-dns/badge.svg)](https://coveralls.io/github/kubernetes-sigs/external-dns) [![GitHub release](https://img.shields.io/github/release/kubernetes-sigs/external-dns.svg)](https://github.com/kubernetes-sigs/external-dns/releases) [![go-doc](https://godoc.org/github.com/kubernetes-sigs/external-dns?status.svg)](https://godoc.org/github.com/kubernetes-sigs/external-dns) [![Go Report Card](https://goreportcard.com/badge/github.com/kubernetes-sigs/external-dns)](https://goreportcard.com/report/github.com/kubernetes-sigs/external-dns) ExternalDNS synchronizes exposed Kubernetes Services and Ingresses with DNS providers. @@ -23,7 +26,7 @@ To see ExternalDNS in action, have a look at this [video](https://www.youtube.co ## The Latest Release -ExternalDNS' allows you to keep selected zones (via `--domain-filter`) synchronized with Ingresses and Services of `type=LoadBalancer` and nodes in various cloud providers: +ExternalDNS allows you to keep selected zones (via `--domain-filter`) synchronized with Ingresses and Services of `type=LoadBalancer` and nodes in various cloud providers: * [Google Cloud DNS](https://cloud.google.com/dns/docs/) * [AWS Route 53](https://aws.amazon.com/route53/) * [AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/) @@ -77,38 +80,38 @@ We define the following stability levels for providers: The following table clarifies the current status of the providers according to the aforementioned stability levels: -| Provider | Status | Maintainers | -| -------- | ------ | ----------- | -| Google Cloud DNS | Stable | | -| AWS Route 53 | Stable | | -| AWS Cloud Map | Beta | | -| Akamai Edge DNS | Beta | | -| AzureDNS | Beta | | -| BlueCat | Alpha | @seanmalloy @vinny-sabatini | -| CloudFlare | Beta | | -| RcodeZero | Alpha | | -| DigitalOcean | Alpha | | -| DNSimple | Alpha | | -| Infoblox | Alpha | @saileshgiri | -| Dyn | Alpha | | -| OpenStack Designate | Alpha | | -| PowerDNS | Alpha | | -| CoreDNS | Alpha | | -| Exoscale | Alpha | | -| Oracle Cloud Infrastructure DNS | Alpha | | -| Linode DNS | Alpha | | -| RFC2136 | Alpha | | -| NS1 | Alpha | | -| TransIP | Alpha | | -| VinylDNS | Alpha | | -| RancherDNS | Alpha | | -| OVH | Alpha | | -| Scaleway DNS | Alpha | @Sh4d1 | -| Vultr | Alpha | | -| UltraDNS | Alpha | | -| GoDaddy | Alpha | | -| Gandi | Alpha | @packi | -| SafeDNS | Alpha | @assureddt | +| Provider | Status | Maintainers | +| ------------------------------- | ------ | ---------------------------- | +| Google Cloud DNS | Stable | | +| AWS Route 53 | Stable | | +| AWS Cloud Map | Beta | | +| Akamai Edge DNS | Beta | | +| AzureDNS | Beta | | +| BlueCat | Alpha | @seanmalloy @vinny-sabatini | +| CloudFlare | Beta | | +| RcodeZero | Alpha | | +| DigitalOcean | Alpha | | +| DNSimple | Alpha | | +| Infoblox | Alpha | @saileshgiri | +| Dyn | Alpha | | +| OpenStack Designate | Alpha | | +| PowerDNS | Alpha | | +| CoreDNS | Alpha | | +| Exoscale | Alpha | | +| Oracle Cloud Infrastructure DNS | Alpha | | +| Linode DNS | Alpha | | +| RFC2136 | Alpha | | +| NS1 | Alpha | | +| TransIP | Alpha | | +| VinylDNS | Alpha | | +| RancherDNS | Alpha | | +| OVH | Alpha | | +| Scaleway DNS | Alpha | @Sh4d1 | +| Vultr | Alpha | | +| UltraDNS | Alpha | | +| GoDaddy | Alpha | | +| Gandi | Alpha | @packi | +| SafeDNS | Alpha | @assureddt | ## Kubernetes version compatibility @@ -174,7 +177,7 @@ The following tutorials are provided: * [UltraDNS](docs/tutorials/ultradns.md) * [GoDaddy](docs/tutorials/godaddy.md) * [Gandi](docs/tutorials/gandi.md) -* [SafeDNS](docs/tutorials/safedns.md) +* [SafeDNS](docs/tutorials/UKFast_SafeDNS.md) * [Nodes as source](docs/tutorials/nodes.md) ### Running Locally diff --git a/img/external-dns.png b/docs/img/external-dns.png similarity index 100% rename from img/external-dns.png rename to docs/img/external-dns.png diff --git a/docs/scripts/copy_docs.sh b/docs/scripts/copy_docs.sh new file mode 100755 index 000000000..7e114b84a --- /dev/null +++ b/docs/scripts/copy_docs.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -eo pipefail + +cp CONTRIBUTING.md code-of-conduct.md ./docs/ + +cp LICENSE ./docs/LICENSE.md + +cp README.md ./docs/index.md diff --git a/docs/scripts/docs.go b/docs/scripts/docs.go new file mode 100644 index 000000000..2a79b6f01 --- /dev/null +++ b/docs/scripts/docs.go @@ -0,0 +1,47 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package main + +import ( + "log" + "os" + "strings" +) + +func removeLinkPrefixInIndex() { + content, err := os.ReadFile("./docs/index.md") + if err != nil { + log.Fatalf("Could not read index.md file. Make sure to run copy_docs.sh script first. Original error: %s", err) + } + + updatedContent := strings.ReplaceAll(string(content), "](./docs/", "](") + updatedContent = strings.ReplaceAll(updatedContent, "](docs/", "](") + + f, err := os.OpenFile("./docs/index.md", os.O_RDWR, 0644) + if err != nil { + log.Fatalf("Could not open index.md file to update content. Original error: %s", err) + } + defer f.Close() + + if _, err := f.WriteString(updatedContent); err != nil { + log.Fatalf("Failed writing links update to index.md. Original error: %s", err) + } +} + +func main() { + removeLinkPrefixInIndex() +} diff --git a/docs/scripts/index.html.gotmpl b/docs/scripts/index.html.gotmpl new file mode 100644 index 000000000..26b836eba --- /dev/null +++ b/docs/scripts/index.html.gotmpl @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/docs/scripts/requirements.txt b/docs/scripts/requirements.txt new file mode 100644 index 000000000..cacaecf19 --- /dev/null +++ b/docs/scripts/requirements.txt @@ -0,0 +1,5 @@ +mkdocs-git-revision-date-localized-plugin == 1.0.0 +mkdocs == 1.3.0 +mkdocs-material == 8.2.8 +mkdocs-literate-nav == 0.4.0 +mike == 1.1.2 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 000000000..c1b9ed623 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,86 @@ +site_name: external-dns +site_author: external-dns maintainers + +repo_name: kubernetes-sigs/external-dns +repo_url: https://github.com/kubernetes-sigs/external-dns/ + +nav: + - index.md + - Tutorials: tutorials/ + - Advanced Topics: + - Initial Design: initial-design.md + - TTL: ttl.md + - Contributing: + - Kubernetes Contributions: CONTRIBUTING.md + - Release: release.md + - contributing/* + - About: + - FAQ: faq.md + - Out of Incubator: 20190708-external-dns-incubator.md + - Code of Conduct: code-of-conduct.md + - License: LICENSE.md + +theme: + name: material + features: + - content.code.annotate + - navigation.top + - navigation.tracking + - navigation.indexes + - navigation.instant + - navigation.tabs + - navigation.tabs.sticky + +extra: + version: + provider: mike + +markdown_extensions: + - meta + - tables + - toc: + permalink: true + - abbr + - extra + - admonition + - smarty + - sane_lists + - nl2br + - attr_list + - def_list + - footnotes + - md_in_html + - pymdownx.arithmatex: + generic: true + - pymdownx.betterem: + smart_enable: all + - pymdownx.caret + - pymdownx.details + - pymdownx.emoji: + emoji_index: !!python/name:materialx.emoji.twemoji + emoji_generator: !!python/name:materialx.emoji.to_svg + - pymdownx.highlight: + use_pygments: true + anchor_linenums: true + - pymdownx.inlinehilite + - pymdownx.keys + - pymdownx.mark + - pymdownx.smartsymbols + - pymdownx.snippets + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true + - pymdownx.tilde + - pymdownx.tasklist: + custom_checkbox: true + +plugins: + - search + - literate-nav + - git-revision-date-localized: + type: date + fallback_to_build_date: true From 2a37309d508474462df33275378b12111fa3e842 Mon Sep 17 00:00:00 2001 From: Raffaele Di Fazio Date: Fri, 6 May 2022 13:25:27 +0000 Subject: [PATCH 10/10] bumps golang crypto pkg Signed-off-by: GitHub --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index ba66f0ce8..1fb7012af 100644 --- a/go.mod +++ b/go.mod @@ -139,7 +139,7 @@ require ( go.uber.org/atomic v1.7.0 // indirect go.uber.org/multierr v1.6.0 // indirect go.uber.org/zap v1.19.1 // indirect - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 // indirect + golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f // indirect golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 // indirect golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect diff --git a/go.sum b/go.sum index a15980478..7ca5004b5 100644 --- a/go.sum +++ b/go.sum @@ -1365,6 +1365,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 h1:HWj/xjIHfjYU5nVXpTM0s3 golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f h1:OeJjE6G4dgCY4PIXvIRQbE8+RX+uXZyGhUy/ksMGJoc= +golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=