In this section:

Common CNF Terms

Term

Ribbon Definitions / Usage

Container

A Container image is a ready-to-run software package, containing everything needed to run a function: the code and any runtime it requires, application and system libraries, and default values for any essential settings.

By design, a container is immutable: you cannot change the code of a container that is already running. If you have a containerized function and want to make changes, you must build a new image that includes the change, then recreate the container to start from the updated image.

Database shard

Database sharding splits a single dataset into partitions (or shards). Each shard contains unique rows of information that you can store separately across multiple nodes. All shards run on separate nodes but share the original database's schema or design.

K8S ConfigMap

A ConfigMap is an API object that allows you to store data as key-value pairs. Kubernetes pods can use ConfigMaps as configuration files, environment variables or command-line arguments. ConfigMaps allow you to decouple environment-specific configurations from containers to make applications portable.

For details, refer to https://kubernetes.io/docs/concepts/configuration/configmap/

K8S Daemonset

DaemonSet feature is used to ensure that some or all of your pods are scheduled and running on every single available node in the K8S cluster. This essentially runs a copy of the desired pod across all nodes. When a new node is added to a Kubernetes cluster, a new pod is added to that newly attached node.

For details, refer to https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/

K8S Deployment

A Deployment is a resource object in Kubernetes that provides declarative updates to applications. A deployment allows you to describe an application's life cycle, such as which images to use for the app, the number of required pods and the pod update method.

For details, refer to  https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

K8S Job

A Job is a supervisor for pods carrying out batch processes, that is, a process that runs for a certain time to completion.

For details, refer to https://kubernetes.io/docs/concepts/workloads/controllers/job/

K8S Persistent Volume (PV)

A PersistentVolume is a piece of storage in the cluster that has been provisioned by an administrator or dynamically provisioned using Storage Classes. PVs are volume plugins like Volumes but have a lifecycle independent of any individual pod that uses the PV. GlusterFS is used in the Ribbon VNF to share the data across managed nodes.

Some use cases for PV include:

  • The configurations are shared from OAM across other pods via PV
  • Performance statistics are shared from various pods to OAM via PV
K8S Persistent Volume Claim (PVC)

A PersistentVolumeClaim is a request for storage by a user. It is similar to a pod. Pods consume node resources and PVCs consume PV resources. Pods can request specific levels of resources (CPU and Memory). Claims can request specific size and access modes (e.g., mounted as ReadWriteOnce, ReadOnlyMany or ReadWriteMany).

For details, refer to https://kubernetes.io/docs/concepts/storage/persistent-volumes/

K8S pod

A pod is the smallest deployable units of computing that you can create and manage in Kubernetes. A pod is a group of one or more container with shared storage and network resources and a specification for how to run the containers.

Additional information: 

K8S Replicaset

A ReplicaSet is a process that runs multiple instances of a pod and keeps the specified number of pods constant. Its purpose is to maintain the specified number of pod instances running in a cluster at any given time to prevent users from losing access to their application when a pod fails or is inaccessible.

For details, refer to  https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/

K8S Rollout

Rollout simply means rolling update of application. Rolling update means that application is updated gradually, gracefully and with no downtime.

For details, refer to https://argoproj.github.io/argo-rollouts/

K8S Secrets

A Secret is an object that contains a small amount of sensitive data such as a password, a token, or a key. Such information might otherwise be put in a pod specification or in a container image. Using a Secret means that you don't need to include confidential data in your application code.

For details, refer to https://kubernetes.io/docs/concepts/configuration/secret/

K8S Service

A Service is a logical abstraction for a deployed group of pods in a cluster (which all perform the same function). Since pods are ephemeral, a service enables a group of pods, which provide specific functions (web services, image processing, etc.) to be assigned a name and unique IP address (clusterIP).

For details, refer to https://kubernetes.io/docs/concepts/services-networking/service/

K8S Statefulset

A StatefulSet is the workload API object used to manage stateful applications. Manages the deployment and scaling of a set of pods, and provides guarantees about the ordering and uniqueness of these pods.

For details, refer to https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/

K8S Storage Class (SC)

A StorageClass provides a way for administrators to describe the "classes" of storage they offer. Different classes might map to quality-of-service levels, or to backup policies, or to arbitrary policies determined by the cluster administrators. 

For details, refer to https://kubernetes.io/docs/concepts/storage/storage-classes/

Microservice

Microservices – also known as the microservice architecture - is an architectural style that structures an application as a collection of services that are:

  • Highly maintainable and testable
  • Loosely coupled
  • Independently deployable
  • Organized around business capabilities
  • Owned by a small team
Observability

Observability – A complex system's internal state can be deduced from external outputs. The goal of Ribbon observability is to facilitate the exposure of metrics and logs.

Ribbon uses OpenTelemetry to implement the Ribbon Observability Stack and supports the selected components from the OpenTelemetry community. Ribbon's aim is to support all CNF-based Ribbon products in order to stream the observability data. With the introduction of this new stack, all logs and metrics and in future traces are normalized and pre-processed, which will help to correlate multiple data points captured from each microservice and deliver them to configured backends.
RBBN Application

An Application (or Application Service for aaS offers) is composed of one or more CNFs. In the near term an Application will likely map 1:1 with a CNF (eg: SBC CNF). 

RBBN CNF

A Cloud-Native Network Function is a software-implementation of a Network Function implemented in container(s) and orchestrated by Kubernetesbuilt and deployed in a cloud-native way. A CNF is a single deployable, upgradable and manageable entity.

 – A RBBN CNF consists or 1 or more pods, packaged via a Helm Chart.

RBBN CNF Solution Hierarchy
  • Solution → Collection of Helm Charts
    • Application (1-n...) → currently 1:1, Application to CNF
      • Pod (1-n...)
        • Container (1-n...)
RBBN Solution

A RBBN Solution consists of a collection of Applications or CNFs which together form an overall solution (e.g., a solution may contain RAMP, PSX, AS and SBC Applications). The scope of the application teams is to define LCM operations, and the Solutions/Services teams define the solution with workflows integrating application level LCM operations.

Note: Ribbon Call Trust and Ribbon Voice Sync are examples of Solutions composed of multiple Applications/CNFs.

Abbreviations Used in CNF Documentation

Abbreviation

Definition

AAAuthentication and Authorization
CACCall Admission Control
CI/CDContinuous Integration/Continuous Deployment
CMConfiguration Management
CNCFCloud Native Computing Foundation
CNeCloud-Native edition
CNFCloud Native Network Function
CSCommon Services
DBaaSDB as a Service
DevOpsDevelopment and Operations
DMDevice Management
EFKElasticsearch, Fluentd, and Kibana stack
EPUEndpoint Updater
FCAPSFaults, Configuration, Accounting, Performance, and Security
FMFault Management
FR

Fixed Resource

Modified: for 12.1.4

HPAHorizontal Pod Autoscaler
IDMIdentity Management
K8SKubernetes
LMLicense Management
NSNetwork Services
OAMOperations, Administration and Maintenance
OCOpenShift CLI
OCPOpenShift Container Platform
PMPerformance Metrics
PSX-PPSX Primary
PSX-RPSX Replica
RACRole Assignment Controller
RBBNRibbon Communications
RHPARibbon Horizontal Pod Autoscaler
SCSession Control
SIP-TSIP-Telephony
SLBSIP Load Balancer
TOSCATopology and Orchestration Specification for Cloud Applications