Documentation
¶
Overview ¶
Package node provides functionality related to the local and remote node addresses
Index ¶
- Variables
- func AutoComplete() error
- func ExtractCiliumHostIPFromFS() (ipv4GW, ipv6Router net.IP)
- func GetBootID() string
- func GetCiliumEndpointNodeIP() string
- func GetEndpointEncryptKeyIndex() uint8
- func GetEndpointHealthIPv4() net.IP
- func GetEndpointHealthIPv6() net.IP
- func GetEndpointID() uint64
- func GetExcludedIPs() []net.IP
- func GetHostMasqueradeIPv4() net.IP
- func GetHostMasqueradeIPv6() net.IP
- func GetIPv4() net.IP
- func GetIPv4AllocRange() *cidr.CIDR
- func GetIPv4Loopback() net.IP
- func GetIPv6() net.IP
- func GetIPv6AllocRange() *cidr.CIDR
- func GetIPv6Router() net.IP
- func GetIngressIPv4() net.IP
- func GetIngressIPv6() net.IP
- func GetInternalIPv4() net.IP
- func GetInternalIPv4Router() net.IP
- func GetInternalIPv6() net.IP
- func GetK8sExternalIPv4() net.IP
- func GetK8sExternalIPv6() net.IP
- func GetK8sNodeIP() net.IP
- func GetNodeAddressing() *models.NodeAddressing
- func GetOptOutNodeEncryption() bool
- func GetWireguardPubKey() string
- func InitDefaultPrefix(device string)
- func SetDefaultPrefix(cfg *option.DaemonConfig, device string, node *LocalNode)
- func SetEndpointHealthIPv4(ip net.IP)
- func SetEndpointHealthIPv6(ip net.IP)
- func SetEndpointID(id uint64)
- func SetIPsecKeyIdentity(id uint8)
- func SetIPv4AllocRange(net *cidr.CIDR)
- func SetIPv4Loopback(ip net.IP)
- func SetIPv6NodeRange(net *cidr.CIDR)
- func SetIPv6Router(ip net.IP)
- func SetIngressIPv4(ip net.IP)
- func SetIngressIPv6(ip net.IP)
- func SetInternalIPv4Router(ip net.IP)
- func SetRouterInfo(info RouterInfo)
- func SetTestLocalNodeStore()
- func UnsetTestLocalNodeStore()
- func UpdateLocalNodeInTest(mod func(n *LocalNode))
- func ValidatePostInit() error
- func WithTestLocalNodeStore(runTest func())
- type LocalNode
- type LocalNodeStore
- type LocalNodeStoreParams
- type LocalNodeSynchronizer
- type RouterInfo
Constants ¶
This section is empty.
Variables ¶
var LocalNodeStoreCell = cell.Module( "local-node-store", "Provides LocalNodeStore for observing and updating local node info", cell.Provide(NewLocalNodeStore), )
LocalNodeStoreCell provides the LocalNodeStore instance. The LocalNodeStore is the canonical owner of `types.Node` for the local node and provides a reactive API for observing and updating it.
Functions ¶
func AutoComplete ¶ added in v0.15.7
func AutoComplete() error
AutoComplete completes the parts of addressing that can be auto derived
func ExtractCiliumHostIPFromFS ¶ added in v1.15.0
ExtractCiliumHostIPFromFS returns the Cilium IPv4 gateway and router IPv6 address from the node_config.h file if is present; or by deriving it from defaults.HostDevice interface, on which only the IPv4 is possible to derive.
func GetCiliumEndpointNodeIP ¶ added in v0.15.7
func GetCiliumEndpointNodeIP() string
GetCiliumEndpointNodeIP is the node IP that will be referenced by CiliumEndpoints with endpoints running on this node.
func GetEndpointEncryptKeyIndex ¶ added in v1.14.7
func GetEndpointEncryptKeyIndex() uint8
GetEndpointEncryptKeyIndex returns the encryption key value for an endpoint owned by the local node. With IPSec encryption, this is the ID of the currently loaded key. With WireGuard, this returns a non-zero static value. Note that the key index returned by this function is only valid for _endpoints_ of the local node. If you want to obtain the key index of the local node itself, access the `EncryptionKey` field via the LocalNodeStore.
func GetEndpointHealthIPv4 ¶ added in v0.15.7
GetEndpointHealthIPv4 returns the IPv4 cilium-health endpoint address.
func GetEndpointHealthIPv6 ¶ added in v0.15.7
GetEndpointHealthIPv6 returns the IPv6 cilium-health endpoint address.
func GetEndpointID ¶ added in v0.15.7
func GetEndpointID() uint64
GetEndpointID returns the ID of the host endpoint for this node.
func GetExcludedIPs ¶ added in v0.15.7
GetExcludedIPs returns a list of IPs from netdevices that Cilium needs to exclude to operate
func GetHostMasqueradeIPv4 ¶ added in v0.15.7
GetHostMasqueradeIPv4 returns the IPv4 address to be used for masquerading any traffic that is being forwarded from the host into the Cilium cluster.
func GetHostMasqueradeIPv6 ¶ added in v0.15.7
GetHostMasqueradeIPv6 returns the IPv6 address to be used for masquerading any traffic that is being forwarded from the host into the Cilium cluster.
func GetIPv4 ¶ added in v0.15.7
GetIPv4 returns one of the IPv4 node address available with the following priority: - NodeInternalIP - NodeExternalIP - other IP address type. It must be reachable on the network.
func GetIPv4AllocRange ¶ added in v0.15.7
GetIPv4AllocRange returns the IPv4 allocation prefix of this node
func GetIPv4Loopback ¶ added in v0.15.7
GetIPv4Loopback returns the loopback IPv4 address of this node.
func GetIPv6AllocRange ¶ added in v0.15.7
GetIPv6AllocRange returns the IPv6 allocation prefix of this node
func GetIPv6Router ¶ added in v0.15.7
GetIPv6Router returns the IPv6 address of the router, e.g. address of cilium_host device.
func GetIngressIPv4 ¶ added in v0.15.7
GetIngressIPv4 returns the local IPv4 source address for Cilium Ingress.
func GetIngressIPv6 ¶ added in v0.15.7
GetIngressIPv6 returns the local IPv6 source address for Cilium Ingress.
func GetInternalIPv4 ¶ added in v0.15.7
GetInternalIPv4 returns node internal ipv4 address else return nil.
func GetInternalIPv4Router ¶ added in v0.15.7
GetInternalIPv4Router returns the cilium internal IPv4 node address. This must not be conflated with k8s internal IP as this IP address is only relevant within the Cilium-managed network (this means within the node for direct routing mode and on the overlay for tunnel mode).
func GetInternalIPv6 ¶ added in v0.15.7
GetInternalIPv6 returns node internal ipv6 address else return nil.
func GetK8sExternalIPv4 ¶ added in v0.15.7
GetK8sExternalIPv4 returns the external IPv4 node address. It must be a public IP that is routable on the network as well as the internet. It can return nil if no External IPv4 address is assigned.
func GetK8sExternalIPv6 ¶ added in v0.15.7
GetK8sExternalIPv6 returns the external IPv6 node address.
func GetK8sNodeIP ¶ added in v0.15.7
GetK8sNodeIPs returns k8s Node IP addr.
func GetNodeAddressing ¶ added in v0.15.7
func GetNodeAddressing() *models.NodeAddressing
GetNodeAddressing returns the NodeAddressing model for the local IPs.
func GetOptOutNodeEncryption ¶ added in v0.15.7
func GetOptOutNodeEncryption() bool
func GetWireguardPubKey ¶ added in v0.15.7
func GetWireguardPubKey() string
func InitDefaultPrefix ¶ added in v0.15.7
func InitDefaultPrefix(device string)
InitDefaultPrefix initializes the node address and allocation prefixes with default values derived from the system. device can be set to the primary network device of the system in which case the first address with global scope will be regarded as the system's node address.
func SetDefaultPrefix ¶ added in v0.15.7
func SetDefaultPrefix(cfg *option.DaemonConfig, device string, node *LocalNode)
func SetEndpointHealthIPv4 ¶ added in v0.15.7
SetEndpointHealthIPv4 sets the IPv4 cilium-health endpoint address.
func SetEndpointHealthIPv6 ¶ added in v0.15.7
SetEndpointHealthIPv6 sets the IPv6 cilium-health endpoint address.
func SetEndpointID ¶ added in v0.15.7
func SetEndpointID(id uint64)
SetEndpointID sets the ID of the host endpoint this node.
func SetIPsecKeyIdentity ¶ added in v0.15.7
func SetIPsecKeyIdentity(id uint8)
SetIPsecKeyIdentity sets the IPsec key identity an opaque value used to identity encryption keys used on the node.
func SetIPv4AllocRange ¶ added in v0.15.7
SetIPv4AllocRange sets the IPv4 address pool to use when allocating addresses for local endpoints
func SetIPv4Loopback ¶ added in v0.15.7
SetIPv4Loopback sets the loopback IPv4 address of this node.
func SetIPv6NodeRange ¶ added in v0.15.7
SetIPv6NodeRange sets the IPv6 address pool to be used on this node
func SetIPv6Router ¶ added in v0.15.7
SetIPv6Router sets the IPv6 address of the router address, e.g. address of cilium_host device.
func SetIngressIPv4 ¶ added in v0.15.7
SetIngressIPv4 sets the local IPv4 source address for Cilium Ingress.
func SetIngressIPv6 ¶ added in v0.15.7
SetIngressIPv6 sets the local IPv6 source address for Cilium Ingress.
func SetInternalIPv4Router ¶ added in v0.15.7
SetInternalIPv4Router sets the cilium internal IPv4 node address, it is allocated from the node prefix. This must not be conflated with k8s internal IP as this IP address is only relevant within the Cilium-managed network (this means within the node for direct routing mode and on the overlay for tunnel mode).
func SetRouterInfo ¶ added in v0.15.7
func SetRouterInfo(info RouterInfo)
SetRouterInfo sets additional information for the router, the cilium_host interface.
func SetTestLocalNodeStore ¶ added in v0.15.7
func SetTestLocalNodeStore()
func UnsetTestLocalNodeStore ¶ added in v0.15.7
func UnsetTestLocalNodeStore()
func UpdateLocalNodeInTest ¶ added in v0.15.7
func UpdateLocalNodeInTest(mod func(n *LocalNode))
UpdateLocalNodeInTest provides access to modifying the local node information from tests that are not yet using hive and the LocalNodeStoreCell.
func ValidatePostInit ¶ added in v0.15.7
func ValidatePostInit() error
ValidatePostInit validates the entire addressing setup and completes it as required
func WithTestLocalNodeStore ¶ added in v0.15.7
func WithTestLocalNodeStore(runTest func())
WithTestLocalNodeStore sets the 'localNode' to a temporary instance and runs the given test. Afterwards the 'localNode' is restored to nil. This is a temporary workaround for tests until the LocalNodeStoreCell can be used.
Types ¶
type LocalNode ¶ added in v0.15.7
type LocalNode struct { types.Node // OptOutNodeEncryption will make the local node opt-out of node-to-node // encryption OptOutNodeEncryption bool // Unique identifier of the Kubernetes node, used to construct the // corresponding owner reference. UID k8stypes.UID // ID of the node assigned by the cloud provider. ProviderID string }
type LocalNodeStore ¶ added in v0.15.7
type LocalNodeStore struct { // Changes to the local node are observable. stream.Observable[LocalNode] // contains filtered or unexported fields }
LocalNodeStore is the canonical owner for the local node object and provides a reactive API for observing and updating the state.
func NewLocalNodeStore ¶ added in v0.15.7
func NewLocalNodeStore(params LocalNodeStoreParams) (*LocalNodeStore, error)
func NewTestLocalNodeStore ¶ added in v0.15.7
func NewTestLocalNodeStore(mockNode LocalNode) *LocalNodeStore
func (*LocalNodeStore) Get ¶ added in v0.15.7
func (s *LocalNodeStore) Get(ctx context.Context) (LocalNode, error)
Get retrieves the current local node. Use Get() only for inspecting the state, e.g. in API handlers. Do not assume the value does not change over time. Blocks until the store has been initialized.
func (*LocalNodeStore) Update ¶ added in v0.15.7
func (s *LocalNodeStore) Update(update func(*LocalNode))
Update modifies the local node with a mutator. The updated value is passed to observers. Calling LocalNodeStore.Get() from the mutation function is forbidden, and would result in a deadlock.
type LocalNodeStoreParams ¶ added in v0.15.7
type LocalNodeStoreParams struct { cell.In Lifecycle cell.Lifecycle Sync LocalNodeSynchronizer `optional:"true"` }
LocalNodeStoreParams are the inputs needed for constructing LocalNodeStore.
type LocalNodeSynchronizer ¶ added in v1.15.0
type LocalNodeSynchronizer interface { InitLocalNode(context.Context, *LocalNode) error SyncLocalNode(context.Context, *LocalNodeStore) }
LocalNodeSynchronizer specifies how to build, and keep synchronized the local node object.
type RouterInfo ¶ added in v0.15.7
func GetRouterInfo ¶ added in v0.15.7
func GetRouterInfo() RouterInfo
GetRouterInfo returns additional information for the router, the cilium_host interface.