package maker import ( "context" "path/filepath" "gitea.loveuer.com/yizhisec/pkg3/logger" "yizhisec.com/hsv2/forge/pkg/archiver" "yizhisec.com/hsv2/forge/pkg/model" ) func (m *maker) K0s(ctx context.Context) error { var ( tarURL = "https://artifactory.yizhisec.com:443/artifactory/filestore/hsv3/k8s-bin.tar" location = filepath.Join(m.workdir, "dependency", "k0s") ) logger.Info("☑️ 开始准备 k0s...") logger.Debug("下载地址: %s", tarURL) logger.Debug("目标目录: %s", location) if err := archiver.DownloadAndExtract( ctx, tarURL, location, archiver.WithInsecureSkipVerify(), archiver.WithGzipCompression(true), ); err != nil { logger.Info("❌ 下载并解压二进制文件失败") return err } logger.Debug("☑️ maker.K0s: 开始准备相关镜像...") var images = []*model.Image{ {Name: "quay.io/k0sproject/apiserver-network-proxy-agent:v0.32.0", Fallback: "hub.yizhisec.com/external/apiserver-network-proxy-agent:v0.32.0", Save: "k0s.apiserver-network-proxy-agent.tar"}, {Name: "quay.io/k0sproject/cni-node:1.7.1-k0s.0", Fallback: "", Save: "k0s.cni-node.tar"}, {Name: "quay.io/k0sproject/coredns:1.12.2", Fallback: "", Save: "k0s.coredns.tar"}, {Name: "quay.io/k0sproject/kube-proxy:v1.33.4", Fallback: "", Save: "k0s.kube-proxy.tar"}, {Name: "quay.io/k0sproject/kube-router:v2.5.0-iptables1.8.11-0", Fallback: "", Save: "k0s.kube-router.tar"}, {Name: "quay.io/k0sproject/metrics-server:v0.7.2-0", Fallback: "", Save: "k0s.metrics-server.tar"}, {Name: "quay.io/k0sproject/pause:3.10.1", Fallback: "", Save: "k0s.pause.tar"}, } 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("❌ maker.K0s: 获取镜像失败: %s, 可以手动获取后重试", image.Name) logger.Debug("❌ maker.K0s: 获取镜像失败: %s, %v", image.Name, err) return err } } logger.Debug("✅ maker.K0s: 准备相关镜像成功!!!") logger.Info("✅ 准备 k0s 成功!!!") return nil }