Merge pull request #118901 from dims/set-aws-specific-credential-provider-when-running-there

Set AWS specific credential provider when running there
This commit is contained in:
Kubernetes Prow Robot 2023-06-27 08:56:51 -07:00 committed by GitHub
commit 76b2198da1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 5 deletions

View File

@ -93,9 +93,9 @@ func prependMemcgNotificationFlag(args string) string {
return "--kubelet-flags=--kernel-memcg-notification=true " + args return "--kubelet-flags=--kernel-memcg-notification=true " + args
} }
// prependGCPCredentialProviderFlag prepends the flags for enabling // prependCredentialProviderFlag prepends the flags for enabling
// a credential provider plugin. // a credential provider plugin.
func prependGCPCredentialProviderFlag(args, workspace string) string { func prependCredentialProviderFlag(args, workspace string) string {
credentialProviderConfig := filepath.Join(workspace, "credential-provider.yaml") credentialProviderConfig := filepath.Join(workspace, "credential-provider.yaml")
featureGateFlag := "--kubelet-flags=--feature-gates=DisableKubeletCloudCredentialProviders=true" featureGateFlag := "--kubelet-flags=--feature-gates=DisableKubeletCloudCredentialProviders=true"
configFlag := fmt.Sprintf("--kubelet-flags=--image-credential-provider-config=%s", credentialProviderConfig) configFlag := fmt.Sprintf("--kubelet-flags=--image-credential-provider-config=%s", credentialProviderConfig)
@ -115,9 +115,12 @@ func osSpecificActions(args, host, workspace string) (string, error) {
return args, setKubeletSELinuxLabels(host, workspace) return args, setKubeletSELinuxLabels(host, workspace)
case strings.Contains(output, "gci"), strings.Contains(output, "cos"): case strings.Contains(output, "gci"), strings.Contains(output, "cos"):
args = prependMemcgNotificationFlag(args) args = prependMemcgNotificationFlag(args)
return prependGCPCredentialProviderFlag(args, workspace), nil return prependCredentialProviderFlag(args, workspace), nil
case strings.Contains(output, "ubuntu"): case strings.Contains(output, "ubuntu"):
args = prependGCPCredentialProviderFlag(args, workspace) args = prependCredentialProviderFlag(args, workspace)
return prependMemcgNotificationFlag(args), nil
case strings.Contains(output, "amzn"):
args = prependCredentialProviderFlag(args, workspace)
return prependMemcgNotificationFlag(args), nil return prependMemcgNotificationFlag(args), nil
} }
return args, nil return args, nil

View File

@ -48,7 +48,7 @@ const cniConfig = `{
} }
` `
const credentialProviderConfig = `kind: CredentialProviderConfig const credentialGCPProviderConfig = `kind: CredentialProviderConfig
apiVersion: kubelet.config.k8s.io/v1 apiVersion: kubelet.config.k8s.io/v1
providers: providers:
- name: gcp-credential-provider - name: gcp-credential-provider
@ -60,6 +60,19 @@ providers:
- "*.pkg.dev" - "*.pkg.dev"
defaultCacheDuration: 1m` defaultCacheDuration: 1m`
const credentialAWSProviderConfig = `kind: CredentialProviderConfig
apiVersion: kubelet.config.k8s.io/v1
providers:
- name: ecr-credential-provider
apiVersion: credentialprovider.kubelet.k8s.io/v1
matchImages:
- "*.dkr.ecr.*.amazonaws.com"
- "*.dkr.ecr.*.amazonaws.com.cn"
- "*.dkr.ecr-fips.*.amazonaws.com"
- "*.dkr.ecr.us-iso-east-1.c2s.ic.gov"
- "*.dkr.ecr.us-isob-east-1.sc2s.sgov.gov"
defaultCacheDuration: 12h`
func getCNIURL() string { func getCNIURL() string {
cniArch := "amd64" cniArch := "amd64"
if builder.IsTargetArchArm64() { if builder.IsTargetArchArm64() {
@ -102,6 +115,11 @@ func setupCNI(host, workspace string) error {
func configureCredentialProvider(host, workspace string) error { func configureCredentialProvider(host, workspace string) error {
klog.V(2).Infof("Configuring kubelet credential provider on %q", host) klog.V(2).Infof("Configuring kubelet credential provider on %q", host)
credentialProviderConfig := credentialGCPProviderConfig
if GetSSHUser() == "ec2-user" {
credentialProviderConfig = credentialAWSProviderConfig
}
cmd := getSSHCommand(" ; ", cmd := getSSHCommand(" ; ",
fmt.Sprintf("echo %s > %s", quote(credentialProviderConfig), filepath.Join(workspace, "credential-provider.yaml")), fmt.Sprintf("echo %s > %s", quote(credentialProviderConfig), filepath.Join(workspace, "credential-provider.yaml")),
) )