🎨 大部分的 make 指令
This commit is contained in:
127
internal/cmd/make.redis.go
Normal file
127
internal/cmd/make.redis.go
Normal file
@@ -0,0 +1,127 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"gitea.loveuer.com/yizhisec/pkg3/logger"
|
||||
"github.com/spf13/cobra"
|
||||
"yizhisec.com/hsv2/forge/internal/opt"
|
||||
"yizhisec.com/hsv2/forge/pkg/downloader"
|
||||
)
|
||||
|
||||
func makeRedis() *cobra.Command {
|
||||
const (
|
||||
valuesTemplate = `# Redis configuration
|
||||
architecture: replication
|
||||
|
||||
image:
|
||||
registry: docker.io
|
||||
repository: bitnami/redis
|
||||
tag: 8.2.2
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
auth:
|
||||
enabled: true
|
||||
password: "%s"
|
||||
|
||||
master:
|
||||
persistence:
|
||||
enabled: true
|
||||
storageClass: "longhorn"
|
||||
size: 5Gi
|
||||
# resources:
|
||||
# requests:
|
||||
# memory: "512Mi"
|
||||
# cpu: "250m"
|
||||
# limits:
|
||||
# memory: "1Gi"
|
||||
# cpu: "500m"
|
||||
|
||||
replica:
|
||||
replicaCount: %d
|
||||
persistence:
|
||||
enabled: true
|
||||
storageClass: "longhorn"
|
||||
size: 5Gi
|
||||
# resources:
|
||||
# requests:
|
||||
# memory: "512Mi"
|
||||
# cpu: "250m"
|
||||
# limits:
|
||||
# memory: "1Gi"
|
||||
# cpu: "500m"
|
||||
|
||||
metrics:
|
||||
enabled: false
|
||||
serviceMonitor:
|
||||
enabled: false
|
||||
`
|
||||
defaultPassword = "HybridScope0xRed1s."
|
||||
)
|
||||
|
||||
var (
|
||||
replicas int
|
||||
password string
|
||||
)
|
||||
|
||||
_cmd := &cobra.Command{
|
||||
Use: "redis",
|
||||
Short: "Build Redis resources",
|
||||
Long: `Build and prepare Redis cache resources.`,
|
||||
PreRunE: func(cmd *cobra.Command, args []string) error {
|
||||
return os.MkdirAll(filepath.Join(opt.Cfg.Make.Dir, "dependency", "redis"), 0755)
|
||||
},
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
var (
|
||||
chartURL = "https://artifactory.yizhisec.com:443/artifactory/filestore/hsv3/charts/redis-23.2.2.tgz"
|
||||
redisDir = filepath.Join(opt.Cfg.Make.Dir, "dependency", "redis")
|
||||
chartFile = filepath.Join(redisDir, "redis-23.2.2.tgz")
|
||||
valuesFile = filepath.Join(redisDir, "values.yaml")
|
||||
)
|
||||
|
||||
if password == "******" {
|
||||
password = defaultPassword
|
||||
}
|
||||
|
||||
logger.Info("开始构建 Redis 资源...")
|
||||
logger.Debug("下载地址: %s", chartURL)
|
||||
logger.Debug("目标目录: %s", redisDir)
|
||||
logger.Debug("Redis 副本数: %d", replicas)
|
||||
|
||||
// Download Redis chart
|
||||
logger.Info("正在下载 Redis chart...")
|
||||
if err := downloader.Download(
|
||||
cmd.Context(),
|
||||
chartURL,
|
||||
chartFile,
|
||||
downloader.WithInsecureSkipVerify(),
|
||||
); err != nil {
|
||||
logger.Info("❌ 下载 Redis chart 失败")
|
||||
return err
|
||||
}
|
||||
logger.Info("✅ 成功下载 Redis chart")
|
||||
|
||||
// Generate values.yaml
|
||||
logger.Debug("创建 values.yaml: %s", valuesFile)
|
||||
valuesContent := fmt.Sprintf(valuesTemplate, password, replicas)
|
||||
if err := os.WriteFile(valuesFile, []byte(valuesContent), 0644); err != nil {
|
||||
logger.Debug("创建 values.yaml 失败: %v", err)
|
||||
logger.Info("❌ 创建 values.yaml 失败")
|
||||
return err
|
||||
}
|
||||
logger.Info("✅ 成功创建 values.yaml")
|
||||
|
||||
logger.Info("✅ Redis 资源构建成功")
|
||||
logger.Debug("Redis 资源准备完成")
|
||||
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
||||
_cmd.Flags().IntVar(&replicas, "replica-count", 2, "Redis 副本数")
|
||||
_cmd.Flags().StringVar(&password, "password", "******", "Redis 密码")
|
||||
|
||||
return _cmd
|
||||
}
|
||||
Reference in New Issue
Block a user