Implement some checks and reorganize code
parent
c2175abcba
commit
5799b47ddb
|
@ -252,7 +252,7 @@ func deletePossibleKicLeftOver(cname string, driverName string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: move to oci.DeleteContainer?
|
// TODO: move to oci.DeleteContainer?
|
||||||
defaultNetwork := fmt.Sprintf("%s-network", cname)
|
defaultNetwork := cname
|
||||||
err = oci.RemoveNetwork(defaultNetwork)
|
err = oci.RemoveNetwork(defaultNetwork)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Warningf("error deleting network. :%v", errs)
|
glog.Warningf("error deleting network. :%v", errs)
|
||||||
|
|
|
@ -67,15 +67,6 @@ func NewDriver(c Config) *Driver {
|
||||||
|
|
||||||
// Create a host using the driver's config
|
// Create a host using the driver's config
|
||||||
func (d *Driver) Create() error {
|
func (d *Driver) Create() error {
|
||||||
defaultNetwork := fmt.Sprintf("%s-network", d.MachineName)
|
|
||||||
defaultIPRange := "192.168.39.0/24"
|
|
||||||
|
|
||||||
err := oci.CreateNetwork(defaultNetwork, defaultIPRange)
|
|
||||||
if err != nil {
|
|
||||||
// use k8s network? fail?
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
params := oci.CreateParams{
|
params := oci.CreateParams{
|
||||||
Name: d.NodeConfig.MachineName,
|
Name: d.NodeConfig.MachineName,
|
||||||
Image: d.NodeConfig.ImageDigest,
|
Image: d.NodeConfig.ImageDigest,
|
||||||
|
@ -87,8 +78,13 @@ func (d *Driver) Create() error {
|
||||||
ExtraArgs: []string{"--expose", fmt.Sprintf("%d", d.NodeConfig.APIServerPort)},
|
ExtraArgs: []string{"--expose", fmt.Sprintf("%d", d.NodeConfig.APIServerPort)},
|
||||||
OCIBinary: d.NodeConfig.OCIBinary,
|
OCIBinary: d.NodeConfig.OCIBinary,
|
||||||
APIServerPort: d.NodeConfig.APIServerPort,
|
APIServerPort: d.NodeConfig.APIServerPort,
|
||||||
Network: defaultNetwork,
|
}
|
||||||
IP: "192.168.39.2",
|
|
||||||
|
if err := oci.CreateNetwork(d.MachineName, defaultIPRange); err != nil {
|
||||||
|
glog.Warningf("unable to create docker network; node ip may not be stable: %v", err)
|
||||||
|
} else {
|
||||||
|
params.Network = defaultNetwork
|
||||||
|
params.IP = "192.168.39.2"
|
||||||
}
|
}
|
||||||
|
|
||||||
// control plane specific options
|
// control plane specific options
|
||||||
|
|
|
@ -165,12 +165,15 @@ func dockerContainerIP(name string) (string, string, error) {
|
||||||
|
|
||||||
// CreateNetwork creates a network
|
// CreateNetwork creates a network
|
||||||
func CreateNetwork(name, ipRange string) error {
|
func CreateNetwork(name, ipRange string) error {
|
||||||
// TODO: validate if exist?
|
// check if the network already exists
|
||||||
|
if networkExists(name) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
// TODO: subnet conflict
|
// TODO: subnet conflict
|
||||||
// TODO: configure gateway explictly
|
// TODO: configure gateway explictly
|
||||||
|
|
||||||
subnet := fmt.Sprintf("--subnet=%s", ipRange)
|
subnet := fmt.Sprintf("--subnet=%s", ipRange)
|
||||||
_, err := runCmd(exec.Command(Docker, "network", "create", "--driver=bridge", subnet, name))
|
_, err = runCmd(exec.Command(Docker, "network", "create", "--driver=bridge", subnet, name))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "error creating network")
|
return errors.Wrapf(err, "error creating network")
|
||||||
}
|
}
|
||||||
|
@ -180,12 +183,23 @@ func CreateNetwork(name, ipRange string) error {
|
||||||
|
|
||||||
// RemoveNetwork removes a network
|
// RemoveNetwork removes a network
|
||||||
func RemoveNetwork(name string) error {
|
func RemoveNetwork(name string) error {
|
||||||
// TODO: check if exist?
|
if !networkExists {
|
||||||
|
return nil
|
||||||
_, err := runCmd(exec.Command(Docker, "network", "remove", name))
|
|
||||||
if err != nil {
|
|
||||||
return errors.Wrapf(err, "error removing network")
|
|
||||||
}
|
}
|
||||||
|
_, err := runCmd(exec.Command(Docker, "network", "remove", name))
|
||||||
return nil
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func networkExists(name string) bool {
|
||||||
|
rr, err := runCmd(exec.Command(Docker, "network", "ls", "--format", "{{.Name}}"))
|
||||||
|
if err != nil {
|
||||||
|
return errors.Wrap(err, "listing networks")
|
||||||
|
}
|
||||||
|
networks := strings.Split(rr.Output(), "\n")
|
||||||
|
for _, n := range networks {
|
||||||
|
if n == name {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
|
@ -142,18 +142,18 @@ func CreateContainerNode(p CreateParams) error {
|
||||||
"--label", p.NodeLabel,
|
"--label", p.NodeLabel,
|
||||||
}
|
}
|
||||||
|
|
||||||
// network
|
|
||||||
if p.OCIBinary == Docker && runtime.GOOS == "linux" { // for now only docker on linux
|
|
||||||
runArgs = append(runArgs, "--network", p.Network)
|
|
||||||
runArgs = append(runArgs, "--ip", p.IP)
|
|
||||||
}
|
|
||||||
|
|
||||||
// volume
|
// volume
|
||||||
if p.OCIBinary == Podman { // enable execing in /var
|
if p.OCIBinary == Podman { // enable execing in /var
|
||||||
// podman mounts var/lib with no-exec by default https://github.com/containers/libpod/issues/5103
|
// podman mounts var/lib with no-exec by default https://github.com/containers/libpod/issues/5103
|
||||||
runArgs = append(runArgs, "--volume", fmt.Sprintf("%s:/var:exec", p.Name))
|
runArgs = append(runArgs, "--volume", fmt.Sprintf("%s:/var:exec", p.Name))
|
||||||
}
|
}
|
||||||
if p.OCIBinary == Docker {
|
if p.OCIBinary == Docker {
|
||||||
|
// on linux, we can provide a static IP for docker
|
||||||
|
if runtime.GOOS == "linux" && p.Network != "" && p.IP != "" {
|
||||||
|
runArgs = append(runArgs, "--network", p.Network)
|
||||||
|
runArgs = append(runArgs, "--ip", p.IP)
|
||||||
|
}
|
||||||
|
|
||||||
runArgs = append(runArgs, "--volume", fmt.Sprintf("%s:/var", p.Name))
|
runArgs = append(runArgs, "--volume", fmt.Sprintf("%s:/var", p.Name))
|
||||||
// ignore apparmore github actions docker: https://github.com/kubernetes/minikube/issues/7624
|
// ignore apparmore github actions docker: https://github.com/kubernetes/minikube/issues/7624
|
||||||
runArgs = append(runArgs, "--security-opt", "apparmor=unconfined")
|
runArgs = append(runArgs, "--security-opt", "apparmor=unconfined")
|
||||||
|
|
|
@ -27,6 +27,8 @@ const (
|
||||||
Version = "v0.0.10"
|
Version = "v0.0.10"
|
||||||
// SHA of the kic base image
|
// SHA of the kic base image
|
||||||
baseImageSHA = "f58e0c4662bac8a9b5dda7984b185bad8502ade5d9fa364bf2755d636ab51438"
|
baseImageSHA = "f58e0c4662bac8a9b5dda7984b185bad8502ade5d9fa364bf2755d636ab51438"
|
||||||
|
|
||||||
|
defaultIPRange = "192.168.39.0/24"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
Loading…
Reference in New Issue