Documentation
¶
Index ¶
- Constants
- Variables
- func ErspanPolicyLogger(log *logrus.Logger, erspan *erspanpolicy.ErspanPolicy) *logrus.Entry
- func InitFlags(config *ControllerConfig)
- func NetflowPolicyLogger(log *logrus.Logger, netflow *netflowpolicy.NetflowPolicy) *logrus.Entry
- func NodeFabricNetworkAttachmentLogger(log *logrus.Logger, nodeFabNetAtt *fabattv1.NodeFabricNetworkAttachment) *logrus.Entry
- func QosPolicyLogger(log *logrus.Logger, qos *qospolicy.QosPolicy) *logrus.Entry
- func RdConfigLogger(log *logrus.Logger, r *rdConfigv1.RdConfig) *logrus.Entry
- func SnatPolicyLogger(log *logrus.Logger, snat *snatpolicy.SnatPolicy) *logrus.Entry
- func StringFromInfo(ver *VersionInfo) string
- func VersionString() string
- type AaepEpgAttachData
- type AciController
- func (cont *AciController) BuildSubnetDnCache(dn, aciVrfDn string)
- func (cont *AciController) Init()
- func (cont *AciController) RdConfigAdded(obj interface{})
- func (cont *AciController) RdConfigDeleted(obj interface{})
- func (cont *AciController) RdConfigUpdated(oldobj, newobj interface{})
- func (cont *AciController) Run(stopCh <-chan struct{})
- func (cont *AciController) RunStatus()
- func (cont *AciController) SubnetChanged(obj apicapi.ApicObject, aciVrfDn string)
- func (cont *AciController) SubnetDeleted(dn string)
- func (cont *AciController) UpdateLLDPIfHook(obj apicapi.ApicObject) bool
- func (cont *AciController) UpdateLLDPIfLocked(dn, lldpIf string) bool
- func (cont *AciController) UpdateSubnetDnCache(subnetDn, subnetIp, aciVrfDn string)
- func (cont *AciController) UpdateSubnetDnCacheForDn(subnetDn, subnetIp string)
- type AciResources
- type AdditionalNetworkMeta
- type ContPodSelector
- type ContPortRange
- type ContSnatPolicy
- type Controller
- func (c *Controller) CheckOwnerReference(reference []metav1.OwnerReference) bool
- func (c *Controller) CreateAccProvisionInputCR() error
- func (c *Controller) CreateAccProvisionInputObj() *accprovisioninput.AccProvisionInput
- func (c *Controller) CreateAciContainersOperatorCR() error
- func (c *Controller) CreateAciContainersOperatorObj() *operators.AciContainersOperator
- func (c *Controller) GetAccProvisionInputCR() (*accprovisioninput.AccProvisionInput, error)
- func (c *Controller) GetAciContainersOperatorCR() (*operators.AciContainersOperator, error)
- func (c *Controller) ReadConfigMap(field string) ([]byte, error)
- func (c *Controller) Run(stopCh <-chan struct{})
- func (c *Controller) UpdateDeploymentOwnerReference(acicontainersoperator *operators.AciContainersOperator) bool
- func (c *Controller) UpdateHostDaemonsetOwnerReference(acicontainersoperator *operators.AciContainersOperator) bool
- func (c *Controller) UpdateOvsDaemonsetOwnerReference(acicontainersoperator *operators.AciContainersOperator) bool
- func (c *Controller) WriteConfigMap(field string, data *corev1.ConfigMap) error
- type ControllerConfig
- type DelayedEpSlice
- type EndPointData
- type Environment
- type EpgVlanMap
- type EventPoster
- type K8sEnvironment
- func (env *K8sEnvironment) Init(cont *AciController) error
- func (env *K8sEnvironment) InitStaticAciObjects()
- func (env *K8sEnvironment) NodeAnnotationChanged(nodeName string)
- func (env *K8sEnvironment) NodePodNetworkChanged(nodeName string)
- func (env *K8sEnvironment) NodeServiceChanged(nodeName string)
- func (env *K8sEnvironment) OpFlexDeviceType() string
- func (env *K8sEnvironment) PrepareRun(stopCh <-chan struct{}) error
- func (env *K8sEnvironment) RESTConfig() *restclient.Config
- func (env *K8sEnvironment) ServiceBd() string
- func (env *K8sEnvironment) VmmPolicy() string
- type LinkData
- type NfL3Data
- type NfL3Networks
- type NfL3OutData
- type NfLLDPIfData
- type NfTenantData
- type NfVrfData
- type NfcData
- type NodeSnatRedirectExclude
- type OpflexGroup
- type RoutedNetworkData
- type RoutedNodeData
- type ServiceEndPointType
- type Severity
- type SviContext
- type VersionInfo
Constants ¶
View Source
const ( // ACI Scalability Guide 6.01 DefaultMaxL3OutNodesPerPod = 400 // ACI Scalability Guide 6.01 DefaultMaxFloatingL3OutAnchorNodes = 6 // This value is for practical considerations DefaultMaxConventionalSviNodes = 10 )
View Source
const (
ACIContainersTaintName string = "aci-containers-host/unavailable"
)
Name of the taint to add to nodes that are not ready
View Source
const DefaultServiceContractScope = "context"
Default service contract scope value
Default service ext subnet scope - enable shared security
Variables ¶
View Source
var Acc_provision_config_path = "/usr/local/etc/acc-provision/acc-provision-operator.conf"
View Source
var Aci_operator_config_path = "/usr/local/etc/aci-containers/aci-operator.conf"
View Source
var Dnsoper = map[string]bool{ "openshift-4.3": true, }
View Source
var Version = map[string]bool{ "openshift-4.3": true, "cloud": true, "openshift-4.4-openstack": true, "openshift-4.5-openstack": true, "openshift-4.6-openstack": true, "openshift-4.7-openstack": true, "openshift-4.8-openstack": true, "openshift-4.9-openstack": true, "openshift-4.10-openstack": true, "openshift-4.11-openstack": true, "openshift-4.12-openstack": true, "openshift-4.13-openstack": true, "openshift-4.14-openstack": true, "openshift-4.15-openstack": true, "openshift-4.16-openstack": true, "openshift-4.17-openstack": true, "openshift-4.18-openstack": true, "openshift-4.19-openstack": true, "openshift-4.20-openstack": true, "openshift-4.6-baremetal": true, "openshift-4.7-baremetal": true, "openshift-4.8-baremetal": true, "openshift-4.9-baremetal": true, "openshift-4.10-baremetal": true, "openshift-4.11-baremetal": true, "openshift-4.12-baremetal": true, "openshift-4.13-baremetal": true, "openshift-4.14-baremetal": true, "openshift-4.15-baremetal": true, "openshift-4.16-baremetal": true, "openshift-4.17-baremetal": true, "openshift-4.18-baremetal": true, "openshift-4.19-baremetal": true, "openshift-4.20-baremetal": true, "openshift-4.14-agent-based-baremetal": true, "openshift-4.15-agent-based-baremetal": true, "openshift-4.16-agent-based-baremetal": true, "openshift-4.17-agent-based-baremetal": true, "openshift-4.18-agent-based-baremetal": true, "openshift-4.19-agent-based-baremetal": true, "openshift-4.20-agent-based-baremetal": true, "openshift-4.4-esx": true, "openshift-4.5-esx": true, "openshift-4.6-esx": true, "openshift-4.7-esx": true, "openshift-4.8-esx": true, "openshift-4.9-esx": true, "openshift-4.10-esx": true, "openshift-4.11-esx": true, "openshift-4.12-esx": true, "openshift-4.13-esx": true, "openshift-4.14-esx": true, "openshift-4.15-esx": true, "openshift-4.16-esx": true, "openshift-4.17-esx": true, "openshift-4.18-esx": true, "openshift-4.19-esx": true, "openshift-4.20-esx": true, "openshift-4.14-agent-based-esx": true, "openshift-4.15-agent-based-esx": true, "openshift-4.16-agent-based-esx": true, "openshift-4.17-agent-based-esx": true, "openshift-4.18-agent-based-esx": true, "openshift-4.19-agent-based-esx": true, "openshift-4.20-agent-based-esx": true, }
Functions ¶
func ErspanPolicyLogger ¶
func ErspanPolicyLogger(log *logrus.Logger, erspan *erspanpolicy.ErspanPolicy) *logrus.Entry
func InitFlags ¶
func InitFlags(config *ControllerConfig)
func NetflowPolicyLogger ¶
func NetflowPolicyLogger(log *logrus.Logger, netflow *netflowpolicy.NetflowPolicy) *logrus.Entry
func QosPolicyLogger ¶
func RdConfigLogger ¶
func SnatPolicyLogger ¶
func SnatPolicyLogger(log *logrus.Logger, snat *snatpolicy.SnatPolicy) *logrus.Entry
func StringFromInfo ¶
func StringFromInfo(ver *VersionInfo) string
StringFromInfo prints the versioning details
Types ¶
type AaepEpgAttachData ¶
type AaepEpgAttachData struct {
// contains filtered or unexported fields
}
type AciController ¶
type AciController struct {
// contains filtered or unexported fields
}
func NewController ¶
func NewController(config *ControllerConfig, env Environment, log *logrus.Logger, unittestmode bool) *AciController
func (*AciController) BuildSubnetDnCache ¶
func (cont *AciController) BuildSubnetDnCache(dn, aciVrfDn string)
func (*AciController) Init ¶
func (cont *AciController) Init()
func (*AciController) RdConfigAdded ¶
func (cont *AciController) RdConfigAdded(obj interface{})
func (*AciController) RdConfigDeleted ¶
func (cont *AciController) RdConfigDeleted(obj interface{})
func (*AciController) RdConfigUpdated ¶
func (cont *AciController) RdConfigUpdated(oldobj, newobj interface{})
func (*AciController) Run ¶
func (cont *AciController) Run(stopCh <-chan struct{})
func (*AciController) RunStatus ¶
func (cont *AciController) RunStatus()
func (*AciController) SubnetChanged ¶
func (cont *AciController) SubnetChanged(obj apicapi.ApicObject, aciVrfDn string)
func (*AciController) SubnetDeleted ¶
func (cont *AciController) SubnetDeleted(dn string)
func (*AciController) UpdateLLDPIfHook ¶
func (cont *AciController) UpdateLLDPIfHook(obj apicapi.ApicObject) bool
func (*AciController) UpdateLLDPIfLocked ¶
func (cont *AciController) UpdateLLDPIfLocked(dn, lldpIf string) bool
func (*AciController) UpdateSubnetDnCache ¶
func (cont *AciController) UpdateSubnetDnCache(subnetDn, subnetIp, aciVrfDn string)
func (*AciController) UpdateSubnetDnCacheForDn ¶
func (cont *AciController) UpdateSubnetDnCacheForDn(subnetDn, subnetIp string)
type AciResources ¶
type AciResources struct {
Deployment *appsv1.Deployment
HostDaemonset *appsv1.DaemonSet
OvsDaemonset *appsv1.DaemonSet
}
AciResources is a struct for handeling the resources of aci fabric
type AdditionalNetworkMeta ¶
type ContPodSelector ¶
type ContPortRange ¶
type ContSnatPolicy ¶
type ContSnatPolicy struct {
SnatIp []string
Selector ContPodSelector
PortRange []ContPortRange
Protocols []string
ExpandedSnatIps []string
ExpandedSnatPorts []snatglobalinfo.PortRange
}
type Controller ¶
type Controller struct {
Logger *log.Entry
Operator_Clientset operatorclientset.Interface
AccProvisionInput_Clientset accprovisioninputclientset.Interface
K8s_Clientset kubernetes.Interface
Operator_Queue workqueue.RateLimitingInterface
Deployment_Queue workqueue.RateLimitingInterface
Daemonset_Queue workqueue.RateLimitingInterface
Node_Queue workqueue.RateLimitingInterface
Route_Queue workqueue.RateLimitingInterface
Config_Map_Queue workqueue.RateLimitingInterface
Informer_Operator cache.SharedIndexInformer
Informer_Deployment cache.SharedIndexInformer
Informer_Daemonset cache.SharedIndexInformer
Informer_Node cache.SharedIndexInformer
Informer_Route cache.SharedIndexInformer
Informer_Config cache.SharedIndexInformer
Resources AciResources
DnsOperatorClient client.Client // This client is specific dnsopenshift operator
RoutesClient routesClientset.Interface // This client is specific routes openshift operator
Openshiftflavor bool
// contains filtered or unexported fields
}
func NewAciContainersOperator ¶
func NewAciContainersOperator( acicnioperatorclient operatorclientset.Interface, accprovisioninputclient accprovisioninputclientset.Interface, k8sclient kubernetes.Interface) *Controller
func (*Controller) CheckOwnerReference ¶
func (c *Controller) CheckOwnerReference(reference []metav1.OwnerReference) bool
func (*Controller) CreateAccProvisionInputCR ¶
func (c *Controller) CreateAccProvisionInputCR() error
func (*Controller) CreateAccProvisionInputObj ¶
func (c *Controller) CreateAccProvisionInputObj() *accprovisioninput.AccProvisionInput
func (*Controller) CreateAciContainersOperatorCR ¶
func (c *Controller) CreateAciContainersOperatorCR() error
func (*Controller) CreateAciContainersOperatorObj ¶
func (c *Controller) CreateAciContainersOperatorObj() *operators.AciContainersOperator
func (*Controller) GetAccProvisionInputCR ¶
func (c *Controller) GetAccProvisionInputCR() (*accprovisioninput.AccProvisionInput, error)
func (*Controller) GetAciContainersOperatorCR ¶
func (c *Controller) GetAciContainersOperatorCR() (*operators.AciContainersOperator, error)
func (*Controller) ReadConfigMap ¶
func (c *Controller) ReadConfigMap(field string) ([]byte, error)
func (*Controller) Run ¶
func (c *Controller) Run(stopCh <-chan struct{})
func (*Controller) UpdateDeploymentOwnerReference ¶
func (c *Controller) UpdateDeploymentOwnerReference(acicontainersoperator *operators.AciContainersOperator) bool
func (*Controller) UpdateHostDaemonsetOwnerReference ¶
func (c *Controller) UpdateHostDaemonsetOwnerReference(acicontainersoperator *operators.AciContainersOperator) bool
func (*Controller) UpdateOvsDaemonsetOwnerReference ¶
func (c *Controller) UpdateOvsDaemonsetOwnerReference(acicontainersoperator *operators.AciContainersOperator) bool
func (*Controller) WriteConfigMap ¶
func (c *Controller) WriteConfigMap(field string, data *corev1.ConfigMap) error
type ControllerConfig ¶
type ControllerConfig struct {
// Log level
LogLevel string `json:"log-level,omitempty"`
// Absolute path to a kubeconfig file
KubeConfig string `json:"kubeconfig,omitempty"`
// TCP port to run status server on (or 0 to disable)
StatusPort int `json:"status-port,omitempty"`
// Default endpoint group annotation value
DefaultEg OpflexGroup `json:"default-endpoint-group,omitempty"`
// Default security group annotation value
DefaultSg []OpflexGroup `json:"default-security-group,omitempty"`
// Override default endpoint group assignments for a namespace
// map ns name -> group
NamespaceDefaultEg map[string]OpflexGroup `json:"namespace-default-endpoint-group,omitempty"`
// Override default security group assignments for namespaces
// map ns name -> slice of groups
NamespaceDefaultSg map[string][]OpflexGroup `json:"namespace-default-security-group,omitempty"`
// The hostnames or IPs for connecting to apic
ApicHosts []string `json:"apic-hosts,omitempty"`
// The username for connecting to APIC
ApicUsername string `json:"apic-username,omitempty"`
// The password for connecting to APIC
ApicPassword string `json:"apic-password,omitempty"`
// The number of seconds that APIC should wait before timing
// out a subscription on a websocket connection. If not
// explicitly set, then a default of 1800 seconds will
// be sent in websocket subscriptions. If it is set to 0,
// then a timeout will not be sent in websocket
// subscriptions, and APIC will use it's default timeout
// of 80 seconds. If set to a non-zero value, then the
// timeout value will be provided when we subscribe to
// a URL on APIC. NOTE: the subscription timeout is not
// supported by APIC versions before 3.2(3), so this
// value must not be set when used with APIC versions
// older than that release.
// Also, note that this is a string.
ApicRefreshTimer string `json:"apic-refreshtime,omitempty"`
// Interval in seconds between periodic check for a leaf reboot
// Will be defaulted to 900s.
LeafRebootCheckInterval int `json:"leaf-reboot-check-interval,omitempty"`
// Delay in milliseconds after each subscription query
// Will be defaulted to 100ms.
ApicSubscriptionDelay int `json:"apic-subscription-delay,omitempty"`
// How early (seconds) the subscriptions to be refreshed than
// actual subscription refresh-timeout. Will be defaulted to 150Seconds.
ApicRefreshTickerAdjust string `json:"apic-refreshticker-adjust,omitempty"`
// A path for a PEM-encoded private key for client certificate
// authentication for APIC API
ApicPrivateKeyPath string `json:"apic-private-key-path,omitempty"`
// A path for a PEM-encoded public certificate for APIC server to
// enable secure TLS server verifification
ApicCertPath string `json:"apic-cert-path,omitempty"`
// The type of the ACI VMM domain: either "kubernetes",
// "openshift"
AciVmmDomainType string `json:"aci-vmm-type,omitempty"`
// The name of the ACI VMM domain
AciVmmDomain string `json:"aci-vmm-domain,omitempty"`
// The name of the ACI VMM domain controller instance
AciVmmController string `json:"aci-vmm-controller,omitempty"`
// Name prefix to use when creating policy to avoid namespace
// collisions
AciPrefix string `json:"aci-prefix,omitempty"`
// Tenant to use when creating policy objects in APIC
AciPolicyTenant string `json:"aci-policy-tenant,omitempty"`
// Physical domain used for service device clusters
AciServicePhysDom string `json:"aci-service-phys-dom,omitempty"`
// Encap used for service device clusters
AciServiceEncap string `json:"aci-service-encap,omitempty"`
// Time in seconds between service node ICMP probes for more
// quickly removing failed nodes from service pools
// 0 (default) means don't monitor
AciServiceMonitorInterval int `json:"aci-service-monitor-interval,omitempty"`
// Whether to enable PBR tracking for non-SNAT services
// when AciServiceMonitorInterval is set to non-zero, PBR tracking
// is enabled for snat
AciPbrTrackingNonSnat bool `json:"aci-pbr-tracking-non-snat,omitempty"`
// By default, the Resilient Hashing Enabled field of vnsSvcRedirectPol is
// set to "yes". If DisableResilientHashing is true, it will be set to "no"
DisableResilientHashing bool `json:"disable-resilient-hashing,omitempty"`
// To ignore the opflexODev which belongs to different vmmDomain
FilterOpflexDevice bool `json:"filter-opflex-device,omitempty"`
// The tenants related to AciVrf where BDs/EPGs/Subnets could exist.
// Usually AciVrfTenant and AciPolicyTenant
AciVrfRelatedTenants []string `json:"aci-vrf-related-tenants,omitempty"`
// ACI Pod-BD for this kubernetes instance
AciPodBdDn string `json:"aci-podbd-dn,omitempty"`
// ACI Node-BD for this kubernetes instance
AciNodeBdDn string `json:"aci-nodebd-dn,omitempty"`
// ACI VRF for this kubernetes instance
AciVrf string `json:"aci-vrf,omitempty"`
// ACI VRF for this kubernetes instance
AciVrfDn string `json:"aci-vrf-dn,omitempty"`
// Tenant containing the ACI VRF for this kubernetes instance
AciVrfTenant string `json:"aci-vrf-tenant,omitempty"`
// L3 out to use for services, service device clusters need to be
// created in this tenant
AciL3Out string `json:"aci-l3out,omitempty"`
// L3 external networks (within the l3out) that will be able to
// access the service IPs
AciExtNetworks []string `json:"aci-ext-networks,omitempty"`
// IP addresses used for pod network
PodIpPool []ipam.IpRange `json:"pod-ip-pool,omitempty"`
// The number of IP addresses to allocate when a pod starts to run low
PodIpPoolChunkSize int `json:"pod-subnet-chunk-size,omitempty"`
// Pod subnet CIDRs in the form <gateway-address>/<prefix-length> that
// cover all pod-ip-pools
PodSubnet []string `json:"pod-subnet,omitempty"`
// Whether to allocate service IPs or to assume they will be
// allocated by another controller
AllocateServiceIps *bool `json:"allocate-service-ips,omitempty"`
// IP addresses used for externally exposed load balanced services
ServiceIpPool []ipam.IpRange `json:"service-ip-pool,omitempty"`
// IP addresses that can be requested as static service IPs in
// service spec
StaticServiceIpPool []ipam.IpRange `json:"static-service-ip-pool,omitempty"`
// IP addresses to use for node service endpoints
NodeServiceIpPool []ipam.IpRange `json:"node-service-ip-pool,omitempty"`
// a list of subnet/gateway CIDR addresses that cover the
// addresses in the node service IP pool
NodeServiceSubnets []string `json:"node-service-subnets,omitempty"`
// default port range to use for SNAT svc graph filter
SnatDefaultPortRangeStart int `json:"snat-default-port-range-start,omitempty"`
SnatDefaultPortRangeEnd int `json:"snat-default-port-range-end,omitempty"`
// Contract scope used for SNAT svc graph
SnatSvcContractScope string `json:"snat-contract-scope,omitempty"`
// Maximum number of nodes permitted in a svc graph
MaxSvcGraphNodes int `json:"max-nodes-svc-graph,omitempty"`
// Disable routine to sync snatglobalinfo with nodeinfo
// periodically
DisablePeriodicSnatGlobalInfoSync bool `json:"disable-periodic-snat-global-info-sync,omitempty"`
// True when we dont want to wait for service ep to be ready
// before adding it to service graph
// Default is false
NoWaitForServiceEpReadiness bool `json:"no-wait-for-service-ep-readiness,omitempty"`
ServiceGraphEndpointAddDelay serviceGraphEpAddDelay `json:"service-graph-endpoint-add-delay,omitempty"`
// True when to add extern_dynamic and extern_static subnets to rdconfig
// Default is false
AddExternalSubnetsToRdconfig bool `json:"add-external-subnets-to-rdconfig,omitempty"`
ExternStatic []string `json:"extern-static,omitempty"`
ExternDynamic []string `json:"extern-dynamic,omitempty"`
// Default is false
HppOptimization bool `json:"hpp-optimization,omitempty"`
// Default is false
AciMultipod bool `json:"aci-multipod,omitempty"`
// If true, enable opflex agent reconnect after vm migration
// Default is false
EnableOpflexAgentReconnect bool `json:"enable-opflex-agent-reconnect,omitempty"`
// Timeout in seconds to wait for reconnect when opflexOdev is diconnected for a node
// before triggering a dhcp release and renew of vlan interface
// Applicable only for multipod case
// default is 5s
OpflexDeviceReconnectWaitTimeout int `json:"opflex-device-reconnect-wait-timeout,omitempty"`
// Install Istio ControlPlane components
InstallIstio bool `json:"install-istio,omitempty"`
// enable EndpointSlice
EnabledEndpointSlice bool `json:"enable_endpointslice,omitempty"`
// Cluster Flavour
Flavor string `json:"flavor,omitempty"`
// Enable creation of VmmInjectedLabel, default is false
EnableVmmInjectedLabels bool `json:"enable-vmm-injected-labels,omitempty"`
// Timeout to delete old opflex devices
OpflexDeviceDeleteTimeout float64 `json:"opflex-device-delete-timeout,omitempty"`
// Configure sleep time for global SNAT sync
SleepTimeSnatGlobalInfoSync int `json:"sleep-time-snat-global-info-sync,omitempty"`
// Configure unkMacUcastAct attribute of service BD
// The forwarding method for unknown layer 2 destinations
UnknownMacUnicastAction string `json:"unknown-mac-unicast-action,omitempty"`
// To disable service vlan preprovisioning on OpenShift on OpenStack Clusters
// By default the feature will be enabled
DisableServiceVlanPreprovisioning bool `json:"disable-service-vlan-preprovisioning"`
// PhysDom for additional networks in chained mode
AciPhysDom string `json:"aci-phys-dom,omitempty"`
// L3Dom for additional networks in chained mode
AciL3Dom string `json:"aci-l3-dom,omitempty"`
// CNI is in chained mode
ChainedMode bool `json:"chained-mode,omitempty"`
// AEP for additional networks in chained mode
AciAdditionalAep string `json:"aci-additional-aep,omitempty"`
//User can provision Static Objects separately, so have a knob
ReconcileStaticObjects bool `json:"reconcileStaticObjects,omitempty"`
//In chained mode, global l2 port policy has been configured, so enable shared vlan pool
AciUseGlobalScopeVlan bool `json:"aci-use-global-scope-vlan,omitempty"`
//In chained mode, use system-id for auto-generated names
AciUseSystemIdForSecondaryNames bool `json:"aci-use-system-id-for-secondary-names,omitempty"`
// Metrics
EnableMetrics bool `json:"enable-metrics,omitempty"`
MetricsPort int `json:"metrics-port,omitempty"`
// Labels to filter nodes from SNAT redirect policy
NodeSnatRedirectExclude []NodeSnatRedirectExclude `json:"node-snat-redirect-exclude,omitempty"`
AEP string `json:"aep,omitempty"`
// Application Profile
AppProfile string `json:"app-profile,omitempty"`
// Add external contract to default epg (contract is created for LoadBalancer Service type), default is false
AddExternalContractToDefaultEPG bool `json:"add-external-contract-to-default-epg,omitempty"`
// Number of times the connection to APIC should be retried before switching to another APIC
ApicConnectionRetryLimit int `json:"apic-connection-retry-limit,omitempty"`
// Timeout in minutes to wait in between retries before sending request to APIC
ApicRequestRetryDelay int `json:"apic-request-retry-delay,omitempty"`
// Enable retying request to APIC when a 503 error is encountered
EnableApicRequestRetry bool `json:"enable-apic-request-retry-delay,omitempty"`
// Disable hpp rendering if set to true
DisableHppRendering bool `json:"disable-hpp-rendering,omitempty"`
// Enable/disable making node unschedulable when it's not ready
TaintNotReadyNode bool `json:"taint-not-ready-node,omitempty"`
// Enable/disable local hpp distribution
EnableHppDirect bool `json:"enable-hpp-direct,omitempty"`
// Enable/disable proactive conf
ProactiveConf bool `json:"proactive-conf,omitempty"`
// Enable/disable aaep monitoring for vmm lite feature
VmmLite bool `json:"aci-aaep-monitoring-enabled,omitempty"`
// Name of linux-bridge for NAD creation in vmm lite feature
BridgeName string `json:"bridge-name,omitempty"`
// Optional fields for linux-bridge NAD creation in vmm lite feature
IsGateway *bool `json:"isGateway,omitempty"`
IsDefaultGateway *bool `json:"isDefaultGateway,omitempty"`
ForceAddress *bool `json:"forceAddress,omitempty"`
IpMasq *bool `json:"ipMasq,omitempty"`
IpMasqBackend string `json:"ipMasqBackend,omitempty"`
Mtu *int `json:"mtu,omitempty"`
HairpinMode *bool `json:"hairpinMode,omitempty"`
PromiscMode *bool `json:"promiscMode,omitempty"`
Enabledad *bool `json:"enabledad,omitempty"`
Macspoofchk *bool `json:"macspoofchk,omitempty"`
DisableContainerInterface *bool `json:"disableContainerInterface,omitempty"`
PortIsolation *bool `json:"portIsolation,omitempty"`
Ipam map[string]interface{} `json:"ipam,omitempty"`
// Prefix for EPG annotation to identify CNO, default is "cno"
CnoIdentifier string `json:"cno-identifier,omitempty"`
KubeapiVlan int `json:"kubeapi-vlan,omitempty"`
}
Configuration for the controller
func NewConfig ¶
func NewConfig() *ControllerConfig
type DelayedEpSlice ¶
type DelayedEpSlice struct {
ServiceKey string
OldEpSlice *discovery.EndpointSlice
NewEpSlice *discovery.EndpointSlice
DelayedTime time.Time
}
type EndPointData ¶
EndPointData holds PodIF data in controller.
type Environment ¶
type Environment interface {
Init(agent *AciController) error
PrepareRun(stopCh <-chan struct{}) error
InitStaticAciObjects()
NodePodNetworkChanged(nodeName string)
NodeAnnotationChanged(nodeName string)
NodeServiceChanged(nodeName string)
VmmPolicy() string
OpFlexDeviceType() string
ServiceBd() string
RESTConfig() *restclient.Config
}
type EpgVlanMap ¶
type EpgVlanMap struct {
// contains filtered or unexported fields
}
type EventPoster ¶
type EventPoster struct {
// contains filtered or unexported fields
}
type K8sEnvironment ¶
type K8sEnvironment struct {
// contains filtered or unexported fields
}
func NewK8sEnvironment ¶
func NewK8sEnvironment(config *ControllerConfig, log *logrus.Logger) (*K8sEnvironment, error)
func (*K8sEnvironment) Init ¶
func (env *K8sEnvironment) Init(cont *AciController) error
func (*K8sEnvironment) InitStaticAciObjects ¶
func (env *K8sEnvironment) InitStaticAciObjects()
func (*K8sEnvironment) NodeAnnotationChanged ¶
func (env *K8sEnvironment) NodeAnnotationChanged(nodeName string)
func (*K8sEnvironment) NodePodNetworkChanged ¶
func (env *K8sEnvironment) NodePodNetworkChanged(nodeName string)
func (*K8sEnvironment) NodeServiceChanged ¶
func (env *K8sEnvironment) NodeServiceChanged(nodeName string)
func (*K8sEnvironment) OpFlexDeviceType ¶
func (env *K8sEnvironment) OpFlexDeviceType() string
func (*K8sEnvironment) PrepareRun ¶
func (env *K8sEnvironment) PrepareRun(stopCh <-chan struct{}) error
func (*K8sEnvironment) RESTConfig ¶
func (env *K8sEnvironment) RESTConfig() *restclient.Config
func (*K8sEnvironment) ServiceBd ¶
func (env *K8sEnvironment) ServiceBd() string
func (*K8sEnvironment) VmmPolicy ¶
func (env *K8sEnvironment) VmmPolicy() string
type NfL3Data ¶
type NfL3Data struct {
Tenant string
Vrf fabattv1.VRF
PodId int
ConnectedNw *NfL3Networks
NetAddr map[string]*RoutedNetworkData
Nodes map[int]fabattv1.FabricL3OutNode
}
type NfL3Networks ¶
type NfL3Networks struct {
fabattv1.PrimaryNetwork
Subnets map[string]*fabattv1.FabricL3Subnet
}
type NfL3OutData ¶
type NfL3OutData struct {
// +kubebuilder:validation:Enum:"import"
RtCtrl string
PodId int
RtrNodeMap map[int]*fabattv1.FabricL3OutRtrNode
ExtEpgMap map[string]*fabattv1.PolicyPrefixGroup
SviMap map[int]bool
}
type NfLLDPIfData ¶
type NfTenantData ¶
type NfTenantData struct {
CommonTenant bool
L3OutConfig map[string]*NfL3OutData
BGPPeerPfxConfig map[string]*fabattv1.BGPPeerPrefixPolicy
}
type NfVrfData ¶
type NfVrfData struct {
TenantConfig map[string]*NfTenantData
}
type NodeSnatRedirectExclude ¶
type OpflexGroup ¶
type RoutedNetworkData ¶
type RoutedNetworkData struct {
// contains filtered or unexported fields
}
type RoutedNodeData ¶
type RoutedNodeData struct {
// contains filtered or unexported fields
}
type ServiceEndPointType ¶
type ServiceEndPointType interface {
InitClientInformer(kubeClient *kubernetes.Clientset)
Run(stopCh <-chan struct{})
Wait(stopCh <-chan struct{})
UpdateServicesForNode(nodename string)
GetnodesMetadata(key string, service *v1.Service, nodeMap map[string]*metadata.ServiceEndpoint)
SetServiceApicObject(aobj apicapi.ApicObject, service *v1.Service) bool
SetNpServiceAugmentForService(servicekey string, service *v1.Service, prs *portRemoteSubnet,
portAugments map[string]*portServiceAugment, subnetIndex cidranger.Ranger, logger *logrus.Entry)
}
type SviContext ¶
type SviContext struct {
// contains filtered or unexported fields
}
type VersionInfo ¶
Info enlists version and build information
Source Files
¶
- aaepmonitor.go
- acicontainersoperator.go
- config.go
- controller.go
- crds.go
- deployments.go
- environment.go
- epgcache.go
- erspan.go
- event_poster.go
- fabricvlanpools.go
- nadvlanmap.go
- namespaces.go
- netflow.go
- network_policy.go
- networkfabricconfigurations.go
- networkfabricl3configurations.go
- nodefabricnetworkattachments.go
- nodefabricnetworkl3peers.go
- nodepodif.go
- nodes.go
- pods.go
- proactiveconf.go
- qos.go
- rdconfig.go
- replicasets.go
- services.go
- snatglobalinfo.go
- snats.go
- status.go
- subnetcache.go
- version.go
Click to show internal directories.
Click to hide internal directories.