* feat(gpu): enhance DGX Spark support and update GPU type handling * feat(amdgpu): refactor AMD GPU detection and support for GB10 chip and APU * feat(connector): enhance GB10 chip detection with environment variable support * feat(gpu): enhance DGX Spark support and update GPU type handling * feat(amdgpu): refactor AMD GPU detection and support for GB10 chip and APU * feat(connector): enhance GB10 chip detection with environment variable support * feat: add nvidia device plugin for gb10 * fix(gpu): update pod selector for hami-device-plugin based on GB10 chip detection fix(deploy): bump app-service image version to 0.4.78 * feat: enable CGO for building on ARM architecture and adjust build constraints for Linux * feat: enhance multi-architecture support for ARM64 in release workflow * feat: update multi-arch setup for ARM64 in release workflow * feat: enhance ARM64 multi-architecture support in release workflow * feat: streamline ARM64 cross-compilation setup in release workflow * feat: enhance ARM64 support by adding architecture-specific package installations * feat: update ARM64 package sources in release workflow for improved compatibility * feat: amd device plugin and container toolkit install * refactor: remove GB10 chip type check from GPU info update * feat(gpu): update hami version to v2.6.10-compatible for spark * fix: remove gb10 device plugin checking * fix: update klauspost/cpuid to v2.3.0 * fix: amd gpu check (#2522) * feat: enhance storage device detection with USB serial properties * feat: update hami version to v2.6.11-compatible-arm * feat: add chip type support for AMD and NVIDIA GPUs in node label updates * feat(gpu): supports auto binding GPU to app * feat(gpu): remove chip type handling from GPU label updates * feat(gpu): remove GPU type specification from DaemonSet and values.yaml * feat(gpu): remove GB10 device plugin installation and related checks * feat(gpu): update HAMi to v2.6.11 --------- Co-authored-by: dkeven <dkvvven@gmail.com> Co-authored-by: hys <hysyeah@gmail.com>
132 lines
3.8 KiB
Go
132 lines
3.8 KiB
Go
package system
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/beclab/Olares/cli/pkg/amdgpu"
|
|
"github.com/beclab/Olares/cli/pkg/bootstrap/os"
|
|
"github.com/beclab/Olares/cli/pkg/bootstrap/patch"
|
|
"github.com/beclab/Olares/cli/pkg/bootstrap/precheck"
|
|
"github.com/beclab/Olares/cli/pkg/common"
|
|
"github.com/beclab/Olares/cli/pkg/container"
|
|
"github.com/beclab/Olares/cli/pkg/core/module"
|
|
"github.com/beclab/Olares/cli/pkg/daemon"
|
|
"github.com/beclab/Olares/cli/pkg/gpu"
|
|
"github.com/beclab/Olares/cli/pkg/images"
|
|
"github.com/beclab/Olares/cli/pkg/k3s"
|
|
"github.com/beclab/Olares/cli/pkg/manifest"
|
|
"github.com/beclab/Olares/cli/pkg/storage"
|
|
"github.com/beclab/Olares/cli/pkg/terminus"
|
|
)
|
|
|
|
var _ phaseBuilder = &linuxPhaseBuilder{}
|
|
|
|
type linuxPhaseBuilder struct {
|
|
runtime *common.KubeRuntime
|
|
manifestMap manifest.InstallationManifest
|
|
}
|
|
|
|
func (l *linuxPhaseBuilder) base() phase {
|
|
m := []module.Module{
|
|
&os.PvePatchModule{Skip: !l.runtime.GetSystemInfo().IsPveOrPveLxc()},
|
|
&precheck.RunPrechecksModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
},
|
|
&patch.InstallDepsModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
},
|
|
&os.ConfigSystemModule{},
|
|
}
|
|
|
|
return m
|
|
}
|
|
|
|
func (l *linuxPhaseBuilder) installContainerModule() []module.Module {
|
|
var isK3s = strings.Contains(l.runtime.Arg.KubernetesVersion, "k3s")
|
|
if isK3s {
|
|
return []module.Module{
|
|
&k3s.InstallContainerModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
},
|
|
}
|
|
} else {
|
|
return []module.Module{
|
|
&container.InstallContainerModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
NoneCluster: true,
|
|
}, //
|
|
}
|
|
}
|
|
}
|
|
|
|
func (l *linuxPhaseBuilder) build() []module.Module {
|
|
return l.base().
|
|
addModule(cloudModuleBuilder(func() []module.Module {
|
|
return []module.Module{
|
|
&storage.InitStorageModule{Skip: !l.runtime.Arg.IsCloudInstance},
|
|
}
|
|
}).withCloud(l.runtime)...).
|
|
addModule(cloudModuleBuilder(l.installContainerModule).withoutCloud(l.runtime)...).
|
|
addModule(&terminus.WriteReleaseFileModule{}).
|
|
addModule(gpuModuleBuilder(func() []module.Module {
|
|
return []module.Module{
|
|
&amdgpu.InstallAmdRocmModule{},
|
|
&amdgpu.InstallAmdContainerToolkitModule{Skip: func() bool {
|
|
if l.runtime.GetSystemInfo().IsAmdGPUOrAPU() {
|
|
return false
|
|
}
|
|
return true
|
|
}(),
|
|
},
|
|
&gpu.InstallDriversModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
},
|
|
&gpu.InstallContainerToolkitModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
},
|
|
&gpu.RestartContainerdModule{},
|
|
}
|
|
|
|
}).withGPU(l.runtime)...).
|
|
addModule(cloudModuleBuilder(func() []module.Module {
|
|
// unitl now, system ready
|
|
return []module.Module{
|
|
&images.PreloadImagesModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
}, //
|
|
}
|
|
}).withoutCloud(l.runtime)...).
|
|
addModule(terminusBoxModuleBuilder(func() []module.Module {
|
|
return []module.Module{
|
|
&daemon.InstallTerminusdBinaryModule{
|
|
ManifestModule: manifest.ManifestModule{
|
|
Manifest: l.manifestMap,
|
|
BaseDir: l.runtime.GetBaseDir(), // l.runtime.Arg.BaseDir,
|
|
},
|
|
},
|
|
}
|
|
}).inBox(l.runtime)...).
|
|
addModule(&terminus.PreparedModule{})
|
|
}
|