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
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.
Switch to the application Project:
oc project <project>
In this example, the application is in the stateful-apps Project:
oc project stateful-apps
Verify the K8S Service object NAME and PORT are set using the CR
service.name
andservice.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
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
Apply the F5SPKStatefulSet CR that you have created.
oc apply -f f5-spk-statefulset.yaml
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