diff --git a/provider/google/google.go b/provider/google/google.go index cc01a9642..b591fa32e 100644 --- a/provider/google/google.go +++ b/provider/google/google.go @@ -467,6 +467,12 @@ func newRecord(ep *endpoint.Endpoint) *dns.ResourceRecordSet { } } + if ep.RecordType == endpoint.RecordTypeSRV { + for i, srvRecord := range ep.Targets { + targets[i] = provider.EnsureTrailingDot(srvRecord) + } + } + // no annotation results in a Ttl of 0, default to 300 for backwards-compatibility var ttl int64 = googleRecordTTL if ep.RecordTTL.IsConfigured() { diff --git a/source/crd_test.go b/source/crd_test.go index 4f26aacfa..736e25f1a 100644 --- a/source/crd_test.go +++ b/source/crd_test.go @@ -383,6 +383,27 @@ func testCRDSourceEndpoints(t *testing.T) { expectEndpoints: true, expectError: false, }, + { + title: "Create SRV record", + registeredAPIVersion: "test.k8s.io/v1alpha1", + apiVersion: "test.k8s.io/v1alpha1", + registeredKind: "DNSEndpoint", + kind: "DNSEndpoint", + namespace: "foo", + registeredNamespace: "foo", + labels: map[string]string{"test": "that"}, + labelFilter: "test=that", + endpoints: []*endpoint.Endpoint{ + { + DNSName: "_svc._tcp.example.org", + Targets: endpoint.Targets{"0 0 80 abc.example.org", "0 0 80 def.example.org"}, + RecordType: endpoint.RecordTypeSRV, + RecordTTL: 180, + }, + }, + expectEndpoints: true, + expectError: false, + }, } { ti := ti t.Run(ti.title, func(t *testing.T) {