createCluster/network: add basic support for hostnetwork mode in docker
This commit is contained in:
parent
469d8ab62d
commit
c51ec003bd
@ -170,6 +170,9 @@ func parseCreateClusterCmd(cmd *cobra.Command, args []string, createClusterOpts
|
||||
network.Name = networkName
|
||||
network.External = true
|
||||
}
|
||||
if networkName == "host" && (masterCount+workerCount) > 1 {
|
||||
log.Fatalln("Can only run a single node in hostnetwork mode")
|
||||
}
|
||||
|
||||
// --secret
|
||||
secret, err := cmd.Flags().GetString("secret")
|
||||
|
@ -93,3 +93,14 @@ func (d Docker) DeleteNetwork(ID string) error {
|
||||
// (3) delete network
|
||||
return docker.NetworkRemove(ctx, ID)
|
||||
}
|
||||
|
||||
// GetNetwork gets information about a network by its ID
|
||||
func GetNetwork(ID string) (types.NetworkResource, error) {
|
||||
ctx := context.Background()
|
||||
docker, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation())
|
||||
if err != nil {
|
||||
log.Errorln("Failed to create docker client")
|
||||
return types.NetworkResource{}, err
|
||||
}
|
||||
return docker.NetworkInspect(ctx, ID, types.NetworkInspectOptions{})
|
||||
}
|
||||
|
@ -86,11 +86,17 @@ func TranslateNodeToContainer(node *k3d.Node) (*NodeInDocker, error) {
|
||||
}
|
||||
containerConfig.ExposedPorts = exposedPorts
|
||||
hostConfig.PortBindings = portBindings
|
||||
|
||||
/* Network */
|
||||
networkingConfig.EndpointsConfig = map[string]*network.EndpointSettings{
|
||||
node.Network: {},
|
||||
}
|
||||
netInfo, err := GetNetwork(node.Network)
|
||||
if err != nil {
|
||||
log.Warnln("Failed to get network information")
|
||||
log.Warnln(err)
|
||||
} else if netInfo.Driver == "host" {
|
||||
hostConfig.NetworkMode = "host"
|
||||
}
|
||||
|
||||
return &NodeInDocker{
|
||||
ContainerConfig: containerConfig,
|
||||
|
@ -7,8 +7,8 @@ CURR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
source "$CURR_DIR/common.sh"
|
||||
|
||||
info "Creating two clusters..."
|
||||
$EXE --verbose create cluster c1 --wait --timeout 60 --api-port 6443 || failed "could not create cluster c1"
|
||||
$EXE --verbose create cluster c2 --wait --timeout 60 --api-port 6444 || failed "could not create cluster c2"
|
||||
$EXE --verbose create cluster c1 --wait --timeout 60s --api-port 6443 || failed "could not create cluster c1"
|
||||
$EXE --verbose create cluster c2 --wait --timeout 60s --api-port 6444 || failed "could not create cluster c2"
|
||||
|
||||
info "Checking we have access to both clusters..."
|
||||
check_k3d_clusters "c1" "c2" || failed "error checking cluster"
|
||||
|
@ -7,7 +7,7 @@ CURR_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
source "$CURR_DIR/common.sh"
|
||||
|
||||
info "Creating cluster multimaster..."
|
||||
$EXE create cluster "multimaster" --masters 3 --api-port 6443 --wait --timeout 360 || failed "could not create cluster multimaster"
|
||||
$EXE --verbose create cluster "multimaster" --masters 3 --api-port 6443 --wait --timeout 360s || failed "could not create cluster multimaster"
|
||||
|
||||
info "Checking we have access to the cluster..."
|
||||
check_k3d_clusters "multimaster" || failed "error checking cluster"
|
||||
|
Loading…
Reference in New Issue
Block a user