Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added poc way of dealing with docker auth issues #1421

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions pkg/skaffold/build/kaniko/sources/sources.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ func podTemplate(cfg *latest.KanikoBuild, args []string) *v1.Pod {
Name: constants.DefaultKanikoSecretName,
MountPath: "/secret",
},
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So why not overload the credentials and mount them as the normal creds in /secret as well as in /root/.docker/config.json?

In my case this allowed me to set the kanikoSecret: ~/.docker/config.json inside of the kaniko builder configuration.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting idea. My thoughts:
1.) However there is no way both can work. What if you want to build two artifacts, one with a GCR repo, the other one using Docker? The first would want to use the GOOGLE_APPLICATION_CREDENTIALS env var, the latter would use the config.json.
2.) based on https://github.com/GoogleContainerTools/kaniko#pushing-to-amazon-ecr I see that it should be /kaniko/.docker/config.json and could be a configmap... @priyawadhwa can you advise?
3.) What if we introduce a mountDockerConfig boolean flag, by default false and a dockerConfigPath: string flag pointing to ~/.docker/config.json by default instead?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup option 3 SGTM -- basically skaffold.yaml should have separate options for registry specific credentials and the dockerconfig in case both are needed, as @balopat said. We could create a configmap or another secret (probably better) for the dockerconfig and mount it into /kaniko/.docker/config.json (that's where kaniko expects to find it)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay. I wasn't intending for the configuration to be reused, I only did it to simplify the work required to test the concept. Realistically option 3 is probably be the best.

{
Name: "regcred",
MountPath: "/root/",
},
},
},
},
Expand All @@ -81,6 +85,19 @@ func podTemplate(cfg *latest.KanikoBuild, args []string) *v1.Pod {
SecretName: cfg.PullSecretName,
},
},
}, {
Name: "regcred",
VolumeSource: v1.VolumeSource{
Secret: &v1.SecretVolumeSource{
SecretName: cfg.PullSecretName,
Items: []v1.KeyToPath{
{
Key: constants.DefaultKanikoSecretName,
Path: ".docker/config.json",
},
},
},
},
}},
},
}
Expand Down