Commit 6738da1d authored by Davanum Srinivas's avatar Davanum Srinivas

Fix problem accessing private docker registries

In 027c8b9e, 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
parent 51fbd6e6
...@@ -2227,8 +2227,8 @@ run_secrets_test() { ...@@ -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 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 # 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' "{{$id_field}}" 'test-secret'
kube::test::get_object_assert 'secret/test-secret --namespace=test-secrets' "{{$secret_type}}" 'kubernetes.io/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 '.dockercfg:')" ]] [[ "$(kubectl get secret/test-secret --namespace=test-secrets -o yaml "${kube_flags[@]}" | grep '.dockerconfigjson:')" ]]
# Clean-up # Clean-up
kubectl delete secret test-secret --namespace=test-secrets kubectl delete secret test-secret --namespace=test-secrets
......
...@@ -85,15 +85,15 @@ func (s SecretForDockerRegistryGeneratorV1) StructuredGenerate() (runtime.Object ...@@ -85,15 +85,15 @@ func (s SecretForDockerRegistryGeneratorV1) StructuredGenerate() (runtime.Object
if err := s.validate(); err != nil { if err := s.validate(); err != nil {
return nil, err 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 { if err != nil {
return nil, err return nil, err
} }
secret := &v1.Secret{} secret := &v1.Secret{}
secret.Name = s.Name secret.Name = s.Name
secret.Type = v1.SecretTypeDockercfg secret.Type = v1.SecretTypeDockerConfigJson
secret.Data = map[string][]byte{} secret.Data = map[string][]byte{}
secret.Data[v1.DockerConfigKey] = dockercfgContent secret.Data[v1.DockerConfigJsonKey] = dockercfgJsonContent
if s.AppendHash { if s.AppendHash {
h, err := hash.SecretHash(secret) h, err := hash.SecretHash(secret)
if err != nil { if err != nil {
...@@ -133,17 +133,17 @@ func (s SecretForDockerRegistryGeneratorV1) validate() error { ...@@ -133,17 +133,17 @@ func (s SecretForDockerRegistryGeneratorV1) validate() error {
return nil return nil
} }
// handleDockercfgContent serializes a dockercfg json file // handleDockerCfgJsonContent serializes a ~/.docker/config.json file
func handleDockercfgContent(username, password, email, server string) ([]byte, error) { func handleDockerCfgJsonContent(username, password, email, server string) ([]byte, error) {
dockercfgAuth := credentialprovider.DockerConfigEntry{ dockercfgAuth := credentialprovider.DockerConfigEntry{
Username: username, Username: username,
Password: password, Password: password,
Email: email, Email: email,
} }
dockerCfg := credentialprovider.DockerConfigJson{ dockerCfgJson := credentialprovider.DockerConfigJson{
Auths: map[string]credentialprovider.DockerConfigEntry{server: dockercfgAuth}, Auths: map[string]credentialprovider.DockerConfigEntry{server: dockercfgAuth},
} }
return json.Marshal(dockerCfg) return json.Marshal(dockerCfgJson)
} }
...@@ -26,11 +26,11 @@ import ( ...@@ -26,11 +26,11 @@ import (
func TestSecretForDockerRegistryGenerate(t *testing.T) { func TestSecretForDockerRegistryGenerate(t *testing.T) {
username, password, email, server := "test-user", "test-password", "test-user@example.org", "https://index.docker.io/v1/" 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 { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
} }
secretDataNoEmail, err := handleDockercfgContent(username, password, "", server) secretDataNoEmail, err := handleDockerCfgJsonContent(username, password, "", server)
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
} }
...@@ -53,9 +53,9 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { ...@@ -53,9 +53,9 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
v1.DockerConfigKey: secretData, v1.DockerConfigJsonKey: secretData,
}, },
Type: v1.SecretTypeDockercfg, Type: v1.SecretTypeDockerConfigJson,
}, },
expectErr: false, expectErr: false,
}, },
...@@ -70,12 +70,12 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { ...@@ -70,12 +70,12 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
}, },
expected: &v1.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-94759gc65b", Name: "foo-548cm7fgdh",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
v1.DockerConfigKey: secretData, v1.DockerConfigJsonKey: secretData,
}, },
Type: v1.SecretTypeDockercfg, Type: v1.SecretTypeDockerConfigJson,
}, },
expectErr: false, expectErr: false,
}, },
...@@ -91,9 +91,9 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) { ...@@ -91,9 +91,9 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
v1.DockerConfigKey: secretDataNoEmail, v1.DockerConfigJsonKey: secretDataNoEmail,
}, },
Type: v1.SecretTypeDockercfg, Type: v1.SecretTypeDockerConfigJson,
}, },
expectErr: false, expectErr: false,
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment