diff --git a/mysqlcluster/container/backup.go b/mysqlcluster/container/backup.go index a4e96240..b42eae83 100644 --- a/mysqlcluster/container/backup.go +++ b/mysqlcluster/container/backup.go @@ -139,5 +139,9 @@ func (c *backupSidecar) getVolumeMounts() []corev1.VolumeMount { Name: utils.LogsVolumeName, MountPath: utils.LogsVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } } diff --git a/mysqlcluster/container/init_mysql.go b/mysqlcluster/container/init_mysql.go index b2fc36ea..54c8b541 100644 --- a/mysqlcluster/container/init_mysql.go +++ b/mysqlcluster/container/init_mysql.go @@ -124,5 +124,9 @@ func (c *initMysql) getVolumeMounts() []corev1.VolumeMount { Name: utils.InitFileVolumeName, MountPath: utils.InitFileVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } } diff --git a/mysqlcluster/container/init_mysql_test.go b/mysqlcluster/container/init_mysql_test.go index 5cf26055..45b45e27 100644 --- a/mysqlcluster/container/init_mysql_test.go +++ b/mysqlcluster/container/init_mysql_test.go @@ -67,6 +67,10 @@ var ( Name: utils.InitFileVolumeName, MountPath: utils.InitFileVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } optFalse = false optTrue = true diff --git a/mysqlcluster/container/init_sidecar.go b/mysqlcluster/container/init_sidecar.go index d5e316a3..9c16eb7f 100644 --- a/mysqlcluster/container/init_sidecar.go +++ b/mysqlcluster/container/init_sidecar.go @@ -182,6 +182,10 @@ func (c *initSidecar) getVolumeMounts() []corev1.VolumeMount { Name: utils.InitFileVolumeName, MountPath: utils.InitFileVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } if c.Spec.MysqlOpts.InitTokuDB { diff --git a/mysqlcluster/container/init_sidecar_test.go b/mysqlcluster/container/init_sidecar_test.go index 5e09791f..01709f5c 100644 --- a/mysqlcluster/container/init_sidecar_test.go +++ b/mysqlcluster/container/init_sidecar_test.go @@ -290,6 +290,10 @@ var ( Name: utils.InitFileVolumeName, MountPath: utils.InitFileVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } initSidecarCase = EnsureContainer("init-sidecar", &testInitSidecarCluster) ) @@ -432,7 +436,7 @@ func TestGetInitSidecarVolumeMounts(t *testing.T) { MysqlCluster: &testToKuDBMysqlCluster, } tokudbCase := EnsureContainer("init-sidecar", &testTokuDBCluster) - tokuDBVolumeMounts := make([]corev1.VolumeMount, 5, 6) + tokuDBVolumeMounts := make([]corev1.VolumeMount, 6, 7) copy(tokuDBVolumeMounts, defaultInitsidecarVolumeMounts) tokuDBVolumeMounts = append(tokuDBVolumeMounts, corev1.VolumeMount{ Name: utils.SysVolumeName, @@ -448,7 +452,7 @@ func TestGetInitSidecarVolumeMounts(t *testing.T) { MysqlCluster: &testPersistenceMysqlCluster, } persistenceCase := EnsureContainer("init-sidecar", &testPersistenceCluster) - persistenceVolumeMounts := make([]corev1.VolumeMount, 5, 6) + persistenceVolumeMounts := make([]corev1.VolumeMount, 6, 7) copy(persistenceVolumeMounts, defaultInitsidecarVolumeMounts) persistenceVolumeMounts = append(persistenceVolumeMounts, corev1.VolumeMount{ Name: utils.DataVolumeName, diff --git a/mysqlcluster/container/mysql.go b/mysqlcluster/container/mysql.go index ef02ba16..f0f0a8d6 100644 --- a/mysqlcluster/container/mysql.go +++ b/mysqlcluster/container/mysql.go @@ -134,5 +134,9 @@ func (c *mysql) getVolumeMounts() []corev1.VolumeMount { Name: utils.LogsVolumeName, MountPath: utils.LogsVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } } diff --git a/mysqlcluster/container/mysql_test.go b/mysqlcluster/container/mysql_test.go index 9ac16a3a..ba0a8c78 100644 --- a/mysqlcluster/container/mysql_test.go +++ b/mysqlcluster/container/mysql_test.go @@ -24,6 +24,7 @@ import ( mysqlv1alpha1 "github.com/radondb/radondb-mysql-kubernetes/api/v1alpha1" "github.com/radondb/radondb-mysql-kubernetes/mysqlcluster" + "github.com/radondb/radondb-mysql-kubernetes/utils" ) var ( @@ -149,6 +150,10 @@ func TestGetMysqlVolumeMounts(t *testing.T) { Name: "logs", MountPath: "/var/log/mysql", }, + { + Name: utils.SysLocalTimeZone, + MountPath: "/etc/localtime", + }, } assert.Equal(t, volumeMounts, mysqlCase.VolumeMounts) } diff --git a/mysqlcluster/container/xenon.go b/mysqlcluster/container/xenon.go index cdb9c68d..0c8c3fd1 100644 --- a/mysqlcluster/container/xenon.go +++ b/mysqlcluster/container/xenon.go @@ -114,5 +114,9 @@ func (c *xenon) getVolumeMounts() []corev1.VolumeMount { Name: utils.XenonVolumeName, MountPath: utils.XenonVolumeMountPath, }, + { + Name: utils.SysLocalTimeZone, + MountPath: utils.SysLocalTimeZoneMountPath, + }, } } diff --git a/mysqlcluster/container/xenon_test.go b/mysqlcluster/container/xenon_test.go index f6037852..ece6c71a 100644 --- a/mysqlcluster/container/xenon_test.go +++ b/mysqlcluster/container/xenon_test.go @@ -25,6 +25,7 @@ import ( mysqlv1alpha1 "github.com/radondb/radondb-mysql-kubernetes/api/v1alpha1" "github.com/radondb/radondb-mysql-kubernetes/mysqlcluster" + "github.com/radondb/radondb-mysql-kubernetes/utils" ) var ( @@ -132,6 +133,10 @@ func TestGetXenonVolumeMounts(t *testing.T) { Name: "xenon", MountPath: "/etc/xenon", }, + { + Name: utils.SysLocalTimeZone, + MountPath: "/etc/localtime", + }, } assert.Equal(t, volumeMounts, xenonCase.VolumeMounts) } diff --git a/mysqlcluster/mysqlcluster.go b/mysqlcluster/mysqlcluster.go index e0e84213..570bcf44 100644 --- a/mysqlcluster/mysqlcluster.go +++ b/mysqlcluster/mysqlcluster.go @@ -221,6 +221,14 @@ func (c *MysqlCluster) EnsureVolumes() []corev1.Volume { EmptyDir: &corev1.EmptyDirVolumeSource{}, }, }, + corev1.Volume{ + Name: utils.SysLocalTimeZone, + VolumeSource: corev1.VolumeSource{ + HostPath: &corev1.HostPathVolumeSource{ + Path: utils.SysLocalTimeZoneHostPath, + }, + }, + }, ) return volumes diff --git a/mysqlcluster/mysqlcluster_test.go b/mysqlcluster/mysqlcluster_test.go index ddeff020..34eeb414 100644 --- a/mysqlcluster/mysqlcluster_test.go +++ b/mysqlcluster/mysqlcluster_test.go @@ -283,6 +283,14 @@ func TestEnsureVolumes(t *testing.T) { EmptyDir: &corev1.EmptyDirVolumeSource{}, }, }, + { + Name: utils.SysLocalTimeZone, + VolumeSource: corev1.VolumeSource{ + HostPath: &corev1.HostPathVolumeSource{ + Path: utils.SysLocalTimeZoneHostPath, + }, + }, + }, } // when disable Persistence { diff --git a/utils/constants.go b/utils/constants.go index 75723ad3..3c4883c6 100644 --- a/utils/constants.go +++ b/utils/constants.go @@ -108,6 +108,15 @@ const ( XenonVolumeMountPath = "/etc/xenon" InitFileVolumeMountPath = "/docker-entrypoint-initdb.d" + // Volume timezone name. + SysLocalTimeZone = "localtime" + + // Volume host path for time zone. + SysLocalTimeZoneHostPath = "/etc/localtime" + + // Volume mount path for time zone. + SysLocalTimeZoneMountPath = "/etc/localtime" + // The path to the client MySQL client configuration. // The file used to liveness and readiness check. ConfClientPath = "/etc/mysql/client.conf"