func()

in pkg/resources/statefulset/ndb_statefulset_interface.go [84:130]


func (bss *baseStatefulSet) createContainer(
	nc *v1.NdbCluster, containerName string, commandAndArgs []string,
	volumeMounts []corev1.VolumeMount, portNumbers []int32) corev1.Container {

	// Expose the ports passed via portNumbers
	var ports []corev1.ContainerPort
	for _, portNumber := range portNumbers {
		ports = append(ports, corev1.ContainerPort{
			ContainerPort: portNumber,
		})
	}

	klog.Infof("Creating container %q from image %s", containerName, nc.Spec.Image)
	return corev1.Container{
		Name: containerName,
		// Use the image provided in spec
		Image:           nc.Spec.Image,
		ImagePullPolicy: nc.Spec.ImagePullPolicy,
		Ports:           ports,
		// Export the Pod IP, Namespace and connectstring to Pod env
		Env: []corev1.EnvVar{
			{
				Name: "NDB_POD_IP",
				ValueFrom: &corev1.EnvVarSource{
					FieldRef: &corev1.ObjectFieldSelector{
						FieldPath: "status.podIP",
					},
				},
			},
			{
				Name: "NDB_POD_NAMESPACE",
				ValueFrom: &corev1.EnvVarSource{
					FieldRef: &corev1.ObjectFieldSelector{
						FieldPath: "metadata.namespace",
					},
				},
			},
			{
				Name: "NDB_CONNECTSTRING",
				Value: fmt.Sprintf("nodeid=%d,%s",
					constants.NdbOperatorDedicatedAPINodeId, nc.GetConnectstring()),
			},
		},
		Command:      []string{"/bin/bash", "-ecx", strings.Join(commandAndArgs, " ")},
		VolumeMounts: volumeMounts,
	}
}