diff --git a/cluster/validation.go b/cluster/validation.go index fb7a1497..d6a1743c 100644 --- a/cluster/validation.go +++ b/cluster/validation.go @@ -130,14 +130,13 @@ func validateServicesOptions(c *Cluster) error { func validateEtcdBackupOptions(c *Cluster) error { if c.Services.Etcd.BackupConfig != nil { - if c.Services.Etcd.BackupConfig.S3BackupConfig == nil { - return fmt.Errorf("etcd backup is enabled but no s3 backend is specified") - } - if len(c.Services.Etcd.BackupConfig.S3BackupConfig.Endpoint) == 0 { - return fmt.Errorf("etcd s3 backup backend endpoint can't be empty") - } - if len(c.Services.Etcd.BackupConfig.S3BackupConfig.BucketName) == 0 { - return fmt.Errorf("etcd s3 backup backend bucketName can't be empty") + if c.Services.Etcd.BackupConfig.S3BackupConfig != nil { + if len(c.Services.Etcd.BackupConfig.S3BackupConfig.Endpoint) == 0 { + return fmt.Errorf("etcd s3 backup backend endpoint can't be empty") + } + if len(c.Services.Etcd.BackupConfig.S3BackupConfig.BucketName) == 0 { + return fmt.Errorf("etcd s3 backup backend bucketName can't be empty") + } } } return nil diff --git a/services/etcd.go b/services/etcd.go index bd1008df..71551482 100644 --- a/services/etcd.go +++ b/services/etcd.go @@ -275,7 +275,7 @@ func RunEtcdSnapshotSave(ctx context.Context, etcdHost *hosts.Host, prsMap map[s imageCfg.Cmd = append(imageCfg.Cmd, "--creation="+es.Creation) } - if es.BackupConfig != nil && es.BackupConfig.S3BackupConfig != nil { + if es.BackupConfig != nil { imageCfg = configS3BackupImgCmd(ctx, imageCfg, es.BackupConfig) } hostCfg := &container.HostConfig{ @@ -447,17 +447,21 @@ func GetEtcdSnapshotChecksum(ctx context.Context, etcdHost *hosts.Host, prsMap m } func configS3BackupImgCmd(ctx context.Context, imageCfg *container.Config, bc *v3.BackupConfig) *container.Config { - log.Infof(ctx, "Invoking s3 backup server cmd config, bucketName:%s, endpoint:%s", bc.S3BackupConfig.BucketName, bc.S3BackupConfig.Endpoint) cmd := []string{ - "--s3-backup=true", - "--s3-endpoint=" + bc.S3BackupConfig.Endpoint, - "--s3-accessKey=" + bc.S3BackupConfig.AccessKey, - "--s3-secretKey=" + bc.S3BackupConfig.SecretKey, - "--s3-bucketName=" + bc.S3BackupConfig.BucketName, - "--s3-region=" + bc.S3BackupConfig.Region, "--creation=" + fmt.Sprintf("%dh", bc.IntervalHours), "--retention=" + fmt.Sprintf("%dh", bc.Retention*bc.IntervalHours), } + + if bc.S3BackupConfig != nil { + cmd = append(cmd, []string{ + "--s3-backup=true", + "--s3-endpoint=" + bc.S3BackupConfig.Endpoint, + "--s3-accessKey=" + bc.S3BackupConfig.AccessKey, + "--s3-secretKey=" + bc.S3BackupConfig.SecretKey, + "--s3-bucketName=" + bc.S3BackupConfig.BucketName, + "--s3-region=" + bc.S3BackupConfig.Region, + }...) + } imageCfg.Cmd = append(imageCfg.Cmd, cmd...) return imageCfg }