Skip to content

Commit c47c189

Browse files
Merge pull request #22659 from adambkaplan/fix-registry-auth
Bug 1701422: registry auth without port number
2 parents b550022 + 7b4e4e6 commit c47c189

2 files changed

Lines changed: 41 additions & 10 deletions

File tree

pkg/serviceaccounts/controllers/docker_registry_service.go

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99

1010
"k8s.io/klog"
1111

12-
"k8s.io/api/core/v1"
12+
v1 "k8s.io/api/core/v1"
1313
"k8s.io/apimachinery/pkg/runtime"
1414
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
1515
"k8s.io/apimachinery/pkg/util/sets"
@@ -249,12 +249,21 @@ func getDockerRegistryLocations(lister listers.ServiceLister, location serviceLo
249249

250250
hasClusterIP := (len(service.Spec.ClusterIP) > 0) && (net.ParseIP(service.Spec.ClusterIP) != nil)
251251
if hasClusterIP && len(service.Spec.Ports) > 0 {
252+
svcPort := service.Spec.Ports[0].Port
252253
ret := []string{
253-
net.JoinHostPort(service.Spec.ClusterIP, fmt.Sprintf("%d", service.Spec.Ports[0].Port)),
254-
net.JoinHostPort(fmt.Sprintf("%s.%s.svc", service.Name, service.Namespace), fmt.Sprintf("%d", service.Spec.Ports[0].Port)),
254+
net.JoinHostPort(service.Spec.ClusterIP, fmt.Sprintf("%d", svcPort)),
255+
net.JoinHostPort(fmt.Sprintf("%s.%s.svc", service.Name, service.Namespace), fmt.Sprintf("%d", svcPort)),
256+
}
257+
// Bug 1701422: if using HTTP/S default ports, add locations without the port number
258+
if svcPort == 80 || svcPort == 443 {
259+
ret = append(ret, service.Spec.ClusterIP, fmt.Sprintf("%s.%s.svc", service.Name, service.Namespace))
255260
}
256261
if len(clusterDNSSuffix) > 0 {
257-
ret = append(ret, net.JoinHostPort(fmt.Sprintf("%s.%s.svc."+clusterDNSSuffix, service.Name, service.Namespace), fmt.Sprintf("%d", service.Spec.Ports[0].Port)))
262+
ret = append(ret, net.JoinHostPort(fmt.Sprintf("%s.%s.svc."+clusterDNSSuffix, service.Name, service.Namespace), fmt.Sprintf("%d", svcPort)))
263+
// Bug 1701422: if using HTTP/S default ports, add locations without the port number
264+
if svcPort == 80 || svcPort == 443 {
265+
ret = append(ret, fmt.Sprintf("%s.%s.svc."+clusterDNSSuffix, service.Name, service.Namespace))
266+
}
258267
}
259268

260269
return ret

pkg/serviceaccounts/controllers/docker_registry_service_test.go

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import (
77
"testing"
88
"time"
99

10-
"k8s.io/api/core/v1"
10+
v1 "k8s.io/api/core/v1"
1111
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1212
"k8s.io/apimachinery/pkg/runtime"
1313
"k8s.io/apimachinery/pkg/watch"
@@ -28,7 +28,7 @@ var (
2828
ObjectMeta: metav1.ObjectMeta{Name: registryName, Namespace: registryNamespace},
2929
Spec: v1.ServiceSpec{
3030
ClusterIP: "172.16.123.123",
31-
Ports: []v1.ServicePort{{Port: 1235}},
31+
Ports: []v1.ServicePort{{Port: 443}},
3232
},
3333
}
3434
)
@@ -182,7 +182,14 @@ func TestUpdateNewStyleSecretAndDNSSuffixAndAdditionalURLs(t *testing.T) {
182182
}
183183

184184
expectedDockercfgMap := credentialprovider.DockerConfig{}
185-
for _, key := range []string{"foo.bar.com", "172.16.123.123:1235", "docker-registry.default.svc:1235", "docker-registry.default.svc.something.else:1235"} {
185+
expectedLocations := []string{"foo.bar.com",
186+
"172.16.123.123:443",
187+
"172.16.123.123",
188+
"docker-registry.default.svc:443",
189+
"docker-registry.default.svc",
190+
"docker-registry.default.svc.something.else:443",
191+
"docker-registry.default.svc.something.else"}
192+
for _, key := range expectedLocations {
186193
expectedDockercfgMap[key] = credentialprovider.DockerConfigEntry{
187194
Username: "serviceaccount",
188195
Password: newStyleDockercfgSecret.Annotations[ServiceAccountTokenValueAnnotation],
@@ -271,7 +278,12 @@ func TestUpdateOldStyleSecretWithKey(t *testing.T) {
271278
}
272279

273280
expectedDockercfgMap := credentialprovider.DockerConfig{}
274-
for _, key := range []string{"172.16.123.123:1235", "docker-registry.default.svc:1235"} {
281+
expectedLocations := []string{
282+
"172.16.123.123:443",
283+
"172.16.123.123",
284+
"docker-registry.default.svc:443",
285+
"docker-registry.default.svc"}
286+
for _, key := range expectedLocations {
275287
expectedDockercfgMap[key] = credentialprovider.DockerConfigEntry{
276288
Username: "serviceaccount",
277289
Password: "token-value",
@@ -362,7 +374,12 @@ func TestUpdateOldStyleSecretWithoutKey(t *testing.T) {
362374
}
363375

364376
expectedDockercfgMap := credentialprovider.DockerConfig{}
365-
for _, key := range []string{"172.16.123.123:1235", "docker-registry.default.svc:1235"} {
377+
expectedLocations := []string{
378+
"172.16.123.123:443",
379+
"172.16.123.123",
380+
"docker-registry.default.svc:443",
381+
"docker-registry.default.svc"}
382+
for _, key := range expectedLocations {
366383
expectedDockercfgMap[key] = credentialprovider.DockerConfigEntry{
367384
Username: "serviceaccount",
368385
Password: "the-sa-bearer-token",
@@ -496,7 +513,12 @@ func TestClearSecretAndRecreate(t *testing.T) {
496513
}
497514

498515
expectedDockercfgMap := credentialprovider.DockerConfig{}
499-
for _, key := range []string{"172.16.123.123:1235", "docker-registry.default.svc:1235"} {
516+
expectedLocations := []string{
517+
"172.16.123.123:443",
518+
"172.16.123.123",
519+
"docker-registry.default.svc:443",
520+
"docker-registry.default.svc"}
521+
for _, key := range expectedLocations {
500522
expectedDockercfgMap[key] = credentialprovider.DockerConfigEntry{
501523
Username: "serviceaccount",
502524
Password: "the-token",

0 commit comments

Comments
 (0)