Skip to content
Open
Show file tree
Hide file tree
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
4 changes: 4 additions & 0 deletions pkg/api/constant.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ const (
ManifestToolLocalPusherSecret = "manifest-tool-local-pusher"
ManifestToolLocalPusherSecretMountPath = "/secrets/manifest-tool"

GSMConfigConfigMap = "gsm-config"
GSMConfigMountPath = "/etc/gsm-config"
GSMConfigFileParameter = "--gsm-config=/etc/gsm-config/gsm-config.yaml"

PromotionQuayTaggerKubeconfigSecret = "promotion-quay-tagger-kubeconfig"

ReleaseAnnotationSoftDelete = "release.openshift.io/soft-delete"
Expand Down
10 changes: 8 additions & 2 deletions pkg/prowgen/jobbase.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,10 @@ func NewProwJobBaseBuilderForTest(configSpec *cioperatorapi.ReleaseBuildConfigur
p.PodSpec.Add(CIPullSecret())
}
if info.Config.EnableSecretsStoreCSIDriver {
p.PodSpec.Add(Arg("enable-secrets-store-csi-driver", "true"))
p.PodSpec.Add(
Arg("enable-secrets-store-csi-driver", "true"),
GSMConfig(),
)
}
case test.MultiStageTestConfiguration != nil:
if clusterProfile := test.MultiStageTestConfiguration.ClusterProfile; clusterProfile != "" {
Expand All @@ -161,7 +164,10 @@ func NewProwJobBaseBuilderForTest(configSpec *cioperatorapi.ReleaseBuildConfigur
p.PodSpec.Add(CIPullSecret())
}
if info.Config.EnableSecretsStoreCSIDriver {
p.PodSpec.Add(Arg("enable-secrets-store-csi-driver", "true"))
p.PodSpec.Add(
Arg("enable-secrets-store-csi-driver", "true"),
GSMConfig(),
)
}
case test.OpenshiftAnsibleClusterTestConfiguration != nil:
p.PodSpec.Add(
Expand Down
36 changes: 36 additions & 0 deletions pkg/prowgen/podspec.go
Original file line number Diff line number Diff line change
Expand Up @@ -558,6 +558,42 @@ func GitHubToken(reuseDecorationVolume bool) PodSpecMutator {
}
}

var (
gsmConfigVolume = corev1.Volume{
Name: cioperatorapi.GSMConfigConfigMap,
VolumeSource: corev1.VolumeSource{
ConfigMap: &corev1.ConfigMapVolumeSource{
LocalObjectReference: corev1.LocalObjectReference{
Name: cioperatorapi.GSMConfigConfigMap,
},
},
},
}
gsmConfigVolumeMount = corev1.VolumeMount{
Name: cioperatorapi.GSMConfigConfigMap,
MountPath: cioperatorapi.GSMConfigMountPath,
ReadOnly: true,
}
gsmConfigParameter = cioperatorapi.GSMConfigFileParameter
)

// GSMConfig mounts the gsm-config ConfigMap and configures ci-operator to use
// it via the --gsm-config flag. This mapping file defines how GSM secrets are
// bundled and consumed, supporting bundle references and auto-discovery of fields.
func GSMConfig() PodSpecMutator {
return func(spec *corev1.PodSpec) error {
container := &spec.Containers[0]
if err := addVolume(spec, gsmConfigVolume); err != nil {
return err
}
if err := addVolumeMount(container, gsmConfigVolumeMount); err != nil {
return err
}
addUniqueParameter(container, gsmConfigParameter)
return nil
}
}

func Variant(variant string) PodSpecMutator {
return func(spec *corev1.PodSpec) error {
if len(variant) > 0 {
Expand Down
14 changes: 14 additions & 0 deletions pkg/prowgen/podspec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -514,3 +514,17 @@ func TestInjectTestFrom(t *testing.T) {
})
}
}

func TestGSMConfig(t *testing.T) {
t.Parallel()
t.Run("add gsm-config volume and mount", func(t *testing.T) {
t.Parallel()
g := NewCiOperatorPodSpecGenerator()
g.Add(GSMConfig())
podspec, err := g.Build()
if err != nil {
t.Fatalf("Unexpected error: %v", err)
}
testhelper.CompareWithFixture(t, podspec)
})
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
containers:
- args:
- --gcs-upload-secret=/secrets/gcs/service-account.json
- --gsm-config=/etc/gsm-config/gsm-config.yaml
- --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson
- --report-credentials-file=/etc/report/credentials
command:
- ci-operator
image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest
imagePullPolicy: Always
name: ""
resources:
requests:
cpu: 10m
volumeMounts:
- mountPath: /secrets/gcs
name: gcs-credentials
readOnly: true
- mountPath: /etc/gsm-config
name: gsm-config
readOnly: true
- mountPath: /secrets/manifest-tool
name: manifest-tool-local-pusher
readOnly: true
- mountPath: /etc/pull-secret
name: pull-secret
readOnly: true
- mountPath: /etc/report
name: result-aggregator
readOnly: true
serviceAccountName: ci-operator
volumes:
- configMap:
name: gsm-config
name: gsm-config
- name: manifest-tool-local-pusher
secret:
secretName: manifest-tool-local-pusher
- name: pull-secret
secret:
secretName: registry-pull-credentials
- name: result-aggregator
secret:
secretName: result-aggregator
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ spec:
- args:
- --enable-secrets-store-csi-driver=true
- --gcs-upload-secret=/secrets/gcs/service-account.json
- --gsm-config=/etc/gsm-config/gsm-config.yaml
- --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson
- --report-credentials-file=/etc/report/credentials
- --target=simple
Expand All @@ -23,6 +24,9 @@ spec:
- mountPath: /secrets/gcs
name: gcs-credentials
readOnly: true
- mountPath: /etc/gsm-config
name: gsm-config
readOnly: true
- mountPath: /secrets/manifest-tool
name: manifest-tool-local-pusher
readOnly: true
Expand All @@ -34,6 +38,9 @@ spec:
readOnly: true
serviceAccountName: ci-operator
volumes:
- configMap:
name: gsm-config
name: gsm-config
- name: manifest-tool-local-pusher
secret:
secretName: manifest-tool-local-pusher
Expand Down