mirror of https://github.com/docker/docs.git
Google driver: add `--google-use-internal-ip-only` flag
This addresses previously-closed issue #2876, which points out that instances created with the `--google-use-internal-ip` command-line flag are still assigned an external IP address. The new flag (which implies the presence of `--google-use-internal-ip` if it isn't specified) will cause the new instance to have no externally-accessible IP address. Signed-off-by: Jason Roehm <jroehm@gmail.com>
This commit is contained in:
parent
d87383e8f3
commit
6789c51b83
|
@ -20,19 +20,20 @@ import (
|
|||
|
||||
// ComputeUtil is used to wrap the raw GCE API code and store common parameters.
|
||||
type ComputeUtil struct {
|
||||
zone string
|
||||
instanceName string
|
||||
userName string
|
||||
project string
|
||||
diskTypeURL string
|
||||
address string
|
||||
preemptible bool
|
||||
useInternalIP bool
|
||||
service *raw.Service
|
||||
zoneURL string
|
||||
globalURL string
|
||||
SwarmMaster bool
|
||||
SwarmHost string
|
||||
zone string
|
||||
instanceName string
|
||||
userName string
|
||||
project string
|
||||
diskTypeURL string
|
||||
address string
|
||||
preemptible bool
|
||||
useInternalIP bool
|
||||
useInternalIPOnly bool
|
||||
service *raw.Service
|
||||
zoneURL string
|
||||
globalURL string
|
||||
SwarmMaster bool
|
||||
SwarmHost string
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -57,19 +58,20 @@ func newComputeUtil(driver *Driver) (*ComputeUtil, error) {
|
|||
}
|
||||
|
||||
return &ComputeUtil{
|
||||
zone: driver.Zone,
|
||||
instanceName: driver.MachineName,
|
||||
userName: driver.SSHUser,
|
||||
project: driver.Project,
|
||||
diskTypeURL: driver.DiskType,
|
||||
address: driver.Address,
|
||||
preemptible: driver.Preemptible,
|
||||
useInternalIP: driver.UseInternalIP,
|
||||
service: service,
|
||||
zoneURL: apiURL + driver.Project + "/zones/" + driver.Zone,
|
||||
globalURL: apiURL + driver.Project + "/global",
|
||||
SwarmMaster: driver.SwarmMaster,
|
||||
SwarmHost: driver.SwarmHost,
|
||||
zone: driver.Zone,
|
||||
instanceName: driver.MachineName,
|
||||
userName: driver.SSHUser,
|
||||
project: driver.Project,
|
||||
diskTypeURL: driver.DiskType,
|
||||
address: driver.Address,
|
||||
preemptible: driver.Preemptible,
|
||||
useInternalIP: driver.UseInternalIP,
|
||||
useInternalIPOnly: driver.UseInternalIPOnly,
|
||||
service: service,
|
||||
zoneURL: apiURL + driver.Project + "/zones/" + driver.Zone,
|
||||
globalURL: apiURL + driver.Project + "/global",
|
||||
SwarmMaster: driver.SwarmMaster,
|
||||
SwarmHost: driver.SwarmHost,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -235,9 +237,6 @@ func (c *ComputeUtil) createInstance(d *Driver) error {
|
|||
},
|
||||
NetworkInterfaces: []*raw.NetworkInterface{
|
||||
{
|
||||
AccessConfigs: []*raw.AccessConfig{
|
||||
{Type: "ONE_TO_ONE_NAT"},
|
||||
},
|
||||
Network: c.globalURL + "/networks/default",
|
||||
},
|
||||
},
|
||||
|
@ -255,6 +254,13 @@ func (c *ComputeUtil) createInstance(d *Driver) error {
|
|||
},
|
||||
}
|
||||
|
||||
if !c.useInternalIPOnly {
|
||||
cfg := &raw.AccessConfig{
|
||||
Type: "ONE_TO_ONE_NAT",
|
||||
}
|
||||
instance.NetworkInterfaces[0].AccessConfigs = append(instance.NetworkInterfaces[0].AccessConfigs, cfg)
|
||||
}
|
||||
|
||||
if c.address != "" {
|
||||
staticAddress, err := c.staticAddress()
|
||||
if err != nil {
|
||||
|
|
|
@ -15,18 +15,19 @@ import (
|
|||
// Driver is a struct compatible with the docker.hosts.drivers.Driver interface.
|
||||
type Driver struct {
|
||||
*drivers.BaseDriver
|
||||
Zone string
|
||||
MachineType string
|
||||
MachineImage string
|
||||
DiskType string
|
||||
Address string
|
||||
Preemptible bool
|
||||
UseInternalIP bool
|
||||
Scopes string
|
||||
DiskSize int
|
||||
Project string
|
||||
Tags string
|
||||
UseExisting bool
|
||||
Zone string
|
||||
MachineType string
|
||||
MachineImage string
|
||||
DiskType string
|
||||
Address string
|
||||
Preemptible bool
|
||||
UseInternalIP bool
|
||||
UseInternalIPOnly bool
|
||||
Scopes string
|
||||
DiskSize int
|
||||
Project string
|
||||
Tags string
|
||||
UseExisting bool
|
||||
}
|
||||
|
||||
const (
|
||||
|
@ -111,6 +112,11 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
|
|||
Usage: "Use internal GCE Instance IP rather than public one",
|
||||
EnvVar: "GOOGLE_USE_INTERNAL_IP",
|
||||
},
|
||||
mcnflag.BoolFlag{
|
||||
Name: "google-use-internal-ip-only",
|
||||
Usage: "Configure GCE instance to not have an external IP address",
|
||||
EnvVar: "GOOGLE_USE_INTERNAL_IP_ONLY",
|
||||
},
|
||||
mcnflag.BoolFlag{
|
||||
Name: "google-use-existing",
|
||||
Usage: "Don't create a new VM, use an existing one",
|
||||
|
@ -170,7 +176,8 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
|
|||
d.DiskType = flags.String("google-disk-type")
|
||||
d.Address = flags.String("google-address")
|
||||
d.Preemptible = flags.Bool("google-preemptible")
|
||||
d.UseInternalIP = flags.Bool("google-use-internal-ip")
|
||||
d.UseInternalIP = flags.Bool("google-use-internal-ip") || flags.Bool("google-use-internal-ip-only")
|
||||
d.UseInternalIPOnly = flags.Bool("google-use-internal-ip-only")
|
||||
d.Scopes = flags.String("google-scopes")
|
||||
d.Tags = flags.String("google-tags")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue