in pkg/inject/xray.go [134:179]
func (m *xrayMutator) buildXrayDaemonArgs(pod *corev1.Pod, xrayDaemonContainer *corev1.Container, xrayDaemonConfigMount map[string]string) error {
// For-loop will loop only once as we expect only a single xrayDaemonConfigMount to be provided.
// If more than 1 is supplied we error out in `getXrayDaemonConfigMount` func itself.
for volumeName, mountPath := range xrayDaemonConfigMount {
volumeMount := corev1.VolumeMount{
Name: volumeName,
MountPath: mountPath,
ReadOnly: true,
}
xrayDaemonContainer.VolumeMounts = append(xrayDaemonContainer.VolumeMounts, volumeMount)
// Override the xray daemon's entrypoint command do load config from xray-daemon.yaml
xrayDaemonContainer.Command = []string{"/xray", "--config", fmt.Sprintf("%v/xray-daemon.yaml", strings.TrimRight(mountPath, " /"))}
// We return here since file config will override all other cli arguments
return nil
}
// Check for other arguments such as role-arn or log-level.
//
// Ignore if empty or `prod`, since xray agent's loglevel by default is set to `prod`
if m.mutatorConfig.xRayLogLevel != "" && m.mutatorConfig.xRayLogLevel != "prod" {
switch m.mutatorConfig.xRayLogLevel {
case "dev":
fallthrough
case "debug":
fallthrough
case "info":
fallthrough
case "warn":
fallthrough
case "error":
xrayDaemonContainer.Args = append(xrayDaemonContainer.Args, "--log-level", m.mutatorConfig.xRayLogLevel)
default:
return errors.Errorf("tracing.logLevel: \"%v\" is not valid."+
" Set one of dev, debug, info, prod, warn, error", m.mutatorConfig.xRayLogLevel)
}
}
if m.mutatorConfig.xRayConfigRoleArn != "" {
if arn.IsARN(m.mutatorConfig.xRayConfigRoleArn) {
xrayDaemonContainer.Args = append(xrayDaemonContainer.Args, "--role-arn", m.mutatorConfig.xRayConfigRoleArn)
} else {
return errors.Errorf("tracing.role: \"%v\" is not a valid `--role-arn`."+
" Please refer to AWS X-Ray Documentation for more information", m.mutatorConfig.xRayConfigRoleArn)
}
}
return nil
}