F5BigCnePool¶
Overview¶
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 |
|---|---|---|---|
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.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.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.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.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 |
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"