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,
}
}