F5GenericMsgSetting

F5GenericMsgSetting is a Custom Resource Definition (CRD) in the k8s.f5net.com API group. It exposes a namespaced custom resource that configures generic message routing and protocol/parser behavior.

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

The spec section defines routing behavior, retry/pending limits, iRule scoping, and protocol/parser settings.

Parameter Type Description Default
ignoreClientPort boolean If true, the system ignores the remote port on client-side connections when searching for an existing connection. false
maxPendingBytes integer Max bytes of messages held pending while waiting for a connection to a peer. If iruleScopeMessage=true, also limits bytes for messages concurrently processing iRule events. 0 disables the limit. Min 0, max 4294967295. 32768
maxPendingMessages integer Max count of messages held pending while waiting for a connection to a peer. If iruleScopeMessage=true, also limits number of messages concurrently processing iRule events. 0 disables the limit. Min 0, max 4294967295. 64
maxRetries integer Maximum number of times a message may be resubmitted for rerouting by the MR::retry iRule command. Min 0, max 4294967295. 1
perPeerStats boolean If enabled, profile-specific statistics are captured for each pool member. false
routes array(object) List of static routes for the router instance to use. []
routes.destinationAddress string Destination address of the route. If not present, treated as wildcard. Max length 255. The value must match the pattern ^[0-9a-zA-Z._-]*$, meaning it can only contain alphanumeric characters (0-9, a-z, A-Z), periods (.), underscores (_), and hyphens (-). ""
routes.sourceAddress string Source address of the route. If not present, treated as wildcard. Max length 255. The value must match the pattern ^[0-9a-zA-Z._-]*$, meaning it can only contain alphanumeric characters (0-9, a-z, A-Z), periods (.), underscores (_), and hyphens (-). ""
routes.peerSelectionMode string How to select a peer from peers. Enum: sequential, ratio. "sequential"
routes.peers array(object) List of peers for this route. []
routes.peers.autoInitialization boolean If enabled, BIG-IP automatically creates outbound connections to active pool members using the referenced transport-config. false
routes.peers.autoInitializationInterval integer Interval (ms) between attempts to initiate connections. Min 500, max 65535. 5000
routes.peers.connectionMode string How connections per host are limited/distributed. Enum: per-peer, per-tmm, per-client, per-client-per-tmm, per-peer-alternate-tmm, per-client-alternate-tmm. "per-peer"
routes.peers.numberConnections integer Distribution of connections between BIG-IP and a remote host. Min 1, max 4294967295. 1
routes.peers.pool string Name of the pool to which messages are routed. Max length 255.
The value must match the pattern ^$^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$, meaning it can be an empty string or a domain-like structure containing lowercase letters (a-z), digits (0-9), optional hyphens (-), and subdomains separated by periods (.).
""
routes.peers.ratio integer Ratio used when peerSelectionMode=ratio. Min 0, max 100. 1
routes.peers.transportConfig object Transport configuration for this peer (required: protocolProfile).
routes.peers.transportConfig.protocol string Transport protocol. Enum: tcp, udp. tcp
routes.peers.transportConfig.protocolProfile string Name of the protocol profile to be used. Min length 1, max length 255. The value must match the pattern ^$^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$, meaning it can be an empty string or a domain-like structure containing lowercase letters (a-z), digits (0-9), optional hyphens (-), and subdomains separated by periods (.). (required)
routes.peers.transportConfig.iRules array(string) iRules that customize the transport configuration. Each entry: min length 1, max length 255. The value must match the pattern ^$^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$, meaning it can be an empty string or a domain-like structure containing lowercase letters (a-z), digits (0-9), optional hyphens (-), and subdomains separated by periods (.). []
routes.peers.transportConfig.snat object Source NAT configuration (see below validations).
routes.peers.transportConfig.snat.type string Source address translation type. Enum: none, snat, automap. none
routes.peers.transportConfig.snat.pool string SNAT pool name (only valid when type=snat). The value must match the pattern ^$^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$, meaning it can be an empty string or a domain-like structure containing lowercase letters (a-z), digits (0-9), optional hyphens (-), and subdomains separated by periods (.). ""
routes.peers.transportConfig.sourcePort integer Source port for the created connection if non-zero. Min 0, max 65535. 0
routes.peers.transportConfig.sourcePortMode string How to select a source port. Enum: change, preserve, preserve-strict. "change"
useLocalConnection boolean If true, attempts to route to an existing connection on the same TMM as the incoming message; otherwise uses deterministic algorithm / creates connection as needed. May reduce connections created to a peer. true
iruleScopeMessage boolean If true, iRule events are scoped to each message (concurrent processing). If false, iRule events are scoped to the connection flow (legacy mode: executes one-at-a-time per flow). false
protocol object Protocol/parser configuration.
protocol.disableParser boolean If true, the generic message parser is disabled; it ignores incoming packets and doesn’t directly send message data. Used for iRule script protocol implementations. false
protocol.maxEgressBuffer integer Max send buffer size (bytes). If exceeded, router stops receiving outgoing messages until buffer drops below the limit. Min 1, max 4294967295. 32768
protocol.maxMessageSize integer Max size of a received message; if exceeded, connection is reset. Min 1, max 4294967295. 32768
protocol.messageTerminator string Terminator used to split messages. If empty, input stream is not separated into messages. Max length 63. "\n"
protocol.matchResponse boolean If false, matching of responses to requests is disabled. true

SNAT validations

The CRD enforces the following rules:

  1. If snat.type == "none" then snat.pool must be empty.

  2. If snat.type == "automap" then snat.pool must be empty.

  3. If snat.type == "snat" then snat.pool must be non-empty.

CR Example

apiVersion: k8s.f5net.com/v1
kind: F5GenericMsgSetting
metadata:
  name: example-genericmsg
  namespace: default
spec:
  ignoreClientPort: false
  maxPendingBytes: 32768
  maxPendingMessages: 64
  maxRetries: 1
  perPeerStats: false
  useLocalConnection: true
  iruleScopeMessage: false
  routes:
  - destinationAddress: "serviceA"
    sourceAddress: "clientA"
    peerSelectionMode: sequential
    peers:
    - pool: "example-pool"
      connectionMode: per-peer
      numberConnections: 1
      ratio: 1
      transportConfig:
        protocol: tcp
        protocolProfile: "example-tcp-profile"
        iRules: []
        snat:
          type: none
          pool: ""
        sourcePort: 0
        sourcePortMode: change
  protocol:
    disableParser: false
    maxEgressBuffer: 32768
    maxMessageSize: 32768
    messageTerminator: "\n"
    matchResponse: true