func Container()

in internal/manifests/targetallocator/container.go [19:78]


func Container(cfg config.Config, logger logr.Logger, otelcol v1alpha1.AmazonCloudWatchAgent) corev1.Container {
	image := otelcol.Spec.TargetAllocator.Image
	if len(image) == 0 {
		image = cfg.TargetAllocatorImage()
	}

	ports := make([]corev1.ContainerPort, 0)
	ports = append(ports, corev1.ContainerPort{
		Name:          "https",
		ContainerPort: naming.TargetAllocatorContainerPort,
		Protocol:      corev1.ProtocolTCP,
	})

	volumeMounts := []corev1.VolumeMount{{
		Name:      naming.TAConfigMapVolume(),
		MountPath: "/conf",
	}, {
		Name:      naming.TASecretVolume(),
		MountPath: TACertMountPath,
		ReadOnly:  true,
	},
	}

	var envVars = otelcol.Spec.TargetAllocator.Env
	if otelcol.Spec.TargetAllocator.Env == nil {
		envVars = []corev1.EnvVar{}
	}

	idx := -1
	for i := range envVars {
		if envVars[i].Name == "OTELCOL_NAMESPACE" {
			idx = i
		}
	}
	if idx == -1 {
		envVars = append(envVars, corev1.EnvVar{
			Name: "OTELCOL_NAMESPACE",
			ValueFrom: &corev1.EnvVarSource{
				FieldRef: &corev1.ObjectFieldSelector{
					FieldPath: "metadata.namespace",
				},
			},
		})
	}

	var args []string
	if otelcol.Spec.TargetAllocator.PrometheusCR.Enabled {
		args = append(args, "--enable-prometheus-cr-watcher")
	}

	return corev1.Container{
		Name:         naming.TAContainer(),
		Image:        image,
		Ports:        ports,
		Env:          envVars,
		VolumeMounts: volumeMounts,
		Resources:    otelcol.Spec.TargetAllocator.Resources,
		Args:         args,
	}
}