NSSF Installation

This section includes information about NSSF deployment.

Following are the parameters and definitions used during NSSF deployment:

Table 4-4 Parameters and Definitions

Parameters Definitions
<helm chart> It is the name of the chart that is of the form <helm repo>/ocnssf.
<OCNSSF version> It is the software version (helm chart version) of the NSSF. This is optional, if omitted, the default version is the latest version available in helm repository.
<release> It is a name provided by the user to identify the helm deployment.
<k8s namespace> It is a name provided by the user to identify the kubernetes namespace of the NSSF. All the NSSF micro services are deployed in this kubernetes namespace.
<mysql host> It is the hostname of the mysql service and can be provided as, <release>-mysql.<k8s namespace>.

NSSF Deployment on Kubernetes

Note:

Create Database User/Group

The NSSF uses a MySQL database to store the configuration and run time data.

The NSSF deployment using MySQL NDB cluster requires the database administrator to create a user in the MYSQL DB and to provide the user with necessary permissions to access the tables in the NDB cluster.

  1. Login to the server where the ssh keys are stored and the SQL nodes are accessible.
  2. Connect to the SQL nodes.
  3. Login to the Database as a root user.
  4. Create a user and assign it to a group having necessary permission to access the tables on primary SQL nodes:
    
    CREATE USER '<username>'@'%' IDENTIFIED BY '<password>';
    DROP DATABASE if exists nssfdb;
    CREATE DATABASE nssfdb CHARACTER SET utf8;
    GRANT SELECT, INSERT, CREATE, ALTER, DROP, LOCK TABLES, CREATE TEMPORARY
    TABLES, DELETE, UPDATE,
    EXECUTE ON nssfdb.* TO '<username>'@'%';
    USE nssfdb;
    
  5. Grand necessary permissoins to access the tables on seconary SQL nodes:
    GRANT SELECT, INSERT, CREATE, ALTER, DROP, LOCK TABLES, CREATE TEMPORARY
    TABLES, DELETE, UPDATE,
    EXECUTE ON nssfdb.* TO '<username>'@'%';
    USE nssfdb;
    

    Note:

    The <username> and <password> is created by the Database Administrator.
  6. Exit from database and logout from SQL node.

Table 4-5 NSSF Deployment

Step # Procedure Description

1

Create customized ocnssf-custom-values-1.3.0.yaml file Create the customized ocnssf-custom-values-1.3.0.yaml with the required input parameters.

To configure the ocnssf-custom-values-1.3.0.yaml, refer Customizing NSSF

or,

The ocnssf-custom-values-1.3.0.yaml template can be downloaded from OHC.

Download the package ocnssf-custom-configTemplates-1.3.0.0.0.zip and Unzip to get ocnssf-custom-values-1.3.0.yaml file.

2 Go to the unzipped OCNSSF package Go to the following directory:
cd OCNSSF-pkg-1.3.0.0.0

3

Deploy OCNSSF Execute the following command:

helm install ocnssf/ --name <helm-release> --namespace <k8s namespace> -f <ocnssf_customized_values.yaml>

Example:

helm install ocnssf/ --name ocnssf --namespace ocnssf -f ocnssf-custom-values-1.3.0.yaml

4

Check status of the deployment helm status --name <helm-release>

Example: helm status --name ocnssf

5

Check status of the services Execute the following command:
kubectl -n <k8s namespace> get services

Example:

kubectl -n ocnssf get services

Note: If metallb is used, EXTERNAL-IP is assigned to<helm release name>-endpoint. ocnssf is the helm release name.

NAME            TYPE         CLUSTER-IP    EXTERNAL-IP  PORT(S)                    AGE
ocnssf-appinfo          ClusterIP    10.103.32.93   <none>    5906/TCP                     4h22m
ocnssf-config-server    ClusterIP    10.103.227.15  <none>    5807/TCP,9000/TCP            4h22m
ocnssf-egress           ClusterIP    10.107.83.168  <none>    8080/TCP,5701/TCP            4h22m
ocnssf-ingress          LoadBalancer 10.98.78.95    <pending> 80:30075/TCP,5701:32531/TCP  4h22m
ocnssf-nrf-clientserviceNodePort     10.99.244.169  <none>    5910:30025/TCP,5805:31152/TCP4h22m
ocnssf-nsavailability   NodePort     10.98.166.211  <none>    5745:30592/TCP               4h22m
ocnssf-nsconfig         NodePort     10.106.24.192  <none>    5755:32160/TCP               4h22m
ocnssf-nsdb             ClusterIP    10.107.148.15  <none>    3306/TCP                     4h22m
ocnssf-nsselection      NodePort     10.107.230.118 <none>    5745:31263/TCP,4546:31199/TCP4h22m
ocnssf-nssubscription   NodePort     10.100.116.162 <none>    5745:31674/TCP,4546:31542/TCP4h22m
ocnssf-performance      NodePort     10.98.216.252  <none>    5905:31402/TCP

6

Check status of the pods Execute the following command:

kubectl get pods -n <k8s namespace>

Status column of all the pods must indicate 'Running'.

Ready column of all the pods should be n/n, where n is number of containers in the pod.

Example:

kubectl get pods -n ocnssf

NAME                        READY   STATUS RESTARTS AGE
ocnssf-appinfo-7969c9fbf7-4fmgj          1/1  Running   0   18m
ocnssf-config-server-54bf4bc8f9-s82cv    1/1  Running   0   18m
ocnssf-egress-6b6bff8949-2mf7b           1/1  Running   0   18m
ocnssf-ingress-68d76954f5-9fsfq          1/1  Running   0   18m
ocnssf-nrf-clientservice-7c5fcc9588-ckmmr1/1  Running   0   18m
ocnssf-nsavailability-644999bbfb-9gcm5   1/1  Running   0   18m
ocnssf-nsconfig-577446c487-dzsh6         1/1  Running   0   18m
ocnssf-nsdb-585f7bd7d-tdth4              1/1  Running   0   18m
ocnssf-nsselection-5dfcc94bc7-q9gct      1/1  Running   0   18m
ocnssf-nssubscription-5c898fbbb9-fqcw6   1/1  Running   0   18m
ocnssf-performance-6d75c7f966-qm5fq      1/1  Running   0   18m