Documentation ¶
Index ¶
- Constants
- func NewAppMeshConfig(appMesh *appmesh.AppMesh, cfg *Config) (string, *libcni.NetworkConfig, error)
- func NewBranchENINetworkConfig(eni *eni.ENI, cfg *Config) (string, *libcni.NetworkConfig, error)
- func NewBridgeNetworkConfig(cfg *Config, includeIPAM bool) (string, *libcni.NetworkConfig, error)
- func NewENINetworkConfig(eni *eni.ENI, cfg *Config) (string, *libcni.NetworkConfig, error)
- func NewIPAMNetworkConfig(cfg *Config) (string, *libcni.NetworkConfig, error)
- type AppMeshConfig
- type BranchENIConfig
- type BridgeConfig
- type CNIClient
- type Config
- type ENIConfig
- type IPAMConfig
- type IPAMNetworkConfig
- type NetworkConfig
Constants ¶
const ( // NetnsFormat is used to construct the path to cotainer network namespace NetnsFormat = "/host/proc/%s/ns/net" // 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" // ECSAppMeshPluginName is the binary of aws-appmesh plugin ECSAppMeshPluginName = "aws-appmesh" // ECSBranchENIPluginName is the binary of the branch-eni plugin ECSBranchENIPluginName = "vpc-branch-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 ¶
func NewAppMeshConfig ¶ added in v1.31.0
NewAppMeshConfig creates a new AppMesh CNI network configuration.
func NewBranchENINetworkConfig ¶ added in v1.31.0
NewBranchENINetworkConfig creates a new branch ENI CNI network configuration.
func NewBridgeNetworkConfig ¶ added in v1.31.0
NewBridgeNetworkConfig creates the config of bridge for ADD command, where bridge plugin acquires the IP and route information from IPAM.
func NewENINetworkConfig ¶ added in v1.31.0
NewENINetworkConfig creates a new ENI CNI network configuration.
func NewIPAMNetworkConfig ¶ added in v1.31.0
func NewIPAMNetworkConfig(cfg *Config) (string, *libcni.NetworkConfig, error)
NewIPAMNetworkConfig creates the IPAM configuration accepted by libcni.
Types ¶
type AppMeshConfig ¶ added in v1.26.0
type AppMeshConfig 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"` // IgnoredUID specifies egress traffic from the processes owned by the UID will be ignored IgnoredUID string `json:"ignoredUID,omitempty"` // IgnoredGID specifies egress traffic from the processes owned by the GID will be ignored IgnoredGID string `json:"ignoredGID,omitempty"` // ProxyIngressPort is the ingress port number that proxy is listening on ProxyIngressPort string `json:"proxyIngressPort"` // ProxyEgressPort is the egress port number that proxy is listening on ProxyEgressPort string `json:"proxyEgressPort"` // AppPorts specifies port numbers that application is listening on AppPorts []string `json:"appPorts"` // EgressIgnoredPorts is the list of ports for which egress traffic will be ignored EgressIgnoredPorts []string `json:"egressIgnoredPorts,omitempty"` // EgressIgnoredIPs is the list of IPs for which egress traffic will be ignored EgressIgnoredIPs []string `json:"egressIgnoredIPs,omitempty"` }
AppMeshConfig contains all the information needed to invoke the app mesh plugin
type BranchENIConfig ¶ added in v1.28.0
type BranchENIConfig struct { // CNIVersion is the CNI spec version to use CNIVersion string `json:"cniVersion,omitempty"` // Name is the CNI network name Name string `json:"name,omitempty"` // Type is the CNI plugin name Type string `json:"type,omitempty"` // TrunkMACAddress is the MAC address of the trunk ENI TrunkMACAddress string `json:"trunkMACAddress,omitempty"` // BranchVlanID is the VLAN ID of the branch ENI BranchVlanID string `json:"branchVlanID,omitempty"` // BranchMacAddress is the MAC address of the branch ENI BranchMACAddress string `json:"branchMACAddress"` // BranchIPAddress is the IP address of the branch ENI BranchIPAddress string `json:"branchIPAddress"` // BranchGatewayIPAddress is the IP address of the branch ENI's default gateway. BranchGatewayIPAddress string `json:"branchGatewayIPAddress"` // InterfaceType is the type of the interface to connect the branch ENI to InterfaceType string `json:"interfaceType,omitempty"` // BlockInstanceMetdata specifies if InstanceMetadata endpoint should be blocked. BlockInstanceMetadata bool `json:"blockInstanceMetadata"` }
BranchENIConfig contains all the information needed to invoke the vpc-branch-eni plugin
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 returns the version of the plugin Version(string) (string, error) // Capabilities returns the capabilities supported by a plugin Capabilities(string) ([]string, error) // SetupNS sets up the namespace of container SetupNS(context.Context, *Config, time.Duration) (*current.Result, error) // CleanupNS cleans up the container namespace CleanupNS(context.Context, *Config, time.Duration) error // ReleaseIPResource marks the ip available in the ipam db ReleaseIPResource(context.Context, *Config, time.Duration) 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 // 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 // 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 // BlockInstanceMetadata specifies if InstanceMetadata endpoint should be blocked BlockInstanceMetadata bool // AdditionalLocalRoutes specifies additional routes to be added to the task namespace AdditionalLocalRoutes []cnitypes.IPNet // NetworkConfigs is the list of CNI network configurations to be invoked NetworkConfigs []*NetworkConfig }
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"` // BlockInstanceMetadata specifies if InstanceMetadata endpoint should be blocked BlockInstanceMetadata bool `json:"block-instance-metadata"` // SubnetGatewayIPV4Address specifies the IPv4 address of the subnet gateway for the ENI SubnetGatewayIPV4Address string `json:"subnetgateway-ipv4-address"` }
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"` Type string `json:"type,omitempty"` CNIVersion string `json:"cniVersion,omitempty"` IPAM IPAMConfig `json:"ipam"` }
IPAMNetworkConfig is the config format accepted by the plugin
type NetworkConfig ¶ added in v1.31.0
type NetworkConfig struct { // IfName is the name of the network interface device, to be set within the // network namespace. IfName string // CNINetworkConfig is the network configuration required to invoke the CNI plugin CNINetworkConfig *libcni.NetworkConfig }
NetworkConfig wraps CNI library's NetworkConfig object. It tracks the interface device name (the IfName param required to invoke AddNetwork) along with libcni's NetworkConfig object. The IfName is required to be set to invoke `AddNetwork` method when invoking plugins to set up the network namespace.
Directories ¶
Path | Synopsis |
---|---|
Package mock_ecscni is a generated GoMock package.
|
Package mock_ecscni is a generated GoMock package. |
Package mock_types is a generated GoMock package.
|
Package mock_types is a generated GoMock package. |
Package mock_libcni is a generated GoMock package.
|
Package mock_libcni is a generated GoMock package. |