Documentation
¶
Index ¶
Constants ¶
View Source
const ( // ECSIPAMPluginName is the binary of the ipam plugin ECSIPAMPluginName = "ecs-ipam" // ECSBridgePluginName is the binary of the bridge plugin ECSBridgePluginName = "ecs-bridge" // ECSENIPluginName is the binary of the eni plugin ECSENIPluginName = "ecs-eni" // TaskIAMRoleEndpoint is the endpoint of ecs-agent exposes credentials for // task IAM role TaskIAMRoleEndpoint = "169.254.170.2/32" // CapabilityAWSVPCNetworkingMode is the capability string, which when // present in the output of the '--capabilities' command of a CNI plugin // indicates that the plugin can support the ECS "awsvpc" network mode CapabilityAWSVPCNetworkingMode = "awsvpc-network-mode" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BridgeConfig ¶
type BridgeConfig struct {
// Type is the cni plugin name
Type string `json:"type,omitempty"`
// CNIVersion is the cni spec version to use
CNIVersion string `json:"cniVersion,omitempty"`
// BridgeName is the name of bridge
BridgeName string `json:"bridge"`
// IsGw indicates whether the bridge act as a gateway, it determines whether
// an ip address needs to assign to the bridge
IsGW bool `json:"isGateway"`
// IsDefaultGW indicates whether the bridge is the gateway of the container
IsDefaultGW bool `json:"isDefaultGateway"`
// ForceAddress indicates whether a new ip should be assigned if the bridge
// has already a different ip
ForceAddress bool `json:"forceAddress"`
// IPMasq indicates whether to setup the IP Masquerade for traffic originating
// from this network
IPMasq bool `json:"ipMasq"`
// MTU sets MTU of the bridge interface
MTU int `json:"mtu"`
// HairpinMode sets the hairpin mode of interface on the bridge
HairpinMode bool `json:"hairpinMode"`
// IPAM is the configuration to acquire ip/route from ipam plugin
IPAM IPAMConfig `json:"ipam,omitempty"`
}
BridgeConfig contains all the information needed to invoke the bridge plugin
type CNIClient ¶
type CNIClient interface {
Version(string) (string, error)
Capabilities(string) ([]string, error)
SetupNS(*Config) error
CleanupNS(*Config) error
ReleaseIPResource(*Config) error
}
CNIClient defines the method of setting/cleaning up container namespace
type Config ¶
type Config struct {
// PluginsPath indicates the path where cni plugins are located
PluginsPath string
// MinSupportedCNIVersion is the minimum cni spec version supported
MinSupportedCNIVersion string
// ENIID is the id of ec2 eni
ENIID string
// ContainerID is the id of container of which to set up the network namespace
ContainerID string
// ContainerPID is the pid of the container
ContainerPID string
// ENIIPV4Address is the ipv4 assigned to the eni
ENIIPV4Address string
//ENIIPV6Address is the ipv6 assigned to the eni
ENIIPV6Address string
// ENIMACAddress is the mac address of the eni
ENIMACAddress string
// BridgeName is the name used to create the bridge
BridgeName string
// IPAMV4Address is the ipv4 used to assign from ipam
IPAMV4Address *cnitypes.IPNet
// ID is the information associate with ip in ipam
ID string
// BlockInstanceMetdata specifies if InstanceMetadata endpoint should be
// blocked
BlockInstanceMetdata bool
// AdditionalLocalRoutes specifies additional routes to be added to the task namespace
AdditionalLocalRoutes []cnitypes.IPNet
}
Config contains all the information to set up the container namespace using the plugins
type ENIConfig ¶
type ENIConfig struct {
// Type is the cni plugin name
Type string `json:"type,omitempty"`
// CNIVersion is the cni spec version to use
CNIVersion string `json:"cniVersion,omitempty"`
// ENIID is the id of ec2 eni
ENIID string `json:"eni"`
// IPV4Address is the ipv4 of eni
IPV4Address string `json:"ipv4-address"`
// IPV6Address is the ipv6 of eni
IPV6Address string `json:"ipv6-address, omitempty"`
// MacAddress is the mac address of eni
MACAddress string `json:"mac"`
// BlockInstanceMetdata specifies if InstanceMetadata endpoint should be
// blocked
BlockInstanceMetdata bool `json:"block-instance-metadata"`
}
ENIConfig contains all the information needed to invoke the eni plugin
type IPAMConfig ¶
type IPAMConfig struct {
// Type is the cni plugin name
Type string `json:"type,omitempty"`
// ID is the information stored in the ipam along with ip as key-value pair
ID string `json:"id,omitempty"`
// CNIVersion is the cni spec version to use
CNIVersion string `json:"cniVersion,omitempty"`
// IPV4Subnet is the ip address range managed by ipam
IPV4Subnet string `json:"ipv4-subnet,omitempty"`
// IPV4Address is the ip address to deal with(assign or release) in ipam
IPV4Address *cnitypes.IPNet `json:"ipv4-address,omitempty"`
// IPV4Gateway is the gateway returned by ipam, defalut the '.1' in the subnet
IPV4Gateway string `json:"ipv4-gateway,omitempty"`
// IPV4Routes is the route to added in the containerr namespace
IPV4Routes []*cnitypes.Route `json:"ipv4-routes,omitempty"`
}
IPAMConfig contains all the information needed to invoke the ipam plugin
type IPAMNetworkConfig ¶
type IPAMNetworkConfig struct {
Name string `json:"name,omitempty"`
CNIVersion string `json:"cniVersion,omitempty"`
IPAM IPAMConfig `json:"ipam"`
}
IPAMNetworkConfig is the config format accepted by the plugin
Click to show internal directories.
Click to hide internal directories.