变换任务政策: JSON 补丁值在列表中持有对象初始化器, 会使服务器惊慌失措
{
name: "jsonPatch value is a list holding an Object initializer",
expression: [ JSONPatch{ op: "add", path: "/spec/template/spec/tolerations", value: [ Object.spec.template.spec.tolerations{key: "example", operator: "Exists", effect: "NoSchedule"} ] }, ],
gvr: deploymentGVR,
object: &appsv1.Deployment{Spec: appsv1.DeploymentSpec{Replicas: ptr.Toint32}},
expectedResult: &appsv1.Deployment{Spec: appsv1.DeploymentSpec{
Replicas: ptr.Toint32,
Template: corev1.PodTemplateSpec{Spec: corev1.PodSpec{Tolerations: []corev1.Toleration{{
Key: "example",
Operator: corev1.TolerationOpExists,
Effect: corev1.TaintEffectNoSchedule,
}}}},
}},
},
{
name: "jsonPatch value is a bare Object initializer",
expression: [ JSONPatch{ op: "add", path: "/spec/template/spec/securityContext", value: Object.spec.template.spec.securityContext{runAsNonRoot: true} }, ],
gvr: deploymentGVR,
object: &appsv1.Deployment{Spec: appsv1.DeploymentSpec{Replicas: ptr.Toint32}},
expectedResult: &appsv1.Deployment{Spec: appsv1.DeploymentSpec{
Replicas: ptr.Toint32,
Template: corev1.PodTemplateSpec{Spec: corev1.PodSpec{
SecurityContext: &corev1.PodSecurityContext{RunAsNonRoot: ptr.To(true)},
}},
}},
},
…
内容来源: kubernetes/kubernetes