kubernetes/minikube

Make the provisioner interface support more container runtimes

开放

#10,883 创建于 2021年3月19日

 (16 条评论) (0 个反应) (0 位负责人)Go (5,222 个派生)batch import
co/generic-driverco/none-driverco/runtime/crioco/runtime/dockerhelp wantedkind/featurelifecycle/frozenpriority/backlog

仓库指标

星标
 (31,799 个星标)
PR 合并指标
 (平均合并 12天 19小时) (30 天内合并 43 个 PR)

描述

Currently the libmachine interface is quite targetted towards Docker:

        // Do the actual provisioning piece:
        //     1. Set the hostname on the instance.
        //     2. Install Docker if it is not present.
        //     3. Configure the daemon to accept connections over TLS.
        //     4. Copy the needed certificates to the server and local config dir.
        //     5. Configure / activate swarm if applicable.
        Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error

It needs to at least know which runtime to install, during provisioning ?

And the swarmOptions and engineOptions need a generic replacement...


Currently the provisioner in minikube is broken, in that it doesn't provision.

It just assumes that all container runtimes are always present on the node.

The original provisioner would install Docker, if it was not already available:

const (
	DefaultEngineInstallURL = "https://get.docker.com"
)
func installDockerGeneric(p Provisioner, baseURL string) error {
        // install docker - until cloudinit we use ubuntu everywhere so we
        // just install it using the docker repos
        if output, err := p.SSHCommand(fmt.Sprintf("if ! type docker; then curl -sSL %s | sh -; fi", baseURL)); err != nil {
                return fmt.Errorf("error installing docker: %s", output)
        }

        return nil
}

贡献者指南