k3s/pkg/agent/run_windows.go
Edgar Lee fe18b1fce9
Add --image-service-endpoint flag (#8279)
* Add --image-service-endpoint flag

Problem:
External container runtime can be set but image service endpoint is unchanged
and also is not exposed as a flag. This is useful for using containerd
snapshotters outside of the ones that have built-in support like
stargz-snapshotter.

Solution:
Add a flag --image-service-endpoint and also default image service endpoint to
container runtime endpoint if set.

Signed-off-by: Edgar Lee <edgarhinshunlee@gmail.com>
2023-09-27 13:20:50 -07:00

48 lines
1.1 KiB
Go

//go:build windows
// +build windows
package agent
import (
"os"
"path/filepath"
"strings"
"github.com/k3s-io/k3s/pkg/cli/cmds"
"github.com/k3s-io/k3s/pkg/daemons/config"
)
const (
dockershimSock = "npipe:////./pipe/docker_engine"
containerdSock = "npipe:////./pipe/containerd-containerd"
)
// setupCriCtlConfig creates the crictl config file and populates it
// with the given data from config.
func setupCriCtlConfig(cfg cmds.Agent, nodeConfig *config.Node) error {
cre := nodeConfig.ContainerRuntimeEndpoint
if cre == "" || strings.HasPrefix(cre, "npipe:") {
switch {
case cfg.Docker:
cre = dockershimSock
default:
cre = containerdSock
}
} else {
cre = containerdSock
}
agentConfDir := filepath.Join(cfg.DataDir, "agent", "etc")
if _, err := os.Stat(agentConfDir); os.IsNotExist(err) {
if err := os.MkdirAll(agentConfDir, 0700); err != nil {
return err
}
}
crp := "runtime-endpoint: " + cre + "\n"
ise := nodeConfig.ImageServiceEndpoint
if ise != "" && ise != cre {
crp += "image-endpoint: " + cre + "\n"
}
return os.WriteFile(filepath.Join(agentConfDir, "crictl.yaml"), []byte(crp), 0600)
}