in pkg/plugins/runtime/k8s/containers/factory.go [78:161]
func (i *DataplaneProxyFactory) sidecarEnvVars(mesh string, podAnnotations map[string]string) ([]kube_core.EnvVar, error) {
drainTime, err := i.drainTime(podAnnotations)
if err != nil {
return nil, err
}
envVars := map[string]kube_core.EnvVar{
"POD_NAME": {
Name: "POD_NAME",
ValueFrom: &kube_core.EnvVarSource{
FieldRef: &kube_core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.name",
},
},
},
"POD_NAMESPACE": {
Name: "POD_NAMESPACE",
ValueFrom: &kube_core.EnvVarSource{
FieldRef: &kube_core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "metadata.namespace",
},
},
},
"INSTANCE_IP": {
Name: "INSTANCE_IP",
ValueFrom: &kube_core.EnvVarSource{
FieldRef: &kube_core.ObjectFieldSelector{
APIVersion: "v1",
FieldPath: "status.podIP",
},
},
},
"DUBBO_CONTROL_PLANE_URL": {
Name: "DUBBO_CONTROL_PLANE_URL",
Value: i.ControlPlaneURL,
},
"DUBBO_DATAPLANE_MESH": {
Name: "DUBBO_DATAPLANE_MESH",
Value: mesh,
},
"DUBBO_DATAPLANE_DRAIN_TIME": {
Name: "DUBBO_DATAPLANE_DRAIN_TIME",
Value: drainTime.String(),
},
"DUBBO_DATAPLANE_RUNTIME_TOKEN_PATH": {
Name: "DUBBO_DATAPLANE_RUNTIME_TOKEN_PATH",
Value: "/var/run/secrets/kubernetes.io/serviceaccount/token",
},
"DUBBO_CONTROL_PLANE_CA_CERT": {
Name: "DUBBO_CONTROL_PLANE_CA_CERT",
Value: i.ControlPlaneCACert,
},
}
// override defaults with cfg env vars
for envName, envVal := range i.ContainerConfig.EnvVars {
envVars[envName] = kube_core.EnvVar{
Name: envName,
Value: envVal,
}
}
// override defaults and cfg env vars with annotations
annotationEnvVars, _, err := metadata.Annotations(podAnnotations).GetMap(metadata.DUBBOSidecarEnvVarsAnnotation)
if err != nil {
return nil, err
}
for envName, envVal := range annotationEnvVars {
envVars[envName] = kube_core.EnvVar{
Name: envName,
Value: envVal,
}
}
var result []kube_core.EnvVar
for _, v := range envVars {
result = append(result, v)
}
sort.Stable(EnvVarsByName(result))
return result, nil
}