mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Check if key is a valid after prefix is prepended
- Allow invalid keys to become valid by requiring a prefix
This commit is contained in:
parent
cb78349735
commit
f6c9ab4312
@ -437,13 +437,12 @@ func (kl *Kubelet) makeEnvironmentVariables(pod *v1.Pod, container *v1.Container
|
|||||||
configMaps[name] = configMap
|
configMaps[name] = configMap
|
||||||
}
|
}
|
||||||
for k, v := range configMap.Data {
|
for k, v := range configMap.Data {
|
||||||
if errMsgs := utilvalidation.IsCIdentifier(k); len(errMsgs) != 0 {
|
|
||||||
return result, fmt.Errorf("Invalid environment variable name, %v, from configmap %v/%v: %s", k, pod.Namespace, name, errMsgs[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(envFrom.Prefix) > 0 {
|
if len(envFrom.Prefix) > 0 {
|
||||||
k = envFrom.Prefix + k
|
k = envFrom.Prefix + k
|
||||||
}
|
}
|
||||||
|
if errMsgs := utilvalidation.IsCIdentifier(k); len(errMsgs) != 0 {
|
||||||
|
return result, fmt.Errorf("Invalid environment variable name, %v, from configmap %v/%v: %s", k, pod.Namespace, name, errMsgs[0])
|
||||||
|
}
|
||||||
// Accesses apiserver+Pods.
|
// Accesses apiserver+Pods.
|
||||||
// So, the master may set service env vars, or kubelet may. In case both are doing
|
// So, the master may set service env vars, or kubelet may. In case both are doing
|
||||||
// it, we delete the key from the kubelet-generated ones so we don't have duplicate
|
// it, we delete the key from the kubelet-generated ones so we don't have duplicate
|
||||||
|
@ -728,11 +728,39 @@ func TestMakeEnvironmentVariables(t *testing.T) {
|
|||||||
Name: "test-configmap",
|
Name: "test-configmap",
|
||||||
},
|
},
|
||||||
Data: map[string]string{
|
Data: map[string]string{
|
||||||
"-1234": "abc",
|
"1234": "abc",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
expectedError: true,
|
expectedError: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "configmap_invalid_keys_valid",
|
||||||
|
ns: "test",
|
||||||
|
container: &v1.Container{
|
||||||
|
EnvFrom: []v1.EnvFromSource{
|
||||||
|
{
|
||||||
|
Prefix: "p_",
|
||||||
|
ConfigMapRef: &v1.ConfigMapEnvSource{LocalObjectReference: v1.LocalObjectReference{Name: "test-config-map"}},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
masterServiceNs: "",
|
||||||
|
configMap: &v1.ConfigMap{
|
||||||
|
ObjectMeta: v1.ObjectMeta{
|
||||||
|
Namespace: "test1",
|
||||||
|
Name: "test-configmap",
|
||||||
|
},
|
||||||
|
Data: map[string]string{
|
||||||
|
"1234": "abc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expectedEnvs: []kubecontainer.EnvVar{
|
||||||
|
{
|
||||||
|
Name: "p_1234",
|
||||||
|
Value: "abc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
|
Loading…
Reference in New Issue
Block a user