F5BigCnePool

F5BigCnePool is a namespaced Custom Resource in the k8s.f5net.com API group. It represents a Network Function (NF) pool: a list of NF endpoints (members) plus optional health monitors.

CR Parameters

metadata

Parameter Type Description
name string Unique name of the custom resource.
namespace string Namespace where the resource is created (because the CRD is namespaced).

spec

spec defines pool behavior and membership.

Parameter Type Description Default
tenant string Tenant to which this pool belongs. ""
namespace string Namespace where the pool is created. ""
minActiveMembers integer Minimum number of members that must be available for a priority group to activate. Minimum 0, maximum 65535. 0
vrf string The name of the VRF (tenant) all pool members are in. It is a soft-reference to a VRF CR. If not specified, the pool members will exist in the default route domain. Maximum length 255. ""
members array(object) List of server endpoints in this pool. Each item requires address and port. []
members.address string IPv4 or IPv6 address of this server endpoint. Max length 46, min length 7. Must match one of the IPv4/IPv6 patterns (no prefix).
members.port integer Port for the monitor to check. Minimum 0, maximum 65535.
members.priorityGroup integer Priority group assignment for this pool member. Higher priority groups are used first. Minimum 0, maximum 8. 0
dynamicMembers array(object) Specifies a list of kubernetes services containing endpoints. Any endpoints associated with the specified services will be dynamically added to this pool as members, once for each target port in the service. []
dynamicMembers.serviceNamespace string The namespace of the kubernetes service from which to discover endpoints dynamically. If this field is empty, it defaults to the same namespace as the pool. If the referenced service is in a different namespace than the pool, it MUST be given the annotation "k8s.f5.com/allow-cross-namespace-refs"="true". ""
dynamicMembers.serviceName string The name of the kubernetes service from which to discover endpoints dynamically.
monitors object Monitor configuration for checking pool members at a set interval. {}
monitors.http2 array(object) HTTP/2 monitor configurations. []
monitors.http2.interval integer Frequency (seconds) when resource is down/unknown. Format int32. Minimum 0, maximum 4294967295. 5
monitors.http2.timeout integer Seconds target has to respond. Must be ≤ interval (documented). Minimum 0, maximum 4294967295. 16
monitors.http2.upInterval integer Frequency (seconds) when resource is up. 0 means disabled (use interval). Minimum 0, maximum 4294967295. 0
monitors.http2.timeUntilUp integer Seconds after first successful response before node is marked up. Minimum 0, maximum 4294967295. 0
monitors.http2.sendString string String sent to the target. Maximum length 64000. "GET / HTTP/1.1"
monitors.http2.receiveString string Regex indicating target is up. Maximum length 64000. '200'
monitors.http2.receiveDisableString string Regex indicating target should be disabled. Maximum length 64000. ''
monitors.http2.serversslProfileName string Server-side SSL profile used by the HTTP/2 monitor. Maximum length 255. ''
monitors.http2.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
monitors.http2.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
monitors.http array(object) HTTP monitor configurations. []
monitors.http.interval integer Frequency (seconds) when resource is down/unknown. Format int64. Minimum 0, maximum 4294967295. 5
monitors.http.timeout integer Seconds target has to respond. Minimum 0, maximum 4294967295. 16
monitors.http.sendString string String sent to the target. Maximum length 64000. "GET / HTTP/1.0\r\n\r\n"
monitors.http.receiveString string Regex indicating target is up. Maximum length 64000. '200'
monitors.http.receiveDisableString string Regex indicating target should be disabled. Maximum length 64000. ''
monitors.http.username string Username for authenticating to the target. Maximum length 255. ''
monitors.http.password string Password for authenticating to the target. Maximum length 255. ''
monitors.http.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
monitors.http.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
monitors.https array(object) HTTPS monitor configurations. []
monitors.https.interval integer Frequency (seconds) when resource is down/unknown. Format int32. Minimum 0, maximum 4294967295. 5
monitors.https.timeout integer Seconds target has to respond. Must be ≤ interval (documented). Minimum 0, maximum 4294967295. 16
monitors.https.sendString string String sent to the target. Maximum length 64000. "GET / HTTP/1.1\r\n\r\n"
monitors.https.receiveString string Regex indicating target is up. Maximum length 64000. '200'
monitors.https.receiveDisableString string Regex indicating target should be disabled. Maximum length 64000. ''
monitors.https.username string Username for authenticating to the target. Maximum length 255. ''
monitors.https.password string Password for authenticating to the target. Maximum length 255. ''
monitors.https.serversslProfileName string Server-side SSL profile used by the HTTPS monitor. Maximum length 255. ''
monitors.https.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
monitors.https.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
monitors.icmp array(object) ICMP monitor configurations. []
monitors.icmp.interval integer Frequency (seconds) when resource is down/unknown. Format int32. Minimum 0, maximum 4294967295. 5
monitors.icmp.timeout integer Seconds target has to respond. Must be ≤ interval (documented). Minimum 0, maximum 4294967295. 16
monitors.icmp.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
monitors.icmp.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
monitors.tcp array(object) TCP monitor configurations. []
monitors.tcp.interval integer Frequency (seconds) when resource is down/unknown. Format int32. Minimum 0, maximum 4294967295. 5
monitors.tcp.timeout integer Seconds target has to respond. Must be ≤ interval (documented). Minimum 0, maximum 4294967295. 16
monitors.tcp.sendString string String sent to the target. Maximum length 64000. ''
monitors.tcp.receiveString string Regex indicating target is up. Maximum length 64000. ''
monitors.tcp.receiveDisableString string Regex indicating target should be disabled. Maximum length 64000. ''
monitors.tcp.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
monitors.tcp.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
monitors.dns array(object) DNS monitor configurations. []
monitors.dns.interval integer Frequency (seconds) when resource is down/unknown. Minimum 0, maximum 4294967295. 5
monitors.dns.timeout integer Seconds target has to respond. Must be ≤ interval (documented). Minimum 0, maximum 4294967295. 16
monitors.dns.upInterval integer Frequency (seconds) when resource is up. 0 means disabled (use interval). Minimum 0, maximum 4294967295. 0
monitors.dns.timeUntilUp integer Seconds after first successful response before node is marked up. Minimum 0, maximum 4294967295. 0
monitors.dns.aliasAddress string Destination IP of the monitor. IPv4/IPv6 (no prefix). Minimum length 2, maximum length 39. "::"
monitors.dns.aliasPort integer Destination port of the monitor. Minimum 0, maximum 65535. 0
monitors.dns.reverse boolean Reverse mode: successful receive match marks object down instead of up. false
monitors.dns.recursionDesired boolean Sets the RD flag in query packets (required for monitoring recursive DNS servers). false
monitors.dns.queryName string Domain name to query. Maximum length 255.
monitors.dns.queryType string DNS query type. Enum: a, aaaa. a
monitors.dns.answerContains string Record types required in the answer section to mark up. Enum: query-type, any-type, anything. query-type
monitors.dns.acceptRcode string RCODE required in the response for an up status. Enum: no-error, anything. no-error
monitors.dns.recvAddress string Address the monitor looks for in DNS response RR sections. OneOf: empty/IPv4/IPv6. Minimum length 2, maximum length 39. "::"
monitors.inband array(object) Passive monitoring based on actual traffic. []
monitors.inband.failures integer Number of failed attempts before marking a pool member down. Minimum 0, maximum 4294967295. 5
monitors.inband.failureInterval integer Interval (seconds) in which failures are counted. Minimum 0, maximum 4294967295. 30
monitors.inband.responseTime integer Interval (seconds) in which a pool member must respond with data. Minimum 0, maximum 4294967295. 10
monitors.inband.retryTime integer Wait time (seconds) before retrying whether a pool member is up. Minimum 0, maximum 4294967295. 300
monitors.tcpHalfOpen array(object) TCP half-open monitor configurations. []
monitors.tcpHalfOpen.interval integer Frequency (seconds) when resource is down/unknown. Format int64. Minimum 0, maximum 4294967295. 5
monitors.tcpHalfOpen.timeout integer Seconds target has to respond. Minimum 0, maximum 4294967295. 16
monitors.tcpHalfOpen.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
monitors.tcpHalfOpen.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
udp array(object) UDP monitor configurations. []
udp.interval Integer Time in seconds between each health check. 5
udp.timeout Integer Time in seconds to wait for a response before marking the member as unavailable. 16
udp.sendString String The string to send to the pool member. —
udp.receiveString String The expected response string. If the response contains this value, the member is marked as available. —
udp.receiveDisableString String If the response matches this value, the member is marked as disabled rather than unavailable. ""
udp.destinationAddress string The IP address of the resource to probe instead of the pool member's own address. "::"
udp.destinationPort integer The port of the resource to probe instead of the pool member's own port. The default 0 means no override. 0
sip array(object) Specifies the SIP monitors to monitor the health of the SIP service of your server pools. []
sip.mode string Transport mode for the SIP monitor. Example: mr-udp udp
sip.interval integer Time in seconds between health checks 5
sip.upInterval integer Time in seconds between checks after a member comes back up 0
sip.timeUntilUp integer Seconds a member must be up before it is marked available 0
sip.timeout integer The number of seconds the target has to respond to the monitor request 0
sip.downCount integer Number of consecutive failed health checks before marking the member as down. A value of 1 causes a node to be marked down immediately after a failed health check. 3
sip.upCount integer Number of consecutive successful health checks before marking the member as up. A value of 1 causes a node to be marked up immediately after a successful health check. 1
sip.request string SIP request line to send. Example: "OPTIONS sip:healthcheck@example.com SIP/2.0" ""
sip.headers string SIP headers to include in the monitor request (multi-line string) ""
sip.filter string Response filter type. Example: status ""
sip.filterNeg string Negative response filter ""

CR Example

apiVersion: k8s.f5net.com/v1
kind: F5BigCnePool
metadata:
  name: example-nf-pool
  namespace: "cnf-gateway"
spec:
  minActiveMembers: 1
  members:
  - address: "192.0.2.10"
    port: 8080
    priorityGroup: 1
  - address: "2001:db8::10"
    port: 8080
    priorityGroup: 0
  monitors:
    http:
    - interval: 5
      timeout: 16
      sendString: "GET /health HTTP/1.0\r\n\r\n"
      receiveString: "200"