Skip to content

Commit 173ceb8

Browse files
committed
coredns(plugin): Limit plugins enabled in kuadrant CoreDNS
Limit the number of plugins included by default in the kuadrant build of CoreDNS. The plugins enabled are the required ones and more simple plugins with few additional dependencies but are useful for debug/testing purposes. The `trace` plugin had licensing issues and was the main reason to reduce the plugin imports. Signed-off-by: Michael Nairn <[email protected]>
1 parent 8bec8a7 commit 173ceb8

File tree

5 files changed

+135
-512
lines changed

5 files changed

+135
-512
lines changed

coredns/plugin/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ COPY go.sum go.sum
1212
RUN go mod download
1313

1414
# Copy the go source
15-
COPY cmd/coredns.go cmd/coredns.go
15+
COPY cmd/ cmd/
1616
COPY dnsop/ dnsop/
1717
COPY k8s.go k8s.go
1818
COPY kuadrant.go kuadrant.go

coredns/plugin/cmd/coredns.go

+2-24
Original file line numberDiff line numberDiff line change
@@ -5,38 +5,16 @@ import (
55

66
"github.com/coredns/caddy"
77
"github.com/coredns/coredns/core/dnsserver"
8-
_ "github.com/coredns/coredns/core/plugin"
98
"github.com/coredns/coredns/coremain"
109

1110
_ "github.com/kuadrant/coredns-kuadrant"
11+
"github.com/kuadrant/coredns-kuadrant/cmd/plugin"
1212
)
1313

14-
var dropPlugins = map[string]bool{
15-
"kubernetes": true,
16-
"k8s_external": true,
17-
}
18-
1914
const pluginVersion = "0.0.0"
2015

21-
// https://github.com/ori-edge/k8s_gateway/blob/master/cmd/coredns.go
2216
func init() {
23-
var directives []string
24-
var alreadyAdded bool
25-
26-
for _, name := range dnsserver.Directives {
27-
28-
if dropPlugins[name] {
29-
if !alreadyAdded {
30-
directives = append(directives, "kuadrant")
31-
alreadyAdded = true
32-
}
33-
continue
34-
}
35-
directives = append(directives, name)
36-
}
37-
38-
dnsserver.Directives = directives
39-
17+
dnsserver.Directives = plugin.Directives
4018
}
4119

