in pkg/inject/xray.go [67:115]
func (m *xrayMutator) mutate(pod *corev1.Pod) error {
if !m.enabled {
return nil
}
if containsXRAYDaemonContainer(pod) {
return nil
}
err := m.checkConfig()
if err != nil {
return err
}
xrayDaemonConfigMount, err := m.getXrayDaemonConfigMount(pod)
if err != nil {
return err
}
variables := m.buildTemplateVariables(pod)
xrayDaemonSidecar, err := renderTemplate("xray-daemon", xrayDaemonContainerTemplate, variables)
if err != nil {
return err
}
container := corev1.Container{}
err = json.Unmarshal([]byte(xrayDaemonSidecar), &container)
if err != nil {
return err
}
// add resource requests and limits
container.Resources, err = sidecarResources(getSidecarCPURequest(m.mutatorConfig.sidecarCPURequests, pod),
getSidecarMemoryRequest(m.mutatorConfig.sidecarMemoryRequests, pod),
getSidecarCPULimit(m.mutatorConfig.sidecarCPULimits, pod),
getSidecarMemoryLimit(m.mutatorConfig.sidecarMemoryLimits, pod))
if err != nil {
return err
}
// Add xray daemon configurations as args. If config file is mounted then it will override all other configurations. See
// https://docs.aws.amazon.com/xray/latest/devguide/xray-daemon-configuration.html#xray-daemon-configuration-commandline
err = m.buildXrayDaemonArgs(pod, &container, xrayDaemonConfigMount)
if err != nil {
return err
}
pod.Spec.Containers = append(pod.Spec.Containers, container)
return nil
}