func generateEnvironmentVariables()

in patch.go [112:170]


func generateEnvironmentVariables(config agentConfig) ([]corev1.EnvVar, error) {
	optional := true
	vars := []corev1.EnvVar{{
		Name: "ELASTIC_APM_SECRET_TOKEN",
		ValueFrom: &corev1.EnvVarSource{
			SecretKeyRef: &corev1.SecretKeySelector{
				LocalObjectReference: corev1.LocalObjectReference{Name: "apm-agent-auth"},
				Key:                  "secret_token",
				Optional:             &optional,
			},
		},
	}, {
		Name: "ELASTIC_APM_API_KEY",
		ValueFrom: &corev1.EnvVarSource{
			SecretKeyRef: &corev1.SecretKeySelector{
				LocalObjectReference: corev1.LocalObjectReference{Name: "apm-agent-auth"},
				Key:                  "api_key",
				Optional:             &optional,
			},
		},
	}}
	if _, ok := config.Environment["ELASTIC_APM_SERVER_URL"]; !ok {
		// No apm-server url present, inject the local node address.
		vars = append(vars, corev1.EnvVar{
			Name: "HOST_IP",
			ValueFrom: &corev1.EnvVarSource{
				FieldRef: &corev1.ObjectFieldSelector{
					FieldPath: "status.hostIP",
				},
			},
		}, corev1.EnvVar{
			Name: "ELASTIC_APM_SERVER_URL", Value: "http://$(HOST_IP):8200",
		})
	}
	if _, ok := config.Environment["ELASTIC_APM_ACTIVATION_METHOD"]; !ok {
		vars = append(vars, corev1.EnvVar{
			Name: "ELASTIC_APM_ACTIVATION_METHOD", Value: "K8S_ATTACH",
		})
	}
	for k, v := range kubernetesEnvironmentVariables {
		vars = append(vars, corev1.EnvVar{
			Name: k,
			ValueFrom: &corev1.EnvVarSource{
				FieldRef: &corev1.ObjectFieldSelector{
					FieldPath: v,
				},
			},
		})
	}
	for name, value := range config.Environment {
		vars = append(vars, corev1.EnvVar{Name: name, Value: value})
	}
	for _, ev := range vars {
		if errs := validation.IsEnvVarName(ev.Name); len(errs) != 0 {
			return nil, fmt.Errorf("failed to validate environment variable %q: %v", ev.Name, errs)
		}
	}
	return vars, nil
}