From bbf41448f6c5494d5adabc4954d7230522b28d2e Mon Sep 17 00:00:00 2001 From: zhouya0 Date: Mon, 11 May 2020 11:05:37 +0800 Subject: [PATCH] Fix kubectl create secret docker-registry --- hack/testdata/dockerconfig.json | 14 ++++++++++++++ .../kubectl/pkg/cmd/create/create_secret.go | 2 -- test/cmd/core.sh | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 hack/testdata/dockerconfig.json diff --git a/hack/testdata/dockerconfig.json b/hack/testdata/dockerconfig.json new file mode 100644 index 00000000000..6431b33c78b --- /dev/null +++ b/hack/testdata/dockerconfig.json @@ -0,0 +1,14 @@ +{ + "auths":{ + "http://foo.example.com":{ + "username":"foo", + "password":"bar", + "email":"foo@example.com" + }, + "http://bar.example.com":{ + "username":"bar", + "password":"baz", + "email":"bar@example.com" + } + } +} diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_secret.go b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_secret.go index 932ec2114f1..5cb76d41ad2 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/create/create_secret.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/create/create_secret.go @@ -189,9 +189,7 @@ func NewCmdCreateSecretDockerRegistry(f cmdutil.Factory, ioStreams genericcliopt cmdutil.AddValidateFlags(cmd) cmdutil.AddGeneratorFlags(cmd, generateversioned.SecretForDockerRegistryV1GeneratorName) cmd.Flags().String("docker-username", "", i18n.T("Username for Docker registry authentication")) - cmd.MarkFlagRequired("docker-username") cmd.Flags().String("docker-password", "", i18n.T("Password for Docker registry authentication")) - cmd.MarkFlagRequired("docker-password") cmd.Flags().String("docker-email", "", i18n.T("Email for Docker registry")) cmd.Flags().String("docker-server", "https://index.docker.io/v1/", i18n.T("Server location for Docker registry")) cmd.Flags().Bool("append-hash", false, "Append a hash of the secret to its name.") diff --git a/test/cmd/core.sh b/test/cmd/core.sh index 7b2ecb8492e..2db901698c3 100755 --- a/test/cmd/core.sh +++ b/test/cmd/core.sh @@ -830,6 +830,21 @@ run_secrets_test() { # Clean-up kubectl delete secret test-secret --namespace=test-secrets + ### Create a docker-registry secret in a specific namespace with docker config file + if [[ "${WAIT_FOR_DELETION:-}" == "true" ]]; then + kube::test::wait_object_assert 'secrets --namespace=test-secrets' "{{range.items}}{{$id_field}}:{{end}}" '' + fi + # Pre-condition: no SECRET exists + kube::test::get_object_assert 'secrets --namespace=test-secrets' "{{range.items}}{{$id_field}}:{{end}}" '' + # Command + kubectl create secret docker-registry test-secret --from-file=.dockerconfigjson=hack/testdata/dockerconfig.json --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/dockerconfigjson' + grep -q '.dockerconfigjson: ewogICAgImF1dGhzIjp7CiAgICAgICAgImh0dHA6Ly9mb28uZXhhbXBsZS5jb20iOnsKICAgICAgICAgICAgInVzZXJuYW1lIjoiZm9vIiwKICAgICAgICAgICAgInBhc3N3b3JkIjoiYmFyIiwKICAgICAgICAgICAgImVtYWlsIjoiZm9vQGV4YW1wbGUuY29tIgogICAgICAgIH0sCiAgICAgICAgImh0dHA6Ly9iYXIuZXhhbXBsZS5jb20iOnsKICAgICAgICAgICAgInVzZXJuYW1lIjoiYmFyIiwKICAgICAgICAgICAgInBhc3N3b3JkIjoiYmF6IiwKICAgICAgICAgICAgImVtYWlsIjoiYmFyQGV4YW1wbGUuY29tIgogICAgICAgIH0KICAgIH0KfQo=' <<< "$(kubectl get secret/test-secret --namespace=test-secrets -o yaml "${kube_flags[@]}")" + # Clean-up + kubectl delete secret test-secret --namespace=test-secrets + ### Create a tls secret if [[ "${WAIT_FOR_DELETION:-}" == "true" ]]; then kube::test::wait_object_assert 'secrets --namespace=test-secrets' "{{range.items}}{{$id_field}}:{{end}}" ''