Skip to content

Commit 423edbc

Browse files
authored
🐛 fix: update shell command to use /bin/bash for init containers (#1497)
1 parent 1c65442 commit 423edbc

3 files changed

Lines changed: 12 additions & 13 deletions

File tree

controllers/container_image/resources.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ func validateContainerRegistryWIF(wif *v1alpha2.WorkloadIdentityConfig) error {
384384
// registryWIFInitContainer creates an init container that generates docker config credentials
385385
// using cloud-native Workload Identity Federation
386386
func registryWIFInitContainer(wif *v1alpha2.WorkloadIdentityConfig) corev1.Container {
387-
var image, script string
387+
var image, shell, script string
388388
var env []corev1.EnvVar
389389

390390
// Common retry wrapper for transient failures
@@ -410,6 +410,7 @@ retry() {
410410
switch wif.Provider {
411411
case v1alpha2.CloudProviderGKE:
412412
image = k8s_scan.GCloudSDKImage
413+
shell = "/bin/bash"
413414
script = retryWrapper + `
414415
# Use WIF identity to get an access token for Artifact Registry / GCR
415416
TOKEN=$(retry gcloud auth print-access-token)
@@ -456,6 +457,7 @@ echo "Docker config generated for $(echo "$AUTHS" | tr ',' '\n' | wc -l) registr
456457

457458
case v1alpha2.CloudProviderEKS:
458459
image = k8s_scan.AWSCLIImage
460+
shell = "/bin/bash"
459461
script = retryWrapper + `
460462
# Use IRSA identity to get ECR login password
461463
PASSWORD=$(retry aws ecr get-login-password --region "$AWS_REGION")
@@ -483,6 +485,7 @@ echo "Docker config generated for ECR registry: ${REGISTRY}"
483485

484486
case v1alpha2.CloudProviderAKS:
485487
image = k8s_scan.AzureCLIImage
488+
shell = "/bin/bash"
486489
script = retryWrapper + `
487490
# Azure WIF webhook injects AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_FEDERATED_TOKEN_FILE
488491
retry az login --federated-token "$(cat "$AZURE_FEDERATED_TOKEN_FILE")" \
@@ -511,6 +514,7 @@ echo "Docker config generated for ACR: ${ACR_LOGIN_SERVER}"
511514

512515
default:
513516
image = "busybox:1.36"
517+
shell = "/bin/sh"
514518
script = `echo "ERROR: Unknown workload identity provider"; exit 1`
515519
env = []corev1.EnvVar{}
516520
}
@@ -519,7 +523,7 @@ echo "Docker config generated for ACR: ${ACR_LOGIN_SERVER}"
519523
Name: "generate-registry-creds",
520524
Image: image,
521525
ImagePullPolicy: corev1.PullIfNotPresent,
522-
Command: []string{"/bin/sh", "-c", script},
526+
Command: []string{shell, "-c", script},
523527
Env: env,
524528
VolumeMounts: []corev1.VolumeMount{
525529
{Name: "docker-config", MountPath: "/etc/opt/mondoo/docker"},

controllers/k8s_scan/resources.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ const (
669669

670670
// wifInitContainer creates an init container that generates kubeconfig using cloud CLI tools
671671
func wifInitContainer(cluster v1alpha2.ExternalCluster) corev1.Container {
672-
var image, script string
672+
var image, shell, script string
673673
var env []corev1.EnvVar
674674

675675
// Common retry wrapper for transient failures
@@ -695,6 +695,7 @@ retry() {
695695
switch cluster.WorkloadIdentity.Provider {
696696
case v1alpha2.CloudProviderGKE:
697697
image = GCloudSDKImage
698+
shell = "/bin/bash"
698699
script = retryWrapper + `
699700
retry gcloud container clusters get-credentials "$CLUSTER_NAME" \
700701
--project "$PROJECT_ID" \
@@ -713,6 +714,7 @@ echo "=== END DEBUG ==="
713714

714715
case v1alpha2.CloudProviderEKS:
715716
image = AWSCLIImage
717+
shell = "/bin/bash"
716718
script = retryWrapper + `
717719
retry aws eks update-kubeconfig \
718720
--name "$CLUSTER_NAME" \
@@ -730,6 +732,7 @@ echo "=== END DEBUG ==="
730732

731733
case v1alpha2.CloudProviderAKS:
732734
image = AzureCLIImage
735+
shell = "/bin/bash"
733736
script = retryWrapper + `
734737
# Azure CLI requires explicit login with the federated token injected by the
735738
# AKS Workload Identity webhook (AZURE_CLIENT_ID, AZURE_TENANT_ID,
@@ -752,8 +755,8 @@ retry az aks get-credentials \
752755
}
753756

754757
default:
755-
// This should never happen if validation is correct, but handle gracefully
756758
image = "busybox:1.36"
759+
shell = "/bin/sh"
757760
script = `echo "ERROR: Unknown workload identity provider"; exit 1`
758761
env = []corev1.EnvVar{}
759762
}
@@ -762,7 +765,7 @@ retry az aks get-credentials \
762765
Name: "generate-kubeconfig",
763766
Image: image,
764767
ImagePullPolicy: corev1.PullIfNotPresent,
765-
Command: []string{"/bin/sh", "-c", script},
768+
Command: []string{shell, "-c", script},
766769
Env: env,
767770
VolumeMounts: []corev1.VolumeMount{
768771
{Name: "kubeconfig", MountPath: "/etc/opt/mondoo/kubeconfig"},

go.sum

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -818,14 +818,10 @@ howett.net/plist v1.0.1 h1:37GdZ8tP09Q35o9ych3ehygcsL+HqKSwzctveSlarvM=
818818
howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g=
819819
k8s.io/api v0.36.0 h1:SgqDhZzHdOtMk40xVSvCXkP9ME0H05hPM3p9AB1kL80=
820820
k8s.io/api v0.36.0/go.mod h1:m1LVrGPNYax5NBHdO+QuAedXyuzTt4RryI/qnmNvs34=
821-
k8s.io/apiextensions-apiserver v0.35.2 h1:iyStXHoJZsUXPh/nFAsjC29rjJWdSgUmG1XpApE29c0=
822-
k8s.io/apiextensions-apiserver v0.35.2/go.mod h1:OdyGvcO1FtMDWQ+rRh/Ei3b6X3g2+ZDHd0MSRGeS8rU=
823821
k8s.io/apiextensions-apiserver v0.36.0 h1:Wt7E8J+VBCbj4FjiBfDTK/neXDDjyJVJc7xfuOHImZ0=
824822
k8s.io/apiextensions-apiserver v0.36.0/go.mod h1:kGDjH0msuiIB3tgsYRV0kS9GqpMYMUsQ3GHv7TApyug=
825823
k8s.io/apimachinery v0.36.0 h1:jZyPzhd5Z+3h9vJLt0z9XdzW9VzNzWAUw+P1xZ9PXtQ=
826824
k8s.io/apimachinery v0.36.0/go.mod h1:FklypaRJt6n5wUIwWXIP6GJlIpUizTgfo1T/As+Tyxc=
827-
k8s.io/apiserver v0.35.2 h1:rb52v0CZGEL0FkhjS+I6jHflAp7fZ4MIaKcEHX7wmDk=
828-
k8s.io/apiserver v0.35.2/go.mod h1:CROJUAu0tfjZLyYgSeBsBan2T7LUJGh0ucWwTCSSk7g=
829825
k8s.io/apiserver v0.36.0 h1:Jg5OFAENUACByUCg15CmhZAYrr5ZyJ+jodyA1mHl3YE=
830826
k8s.io/apiserver v0.36.0/go.mod h1:mHvwdHf+qKEm+1/hYm756SV+oREOKSPnsjagOpx6Vho=
831827
k8s.io/client-go v0.36.0 h1:pOYi7C4RHChYjMiHpZSpSbIM6ZxVbRXBy7CuiIwqA3c=
@@ -852,12 +848,8 @@ modernc.org/sqlite v1.50.0 h1:eMowQSWLK0MeiQTdmz3lqoF5dqclujdlIKeJA11+7oM=
852848
modernc.org/sqlite v1.50.0/go.mod h1:m0w8xhwYUVY3H6pSDwc3gkJ/irZT/0YEXwBlhaxQEew=
853849
moul.io/http2curl v1.0.0 h1:6XwpyZOYsgZJrU8exnG87ncVkU1FVCcTRpwzOkTDUi8=
854850
moul.io/http2curl v1.0.0/go.mod h1:f6cULg+e4Md/oW1cYmwW4IWQOVl2lGbmCNGOHvzX2kE=
855-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.33.0 h1:qPrZsv1cwQiFeieFlRqT627fVZ+tyfou/+S5S0H5ua0=
856-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.33.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
857851
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0 h1:hSfpvjjTQXQY2Fol2CS0QHMNs/WI1MOSGzCm1KhM5ec=
858852
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.34.0/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
859-
sigs.k8s.io/controller-runtime v0.23.3 h1:VjB/vhoPoA9l1kEKZHBMnQF33tdCLQKJtydy4iqwZ80=
860-
sigs.k8s.io/controller-runtime v0.23.3/go.mod h1:B6COOxKptp+YaUT5q4l6LqUJTRpizbgf9KSRNdQGns0=
861853
sigs.k8s.io/controller-runtime v0.24.0 h1:Ck6N2LdS8Lovy1o25BB4r1xjvLEKUl1s2o9kU+KWDE4=
862854
sigs.k8s.io/controller-runtime v0.24.0/go.mod h1:vFkfY5fGt5xAC/sKb8IBFKgWPNKG9OUG29dR8Y2wImw=
863855
sigs.k8s.io/gateway-api v1.5.0 h1:duoo14Ky/fJXpjpmyMISE2RTBGnfCg8zICfTYLTnBJA=

0 commit comments

Comments
 (0)