From 6738da1d2879b8c28f636a670c62d5c824f597b2 Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Wed, 20 Dec 2017 12:05:36 -0500 Subject: [PATCH] Fix problem accessing private docker registries In 027c8b9ef27ff85fb9eb4a18f04e3809d4065c7a, we added code to move from .dockercfg to config.json file. But we forgot to use the right secret type and the key to store the base64'ed creds --- hack/make-rules/test-cmd-util.sh | 4 ++-- pkg/kubectl/secret_for_docker_registry.go | 14 +++++++------- pkg/kubectl/secret_for_docker_registry_test.go | 18 +++++++++--------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 4690d31439b..9e05ffa867d 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -2227,8 +2227,8 @@ run_secrets_test() { kubectl create secret docker-registry test-secret --docker-username=test-user --docker-password=test-password --docker-email='test-user@test.com' --namespace=test-secrets # Post-condition: secret exists and has expected values kube::test::get_object_assert 'secret/test-secret --namespace=test-secrets' "{{$id_field}}" 'test-secret' - kube::test::get_object_assert 'secret/test-secret --namespace=test-secrets' "{{$secret_type}}" 'kubernetes.io/dockercfg' - [[ "$(kubectl get secret/test-secret --namespace=test-secrets -o yaml "${kube_flags[@]}" | grep '.dockercfg:')" ]] + kube::test::get_object_assert 'secret/test-secret --namespace=test-secrets' "{{$secret_type}}" 'kubernetes.io/dockerconfigjson' + [[ "$(kubectl get secret/test-secret --namespace=test-secrets -o yaml "${kube_flags[@]}" | grep '.dockerconfigjson:')" ]] # Clean-up kubectl delete secret test-secret --namespace=test-secrets diff --git a/pkg/kubectl/secret_for_docker_registry.go b/pkg/kubectl/secret_for_docker_registry.go index fc1e15b6b91..cad90cfe1a2 100644 --- a/pkg/kubectl/secret_for_docker_registry.go +++ b/pkg/kubectl/secret_for_docker_registry.go @@ -85,15 +85,15 @@ func (s SecretForDockerRegistryGeneratorV1) StructuredGenerate() (runtime.Object if err := s.validate(); err != nil { return nil, err } - dockercfgContent, err := handleDockercfgContent(s.Username, s.Password, s.Email, s.Server) + dockercfgJsonContent, err := handleDockerCfgJsonContent(s.Username, s.Password, s.Email, s.Server) if err != nil { return nil, err } secret := &v1.Secret{} secret.Name = s.Name - secret.Type = v1.SecretTypeDockercfg + secret.Type = v1.SecretTypeDockerConfigJson secret.Data = map[string][]byte{} - secret.Data[v1.DockerConfigKey] = dockercfgContent + secret.Data[v1.DockerConfigJsonKey] = dockercfgJsonContent if s.AppendHash { h, err := hash.SecretHash(secret) if err != nil { @@ -133,17 +133,17 @@ func (s SecretForDockerRegistryGeneratorV1) validate() error { return nil } -// handleDockercfgContent serializes a dockercfg json file -func handleDockercfgContent(username, password, email, server string) ([]byte, error) { +// handleDockerCfgJsonContent serializes a ~/.docker/config.json file +func handleDockerCfgJsonContent(username, password, email, server string) ([]byte, error) { dockercfgAuth := credentialprovider.DockerConfigEntry{ Username: username, Password: password, Email: email, } - dockerCfg := credentialprovider.DockerConfigJson{ + dockerCfgJson := credentialprovider.DockerConfigJson{ Auths: map[string]credentialprovider.DockerConfigEntry{server: dockercfgAuth}, } - return json.Marshal(dockerCfg) + return json.Marshal(dockerCfgJson) } diff --git a/pkg/kubectl/secret_for_docker_registry_test.go b/pkg/kubectl/secret_for_docker_registry_test.go index 66d1ec12feb..844acc3bccc 100644 --- a/pkg/kubectl/secret_for_docker_registry_test.go +++ b/pkg/kubectl/secret_for_docker_registry_test.go @@ -26,11 +26,11 @@ import ( func TestSecretForDockerRegistryGenerate(t *testing.T) { username, password, email, server := "test-user", "test-password", "test-user@example.org", "https://index.docker.io/v1/" - secretData, err := handleDockercfgContent(username, password, email, server) + secretData, err := handleDockerCfgJsonContent(username, password, email, server) if err != nil { t.Errorf("unexpected error: %v", err) } - secretDataNoEmail, err := handleDockercfgContent(username, password, "", server) + secretDataNoEmail, err := handleDockerCfgJsonContent(username, password, "", server) if err != nil { t.Errorf("unexpected error: %v", err) } @@ -53,9 +53,9 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { Name: "foo", }, Data: map[string][]byte{ - v1.DockerConfigKey: secretData, + v1.DockerConfigJsonKey: secretData, }, - Type: v1.SecretTypeDockercfg, + Type: v1.SecretTypeDockerConfigJson, }, expectErr: false, }, @@ -70,12 +70,12 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { }, expected: &v1.Secret{ ObjectMeta: metav1.ObjectMeta{ - Name: "foo-94759gc65b", + Name: "foo-548cm7fgdh", }, Data: map[string][]byte{ - v1.DockerConfigKey: secretData, + v1.DockerConfigJsonKey: secretData, }, - Type: v1.SecretTypeDockercfg, + Type: v1.SecretTypeDockerConfigJson, }, expectErr: false, }, @@ -91,9 +91,9 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { Name: "foo", }, Data: map[string][]byte{ - v1.DockerConfigKey: secretDataNoEmail, + v1.DockerConfigJsonKey: secretDataNoEmail, }, - Type: v1.SecretTypeDockercfg, + Type: v1.SecretTypeDockerConfigJson, }, expectErr: false, },