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"