prevent user from using crio on unsupported hardware

pull/12425/head
Steven Powell 2021-09-09 13:59:23 -07:00
parent 1bc841108f
commit 8304e52539
3 changed files with 38 additions and 21 deletions

View File

@ -1121,25 +1121,7 @@ func validateFlags(cmd *cobra.Command, drvName string) {
if cmd.Flags().Changed(containerRuntime) {
runtime := strings.ToLower(viper.GetString(containerRuntime))
validOptions := cruntime.ValidRuntimes()
// `crio` is accepted as an alternative spelling to `cri-o`
validOptions = append(validOptions, constants.CRIO)
var validRuntime bool
for _, option := range validOptions {
if runtime == option {
validRuntime = true
}
// Convert `cri-o` to `crio` as the K8s config uses the `crio` spelling
if runtime == "cri-o" {
viper.Set(containerRuntime, constants.CRIO)
}
}
if !validRuntime {
exit.Message(reason.Usage, `Invalid Container Runtime: "{{.runtime}}". Valid runtimes are: {{.validOptions}}`, out.V{"runtime": runtime, "validOptions": strings.Join(cruntime.ValidRuntimes(), ", ")})
}
validateContainerRuntime(runtime, drvName)
validateCNI(cmd, runtime)
}
@ -1206,6 +1188,42 @@ func validateFlags(cmd *cobra.Command, drvName string) {
validateInsecureRegistry()
}
func validateContainerRuntime(runtime string, drvName string) {
validOptions := cruntime.ValidRuntimes()
// `crio` is accepted as an alternative spelling to `cri-o`
validOptions = append(validOptions, constants.CRIO)
var validRuntime bool
for _, option := range validOptions {
if runtime == option {
validRuntime = true
}
// Convert `cri-o` to `crio` as the K8s config uses the `crio` spelling
if runtime == "cri-o" {
viper.Set(containerRuntime, constants.CRIO)
}
}
if !validRuntime {
exit.Message(reason.Usage, `Invalid Container Runtime: "{{.runtime}}". Valid runtimes are: {{.validOptions}}`, out.V{"runtime": runtime, "validOptions": strings.Join(cruntime.ValidRuntimes(), ", ")})
}
// cri-o runtime only supports amd64 & arm64 if kicbase driver is used
if runtime != "cri-o" && runtime != constants.CRIO {
return
}
if !driver.IsKIC(drvName) {
return
}
arch := detect.RuntimeArch()
if arch != "amd64" && arch != "arm64" {
return
}
exit.Message(reason.Usage, `Invalid Container Runtime: "{{.runtime}}". When using a kicbase driver (docker & podman), {{.runtime}} is only supported on amd64 & arm64, use docker or containerd instead.`, out.V{"runtime": runtime})
}
// if container runtime is not docker, check that cni is not disabled
func validateCNI(cmd *cobra.Command, runtime string) {
if runtime == "docker" {

View File

@ -6,7 +6,7 @@
CRIO_BIN_VERSION = v1.22.0
CRIO_BIN_COMMIT = 6becad23eadd7dfdd25fd8df386bf3b706cf7758
CRIO_BIN_SITE = https://github.com/cri-o/cri-o/archive/
CRIO_BIN_SITE = https://github.com/cri-o/cri-o/archive
CRIO_BIN_SOURCE = $(CRIO_BIN_VERSION).tar.gz
CRIO_BIN_DEPENDENCIES = host-go libgpgme
CRIO_BIN_GOPATH = $(@D)/_output

View File

@ -32,7 +32,6 @@ FROM ubuntu:focal-20210401
ARG BUILDKIT_VERSION="v0.9.0"
ARG FUSE_OVERLAYFS_VERSION="v1.7.1"
ARG CONTAINERD_FUSE_OVERLAYFS_VERSION="1.0.3"
ARG CRIO_VERSION="1.22"
# copy in static files (configs, scripts)
COPY deploy/kicbase/10-network-security.conf /etc/sysctl.d/10-network-security.conf