Files
forge/internal/controller/maker/flannel.go
zhaoyupeng 0bcb138fd5 feat: 添加了 imager 工具 package
refactor: 将  images 的获取分散到各个组件里面
2025-12-29 23:01:42 +08:00

62 lines
2.0 KiB
Go

package maker
import (
"context"
"fmt"
"os"
"path/filepath"
"gitea.loveuer.com/yizhisec/pkg3/logger"
"yizhisec.com/hsv2/forge/pkg/model"
"yizhisec.com/hsv2/forge/pkg/resource"
)
func (m *maker) Flannel(ctx context.Context, mode string) error {
var (
err error
location = filepath.Join(m.workdir, "dependency", "flannel")
)
logger.Info("☑️ 开始构建 flannel 资源...")
logger.Debug("MakeFlannel location: %s", location)
if err = os.Mkdir(location, 0755); err != nil {
logger.Error("MakeFlannel: 创建目录 %s 失败", location)
logger.Debug("MakeFlannel: 创建目录 %s 失败: %v", location, err)
return err
}
bs := []byte(fmt.Sprintf(resource.YAMLFlannel, mode))
if err = os.WriteFile(filepath.Join(location, "flannel.yaml"), bs, 0644); err != nil {
logger.Error("MakeFlannel: 创建文件 %s 失败", filepath.Join(location, "flannel.yaml"))
logger.Debug("MakeFlannel: 创建文件 %s 失败: %v", filepath.Join(location, "flannel.yaml"), err)
return err
}
var images = []*model.Image{
{Name: "ghcr.io/flannel-io/flannel:v0.27.4", Fallback: "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/flannel-io/flannel:v0.27.4", Save: "flannel.tar"},
{Name: "ghcr.io/flannel-io/flannel-cni-plugin:v1.8.0-flannel1", Fallback: "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/flannel-io/flannel-cni-plugin:v1.8.0-flannel1", Save: "flannel-cni-plugin.tar"},
}
logger.Debug("MakeFlannel: 开始获取镜像...")
for _, image := range images {
opts := []ImageOpt{
WithImageFallback(image.Fallback),
WithImageSave(filepath.Join(location, image.Save)),
WithImageForcePull(image.Force),
}
if err := m.Image(ctx, image.Name, opts...); err != nil {
logger.Error("❌ MakeFlannel: 获取镜像失败: %s, 可以手动获取后重试", image.Name)
logger.Debug("❌ MakeFlannel: 获取镜像失败: %s, %v", image.Name, err)
return err
}
}
logger.Debug("MakeFlannel: 获取镜像成功!!!")
logger.Info("✅ 构建 flannel 成功!!!")
return nil
}