Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This section describe how to setup Diameter Server and Diameter Client hosted in the same Kubernetes Cluster. For example, the Diameter Server and Diameter Client hosted in GCP Kubernetes Cluster.

Assumed that the Diameter Server and Diameter Client workflows have been created with the following configurations.

Diameter Server

Diameter Client

Hostname

server-digitalroute-com

client-digitalroute-com

Dynamic Workflow enabled

Yes

Yes

Bind On All Interfaces

Yes

Yes

Diameter Debug Event enabled

Yes

Yes

Diameter Port

3868

3869

Network Protocol

TCP

TCP

Diameter Realm

digitalroute.com

digitalroute.com

Info

For this to work (using Diameter in an ECD in Kubernetes), in the Diameter Stack agent the checkbox “Bind On All Interfaces” under the “Advanced”-tab needs to be checked. This is true regardless of if the localhost ip is used or the ip connected with the LoadBalancer service.

To run these Diameter Server and Diameter Client workflows, deploy an ECD pod for each workflow respectively. Therefore, login to desktop-online Web UI, go to Manage menu, select EC Deployment > New EC Deployment.

...

To deploy an ECD Pod for Diameter Server workflow on the cluster, follow these steps:

  1. On the Configure EC Tab, fill in the EC Deployment Name and the rest of the fields if needed. Click Next to continue.

  2. On the Configure Auto Scale Tab, do not enable Auto Scaling. Click Next to continue.

  3. On the Configure Workflow Tab, create a new real time workflow from the selected workflow template i.e., Diameter Server or Diameter Client (either one). Click Next to continue.

  4. On the Configure Network Tab, create a Network Service type ClusterIP with appropriate port. The Service Name must set to the Diameter Server or Diameter Client hostname.

Diameter Server

Diameter Client

Service Name

server-digitalroute-com

client-digitalroute-com

ClusterIP Port

3868

3869

Before finalise the EC deployment, check and verify EC Deployment by pressing “View YAML“.

For instance, the Diameter Server YAML content looks like this:

Code Block
apiVersion: "mz.digitalroute.com/v1alpha1"
kind: "ECDeployment"
metadata:
  creationTimestamp: "2024-09-09T03:41:05.000000Z"
  name: "ecd-server-digitalroute-com"
  namespace: "uepe"
  resourceVersion: "6342188"
  uid: "260e7271-14b7-43e7-8fb5-4535bb630f1d"
spec:
  jvmArgs:
  - "Xmx512M"
  - "Xms512M"
  manualUpgrade: false
  persistence:
    pvcName: "ec1-filestore-pvc"
  ports:
  - containerPort: 3868
    protocol: "TCP"
  resources:
    limits:
      memory: "640Mi"
    requests:
      memory: "640Mi"
  services:
  - name: "server-digitalroute-com"
    spec:
      ports:
      - name: "port-1"
        port: 3868
        protocol: "TCP"
        targetPort: 3868
      type: "ClusterIP"
  workflows:
  - instances:
    - name: "Diameter_Server"
      parameters: "{}"
      useExtRef: "{}"
    template: "Diameter.DiameterDCCAServerSimulator"

For instance, the Diameter Client YAML content looks like this:

Code Block
apiVersion: "mz.digitalroute.com/v1alpha1"
kind: "ECDeployment"
metadata:
  creationTimestamp: "2024-09-09T03:42:56.000000Z"
  name: "ecd-client-digitalroute-com"
  namespace: "uepe"
  resourceVersion: "6343337"
  uid: "b4e223b7-75ff-453f-bdea-c8f73b5e0342"
spec:
  jvmArgs:
  - "Xmx512M"
  - "Xms512M"
  manualUpgrade: false
  persistence:
    pvcName: "ec1-filestore-pvc"
  ports:
  - containerPort: 3869
    protocol: "TCP"
  resources:
    limits:
      memory: "640Mi"
    requests:
      memory: "640Mi"
  services:
  - name: "client-digitalroute-com"
    spec:
      ports:
      - name: "port-1"
        port: 3869
        protocol: "TCP"
        targetPort: 3869
      type: "ClusterIP"
  workflows:
  - instances:
    - name: "Diameter_Client"
      parameters: "{}"
      useExtRef: "{}"
    template: "Diameter.DiameterClientSimulator"

Now, finalise EC Deployment by clicking Finish. Choose not to enable the ECD for now.

Repeat step 1 till step 4 to deploy another ECD Pod for Diameter Client workflow on the same cluster.

Following the creation of the both ECD, let’s monitor the Kubernetes Services type ClusterIP that is being created.

Execute this command:

Code Block
kubectl get svc -n uepe

On the cluster, the is the output.

Code Block
NAME                                               TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)                                       AGE
client-digitalroute-com                            ClusterIP      10.12.6.12    <none>          3869/TCP                                      35m
desktop-online                                     NodePort       10.12.5.41    <none>          9001:31441/TCP                                5d23h
external-dns                                       ClusterIP      10.12.2.229   <none>          7979/TCP                                      6d
ingress-nginx-controller                           NodePort       10.12.1.201   <none>          80:31079/TCP,443:31170/TCP                    6d
platform                                           LoadBalancer   10.12.2.222   34.142.171.15   9000:30870/TCP,6790:31985/TCP,443:31140/TCP   5d23h
server-digitalroute-com                            ClusterIP      10.12.5.153   <none>          3868/TCP                                      36m
uepe-operator-controller-manager-metrics-service   ClusterIP      10.12.7.111   <none>          8443/TCP                                      5d23h
Info

Kubernetes creates DNS records for Services and Pods. You can contact Services with consistent DNS names instead of IP addresses.

The Service Name in the form of <servicec-name>.<namespace> resolves to the cluster IP of the Service. <namespace> can be eliminated if both ECD are located in the same namepsace, i.e., uepe

(Old)

The following examples shows how to setup both Diameter server and client inside the same cluster.

...