func()

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
}