F5SPKStatefulset CR

SIGTRAN is a protocol suite designed to transport signaling protocols over IP, extending the SS7 protocol family. It supports the same application and call management paradigms as SS7 but uses the Stream Control Transmission Protocol (SCTP) for IP transport. A typical use case for SIGTRAN is in signaling gateways that enable Voice over IP (VoIP) networks to interwork with traditional circuit-switched telephone networks using SS7. The gateway processes signaling messages from the SS7 network and forwards them via SIGTRAN on the IP side.

These signaling gateways are deployed using a F5SPKStatefulSet CR in Kubernetes. Adding generic StatefulSet support to SPK is intended to facilitate a smoother transition of the signaling gateways to a cloud-native environment. For the full list of CRs, refer to the SPK CRs.

F5SPKStatefulset CR Integration

SPK CRs should be integrated into the cluster after the Kubernetes application Deployment and application Service object have been installed. The SPK Controller uses the CR service.name to discover the application Endpoints, and use them to create TMM’s load balancing pool. The recommended method for installing SPK CRs is to include them in the application’s Helm release. Refer to the Helm CR Integration guide for more information.

F5SPKStatefulset CR Parameters

service

The table below describes the CR service parameters.

Parameter Description
name Selects the Service object name for the internal applications (Pods), and creates a round-robin load balancing pool using the Service Endpoints.
port Selects the Service object port value.

spec

The table below describes the CR spec parameters.

Parameter Description
ipfamilies Specifies the type of IP protocol for pool members: IPv4 (default), IPv6, IPv4andIPv6.
egressPort Specifies the configurable port for wildcard egress virtual server on the internal vlan side.
externalIPs Specifies the list of external IPs for respective pod identities.
protocol Specifies the type of L4 protocol used for sigtran connections: SCTP (default), TCP and UDP.
vlans.vlanList Specifies a list of F5SPKVlan CRs to listen for egress traffic, using the CR's metadata.name. The list can also be disabled using disableListedVlans.
vlans.category Specifies an F5SPKVlan CR category to listen for egress traffic. The category can also be disabled using disableListedVlans.

F5SPKStatefulset CR Example

apiVersion: k8s.f5net.com/v1
kind: F5SPKStatefulset
metadata:
  annotations:
    meta.helm.sh/release-name: testapp-1
    meta.helm.sh/release-namespace: mozingo-app
  creationTimestamp: "2024-07-16T06:38:31Z"
  finalizers:
  - handletmmconfig_inconsistency
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
  name: testapp-1-f5ing-sigtran-test-app
  namespace: mozingo-app
  resourceVersion: "185924691"
  uid: 12b63713-7fc6-4cf7-a76e-d8626284c06f
service:
  name: testapp-1-f5ing-sigtran-test-app
  port: 8683
spec:
  egressPort: 3638
  externalIPs:
  - 10.9.77.231
  - 10.9.77.232
  - 10.9.77.233
  - 10.9.77.234
  ipfamilies: IPv4
  protocol: SCTP
status:
  conditions:
  - lastTransitionTime: "2024-07-16T06:38:31Z"
    message: ""
    observedGeneration: 0
    reason: Accepted
    status: "True"
    type: Accepted
  - lastTransitionTime: "2024-07-16T06:38:31Z"
    message: CR config sent to all grpc endpoints
    observedGeneration: 2
    reason: Programmed
    status: "True"
    type: Programmed
  generationId: 0

Traffic Flow Architecture

Arch

Requirements

Ensure you have:

  • Installed a K8S Service object and application.

  • Installed the SPK Controller Pods.

  • Have a Linux based workstation.

Installation

Following the instructions to verify the application’s Service object configuration, and install the example F5SPKStatefulSet CR.

  1. Switch to the application Project:

    oc project <project>
    

    In this example, the application is in the stateful-apps Project:

    oc project stateful-apps
    
  2. Verify the K8S Service object NAME and PORT are set using the CR service.name and service.port parameters.

    oc get service
    

    In this example, the Service object NAME stateful-apps and PORT 3868 are set in the example CR:

    NAME           TYPE        CLUSTER-IP    EXTERNAL-IP    PORT(S)         
    stateful-apps  NodePort    10.99.99.99   <none>         3868:30714/TCP  
    
  3. Copy the below example F5SPKStatefulSet CR into a YAML file and save.

    apiVersion: k8s.f5net.com/v1 
    kind: F5SPKStatefulset
    metadata:
      annotations:
        meta.helm.sh/release-name: testapp-1
        meta.helm.sh/release-namespace: mozingo-app
      creationTimestamp: "2024-07-16T06:38:31Z"
      finalizers:
      - handletmmconfig_inconsistency
      generation: 1
      labels:
        app.kubernetes.io/managed-by: Helm
      name: testapp-1-f5ing-sigtran-test-app
      namespace: mozingo-app
      resourceVersion: "185924691"
      uid: 12b63713-7fc6-4cf7-a76e-d8626284c06f
    service:
      name: testapp-1-f5ing-sigtran-test-app
      port: 8683
    spec:
      egressPort: 3638
      externalIPs:
      - 10.9.77.231
      - 10.9.77.232
      - 10.9.77.233
      - 10.9.77.234
      ipfamilies: IPv4
      protocol: SCTP
    status:
      conditions:
      - lastTransitionTime: "2024-07-16T06:38:31Z"
        message: ""
        observedGeneration: 0
        reason: Accepted
        status: "True"
        type: Accepted
     - lastTransitionTime: "2024-07-16T06:38:31Z"
        message: CR config sent to all grpc endpoints
        observedGeneration: 2
        reason: Programmed
        status: "True"
        type: Programmed
     generationId: 0
    
  4. Apply the F5SPKStatefulSet CR that you have created.

     oc apply -f f5-spk-statefulset.yaml
    
  5. StatefulSet should now be able to connect to the application through the Service Proxy TMM.

Custom Resource shortName

CR shortNames provide an easy way to view installed CRs, and their configuration parameters. The CR shortName can also be used to delete the CR instance. The F5SPKStatefulset CR shortName is statefulset.

View CR instance:

oc get statefulset -n <namespace>

View CR configuration:

oc get statefulset -n <namespace> -o yaml

Supplemental

Feedback

Provide feedback to improve this document by emailing spkdocs@f5.com.