4220
func main() {

coredns/plugin/cmd/plugin/plugin.go

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package plugin
2+
3+
// Cut down version of https://github.com/coredns/coredns/blob/master/core/plugin/zplugin.go
4+
// Only import plugins we want to enable in our build of CoreDNS.
5+
// Note: Any plugin removed here should have it's Directive removed also.
6+
7+
import (
8+
_ "github.com/coredns/coredns/plugin/cache"
9+
_ "github.com/coredns/coredns/plugin/cancel"
10+
_ "github.com/coredns/coredns/plugin/debug"
11+
_ "github.com/coredns/coredns/plugin/errors"
12+
_ "github.com/coredns/coredns/plugin/file"
13+
_ "github.com/coredns/coredns/plugin/forward"
14+
_ "github.com/coredns/coredns/plugin/geoip"
15+
_ "github.com/coredns/coredns/plugin/header"
16+
_ "github.com/coredns/coredns/plugin/health"
17+
_ "github.com/coredns/coredns/plugin/hosts"
18+
_ "github.com/coredns/coredns/plugin/local"
19+
_ "github.com/coredns/coredns/plugin/log"
20+
_ "github.com/coredns/coredns/plugin/loop"
21+
_ "github.com/coredns/coredns/plugin/metadata"
22+
_ "github.com/coredns/coredns/plugin/metrics"
23+
_ "github.com/coredns/coredns/plugin/minimal"
24+
_ "github.com/coredns/coredns/plugin/multisocket"
25+
_ "github.com/coredns/coredns/plugin/nsid"
26+
_ "github.com/coredns/coredns/plugin/ready"
27+
_ "github.com/coredns/coredns/plugin/reload"
28+
_ "github.com/coredns/coredns/plugin/rewrite"
29+
_ "github.com/coredns/coredns/plugin/root"
30+
_ "github.com/coredns/coredns/plugin/timeouts"
31+
_ "github.com/coredns/coredns/plugin/tls"
32+
_ "github.com/coredns/coredns/plugin/view"
33+
_ "github.com/coredns/coredns/plugin/whoami"
34+
)
35+
36+
// Directives are registered in the order they should be
37+
// executed.
38+
//
39+
// Ordering is VERY important. Every plugin will
40+
// feel the effects of all other plugin below
41+
// (after) them during a request, but they must not
42+
// care what plugin above them are doing.
43+
var Directives = []string{
44+
"root",
45+
"metadata",
46+
"geoip",
47+
"cancel",
48+
"tls",
49+
"timeouts",
50+
"multisocket",
51+
"reload",
52+
"nsid",
53+
"debug",
54+
"ready",
55+
"health",
56+
"prometheus",
57+
"errors",
58+
"log",
59+
"local",
60+
"cache",
61+
"rewrite",
62+
"header",
63+
"minimal",
64+
"hosts",
65+
"kuadrant",
66+
"file",
67+
"loop",
68+
"forward",
69+
"whoami",
70+
"view",
71+
}

coredns/plugin/go.mod

+20-111
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/kuadrant/coredns-kuadrant
22

3-
go 1.23
3+
go 1.23.0
44

55
toolchain go1.23.4
66

@@ -9,163 +9,72 @@ require (
99
github.com/coredns/coredns v1.12.0
1010
github.com/kuadrant/dns-operator v0.12.0
1111
github.com/miekg/dns v1.1.63
12-
k8s.io/api v0.31.2
13-
k8s.io/apimachinery v0.31.2
14-
k8s.io/client-go v0.31.2
12+
k8s.io/api v0.32.2
13+
k8s.io/apimachinery v0.32.2
14+
k8s.io/client-go v0.32.2
1515
sigs.k8s.io/external-dns v0.14.0
1616
)
1717

1818
require (
19-
cloud.google.com/go/auth v0.10.2 // indirect
20-
cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect
21-
cloud.google.com/go/compute/metadata v0.5.2 // indirect
22-
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect
23-
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
24-
github.com/Azure/go-autorest/autorest v0.11.29 // indirect
25-
github.com/Azure/go-autorest/autorest/adal v0.9.22 // indirect
26-
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13 // indirect
27-
github.com/Azure/go-autorest/autorest/azure/cli v0.4.6 // indirect
28-
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
29-
github.com/Azure/go-autorest/autorest/to v0.2.0 // indirect
30-
github.com/Azure/go-autorest/logger v0.2.1 // indirect
31-
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
32-
github.com/DataDog/appsec-internal-go v1.8.0 // indirect
33-
github.com/DataDog/datadog-agent/pkg/obfuscate v0.48.0 // indirect
34-
github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.57.0 // indirect
35-
github.com/DataDog/datadog-go/v5 v5.3.0 // indirect
36-
github.com/DataDog/go-libddwaf/v3 v3.4.0 // indirect
37-
github.com/DataDog/go-tuf v1.1.0-0.5.2 // indirect
38-
github.com/DataDog/sketches-go v1.4.5 // indirect
39-
github.com/Microsoft/go-winio v0.6.1 // indirect
4019
github.com/apparentlymart/go-cidr v1.1.0 // indirect
41-
github.com/aws/aws-sdk-go v1.55.5 // indirect
42-
github.com/aws/aws-sdk-go-v2 v1.32.5 // indirect
43-
github.com/aws/aws-sdk-go-v2/config v1.28.5 // indirect
44-
github.com/aws/aws-sdk-go-v2/credentials v1.17.46 // indirect
45-
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.20 // indirect
46-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.24 // indirect
47-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.24 // indirect
48-
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
49-
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.1 // indirect
50-
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.5 // indirect
51-
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.34.5 // indirect
52-
github.com/aws/aws-sdk-go-v2/service/sso v1.24.6 // indirect
53-
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.5 // indirect
54-
github.com/aws/aws-sdk-go-v2/service/sts v1.33.1 // indirect
55-
github.com/aws/smithy-go v1.22.1 // indirect
5620
github.com/beorn7/perks v1.0.1 // indirect
5721
github.com/cespare/xxhash/v2 v2.3.0 // indirect
58-
github.com/coreos/go-semver v0.3.0 // indirect
59-
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534 // indirect
6022
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
61-
github.com/dimchansky/utfbom v1.1.1 // indirect
6223
github.com/dnstap/golang-dnstap v0.4.0 // indirect
63-
github.com/dustin/go-humanize v1.0.1 // indirect
64-
github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 // indirect
65-
github.com/ebitengine/purego v0.6.0-alpha.5 // indirect
66-
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
6724
github.com/expr-lang/expr v1.16.9 // indirect
6825
github.com/farsightsec/golang-framestream v0.3.0 // indirect
69-
github.com/felixge/httpsnoop v1.0.4 // indirect
7026
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568 // indirect
7127
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
7228
github.com/go-logr/logr v1.4.2 // indirect
73-
github.com/go-logr/stdr v1.2.2 // indirect
74-
github.com/go-openapi/jsonpointer v0.21.0 // indirect
75-
github.com/go-openapi/jsonreference v0.21.0 // indirect
76-
github.com/go-openapi/swag v0.23.0 // indirect
7729
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
7830
github.com/gogo/protobuf v1.3.2 // indirect
79-
github.com/golang-jwt/jwt/v4 v4.5.1 // indirect
80-
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
8131
github.com/golang/protobuf v1.5.4 // indirect
82-
github.com/google/gnostic-models v0.6.8 // indirect
8332
github.com/google/go-cmp v0.6.0 // indirect
8433
github.com/google/gofuzz v1.2.0 // indirect
85-
github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af // indirect
86-
github.com/google/s2a-go v0.1.8 // indirect
87-
github.com/google/uuid v1.6.0 // indirect
88-
github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect
89-
github.com/googleapis/gax-go/v2 v2.14.0 // indirect
34+
github.com/google/pprof v0.0.0-20241029153458-d1b30febd7db // indirect
9035
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect
91-
github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 // indirect
92-
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
93-
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
94-
github.com/imdario/mergo v0.3.16 // indirect
95-
github.com/infobloxopen/go-trees v0.0.0-20200715205103-96a057b8dfb9 // indirect
96-
github.com/jmespath/go-jmespath v0.4.0 // indirect
97-
github.com/josharian/intern v1.0.0 // indirect
9836
github.com/json-iterator/go v1.1.12 // indirect
9937
github.com/klauspost/compress v1.17.9 // indirect
100-
github.com/mailru/easyjson v0.7.7 // indirect
38+
github.com/kr/text v0.2.0 // indirect
10139
github.com/martinlindhe/base36 v1.1.1 // indirect
10240
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
103-
github.com/mitchellh/go-homedir v1.1.0 // indirect
104-
github.com/mitchellh/mapstructure v1.5.0 // indirect
10541
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
10642
github.com/modern-go/reflect2 v1.0.2 // indirect
10743
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
108-
github.com/onsi/ginkgo/v2 v2.19.0 // indirect
109-
github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 // indirect
44+
github.com/onsi/ginkgo/v2 v2.21.0 // indirect
11045
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b // indirect
111-
github.com/openzipkin-contrib/zipkin-go-opentracing v0.5.0 // indirect
112-
github.com/openzipkin/zipkin-go v0.4.3 // indirect
11346
github.com/oschwald/geoip2-golang v1.11.0 // indirect
11447
github.com/oschwald/maxminddb-golang v1.13.0 // indirect
115-
github.com/outcaste-io/ristretto v0.2.3 // indirect
116-
github.com/philhofer/fwd v1.1.3-0.20240612014219-fbbf4953d986 // indirect
117-
github.com/pkg/errors v0.9.1 // indirect
11848
github.com/prometheus/client_golang v1.20.5 // indirect
11949
github.com/prometheus/client_model v0.6.1 // indirect
12050
github.com/prometheus/common v0.60.1 // indirect
12151
github.com/prometheus/procfs v0.15.1 // indirect
122-
github.com/quic-go/quic-go v0.48.1 // indirect
123-
github.com/ryanuber/go-glob v1.0.0 // indirect
124-
github.com/secure-systems-lab/go-securesystemslib v0.7.0 // indirect
52+
github.com/quic-go/quic-go v0.50.0 // indirect
12553
github.com/sirupsen/logrus v1.9.3 // indirect
12654
github.com/spf13/pflag v1.0.5 // indirect
127-
github.com/tinylib/msgp v1.2.1 // indirect
12855
github.com/x448/float16 v0.8.4 // indirect
129-
go.etcd.io/etcd/api/v3 v3.5.17 // indirect
130-
go.etcd.io/etcd/client/pkg/v3 v3.5.17 // indirect
131-
go.etcd.io/etcd/client/v3 v3.5.17 // indirect
132-
go.opencensus.io v0.24.0 // indirect
133-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.54.0 // indirect
134-
go.opentelemetry.io/otel v1.29.0 // indirect
135-
go.opentelemetry.io/otel/metric v1.29.0 // indirect
136-
go.opentelemetry.io/otel/trace v1.29.0 // indirect
137-
go.uber.org/atomic v1.11.0 // indirect
13856
go.uber.org/automaxprocs v1.6.0 // indirect
139-
go.uber.org/mock v0.4.0 // indirect
140-
go.uber.org/multierr v1.11.0 // indirect
141-
go.uber.org/zap v1.26.0 // indirect
142-
golang.org/x/crypto v0.31.0 // indirect
57+
go.uber.org/mock v0.5.0 // indirect
58+
golang.org/x/crypto v0.36.0 // indirect
14359
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect
144-
golang.org/x/mod v0.18.0 // indirect
145-
golang.org/x/net v0.31.0 // indirect
60+
golang.org/x/mod v0.21.0 // indirect
61+
golang.org/x/net v0.37.0 // indirect
14662
golang.org/x/oauth2 v0.24.0 // indirect
147-
golang.org/x/sync v0.10.0 // indirect
148-
golang.org/x/sys v0.28.0 // indirect
149-
golang.org/x/term v0.27.0 // indirect
150-
golang.org/x/text v0.21.0 // indirect
63+
golang.org/x/sync v0.12.0 // indirect
64+
golang.org/x/sys v0.31.0 // indirect
65+
golang.org/x/term v0.30.0 // indirect
66+
golang.org/x/text v0.23.0 // indirect
15167
golang.org/x/time v0.8.0 // indirect
152-
golang.org/x/tools v0.22.0 // indirect
153-
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
154-
google.golang.org/api v0.206.0 // indirect
155-
google.golang.org/genproto/googleapis/api v0.0.0-20241104194629-dd2ea8efbc28 // indirect
68+
golang.org/x/tools v0.26.0 // indirect
15669
google.golang.org/genproto/googleapis/rpc v0.0.0-20241104194629-dd2ea8efbc28 // indirect
15770
google.golang.org/grpc v1.68.0 // indirect
15871
google.golang.org/protobuf v1.35.2 // indirect
159-
gopkg.in/DataDog/dd-trace-go.v1 v1.69.1 // indirect
16072
gopkg.in/inf.v0 v0.9.1 // indirect
161-
gopkg.in/yaml.v2 v2.4.0 // indirect
162-
gopkg.in/yaml.v3 v3.0.1 // indirect
16373
k8s.io/klog/v2 v2.130.1 // indirect
164-
k8s.io/kube-openapi v0.0.0-20240423202451-8948a665c108 // indirect
165-
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 // indirect
74+
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
16675
sigs.k8s.io/controller-runtime v0.18.0 // indirect
167-
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
168-
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
76+
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
77+
sigs.k8s.io/structured-merge-diff/v4 v4.4.2 // indirect
16978
sigs.k8s.io/yaml v1.4.0 // indirect
17079
)
17180

0 commit comments

Comments
 (0)