Versions Compared

Key

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


Table of Contents
outlinetrue
Introduction

...

ONAP services need to be registered to MSB to leverage the service discovery/routing/LB capabilities of MSB. The below table is the information MSB need for service registration.

See also the complementary set official reference list of externally exposed ports for OOM at OOM NodePort List - until most of the ports are generated dynamically

AttributeDescription

Required

Service Name

An unique name of the service, it should be constant so the service consumer can access the service.

Service name recommendation:

  • If a project has multiple services, the service name should include the project name as well as the microservice name to ensure uniqueness, for example, 'aai-cloudInfrastructure'
  • If a simple project has only one service, the service name should be the same as the project name.
Yes
Service Typeapi or uiYes
Version

Service version. Only the major version is used in the URI.

RESTful API Design Specification for ONAPSpecification#Versioning

Yes
URL

The actual URL of the service to be registered

Yes
Customized Path

The customized publish path of this service.

If this parameter is specified when registering the service, the service will be published to api gateway under this path. Otherwise, the service will be published to api gateway using a fixed format: api/{serviceName} /{version}.

The customized publish path should only be used for back-compatible.

No
Published URL

If "Customized Path" attribute is not specified,The published URL is the fixed format api/{serviceName} /{version} .

If "Customized Path" attribute is specified,The published URL is the same as the "Customized Path".

Yes
Visual Range

Visibility of the service. 

External(can be accessed by external systems):0

Internal(can only be accessed by ONAP microservices):1

Yes
LB MethodLoad balancing method used when MSB routes the service requests. Currently, Round robin and IP hash are supported.Yes
PortThe service endpoint port.Yes
Enable SSL

True if the registered service is based on https.

False if the registered service is based on http.

Default is False.

No

...

  • The collected service endpoint information will be added to OOM deployment blueprint, which is kubernetes configuration file in Amsterdam release.

  • OOM deploy MSB as the first component 

  • OOM deploy Registrator, which watches the kubernetes POD events

  • OOM deploy other ONAP components,like AAI, Poliy, SO,VFC, APPC, etc.

  • Registrator get notified with the POD event, then get the service information form POD environment variables and service instance(POD) IP from kubernetes

  • Registrator registers the service endpoint info to MSB

  • MSB use these service info to route service requests

Backwards compatible

While trying to provide consistent RESTful APIs to ONAP developers and users, some projects may also want to support their current API version until an appropriate time to deprecate it. In case of that, two service endpoints can be defined for a service, one for the consistent, standard way and one for backwards compatible.

The customized publish path of this service attribute can be used to support the current API. If this parameter is specified when registering the service, the service will be published to api gateway under the specified customer path other than the the fixed format: api/{serviceName} /{version}.


for example, A&AI defines Service information to be registered to MSB can be added as an annotation "msb.onap.org/service-info" to K8s service spec YAML.

Example:

https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob_plain;f=kubernetes/multicloud/templates/service.yaml;hb=refs/heads/master


Code Block
apiVersion: v1
kind: Service
metadata:
  name: {{ .Values.service.portName }}
  namespace: {{ include "common.namespace" . }}
  labels:
    app: {{ include "common.name" . }}
    chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
    release: {{ include "common.release" . }}
    heritage: {{ .Release.Service }}
  annotations:
    msb.onap.org/service-info: '[
    {
      "serviceName": "multicloud",
      "version": "v0",
      "url": "/api/multicloud/v0",
      "protocol": "REST",
      "port": "{{ .Values.service.externalPort }}",
      "enable_ssl": {{ .Values.config.ssl_enabled }},
      "visualRange": "1"
    },
    {
      "serviceName": "multicloud",
      "version": "v1",
      "url": "/api/multicloud/v1",
      "protocol": "REST",
      "port": "{{ .Values.service.externalPort }}",
      "enable_ssl": {{ .Values.config.ssl_enabled }},
      "visualRange": "1"
    }
    ]'
spec:
  ports:
  {{if eq .Values.service.type "NodePort" -}}
  - port: {{ .Values.service.externalPort }}
    nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }}
    name: {{ .Values.service.portName }}
  {{- else -}}
  - port: {{ .Values.service.externalPort }}
    targetPort: {{ .Values.service.internalPort }}
    name: {{ .Values.service.portName }}
  {{- end}}
  selector:
    app: {{ include "common.name" . }}
    release: {{ include "common.release" . }}
  type: {{ .Values.service.type }}


Backwards compatible

While trying to provide consistent RESTful APIs to ONAP developers and users, some projects may also want to support their current API version until an appropriate time to deprecate it. In case of that, two service endpoints can be defined for a service, one for the consistent, standard way and one for backwards compatible.

The customized publish path of this service attribute can be used to support the current API. If this parameter is specified when registering the service, the service will be published to api gateway under the specified customer path other than the the fixed format: api/{serviceName} /{version}.

for example, A&AI defines two services for its Cloud Infrastructure API,  the "aai-cloudInfrastructure" is published under /api/aai-cloudInfrastructure/v1/ which is the consistent, standard API URL, and the "aai-cloudInfrastructure-deprecated" is published under /cloud-infrastructure/ which is the same as its current API URL.

...

Service NameDescriptionService TypeversionURLCustomized  PathPublished URLVisual RangeLB MethodPortEnable SSL
holmes-rule-mgmtThe rule management module of Holmesapi1/api/holmes-rule-mgmt/v1/N/A/api/holmes-rule-mgmt/v1/InternalRound robin9101False
holmes-engine-mgmtThe engine management module of Holmesapi1/api/holmes-engine-/mgmt/v1/
N/A/api/holmes-engine-mgmt/v1/InternalRound robin9102False
holmes-dmaap-dsaThe data source adapter module of Holmesapi1/api/holmes-dmaap-dsa/v1/N/A/api/holmes-dmaap-dsa/v1/InternalRound robin9103False

...

Service NameDescriptionService TypeversionURLCustomized  PathPublished URLVisual RangeLB MethodPortEnable SSL
nslcmNFVO LCM Component.api1/N/A/api/nslcm/v1/InternalRound Robin8403
ztevmanagerdriverztevnfmdriver
ZTE VNFM Driver Component.api1/N/A/api/ztevmanagerdriverztevnfmdriver/v1/InternalRound Robin8410
ztesdncdriver
ZTE SDNC Driver Component.api1/N/A/api/ztesdncdriver/v1/InternalRound Robin8411
resmgrNFVO Resource Manager Component.api1/N/A/api/resmgr/v1/InternalRound Robin8480
gvnfmdriver GVNFM Driver Componentapi1/N/A/api/gvnfmdriver/v1/InternalRound Robin8484
huaweivnfmdriverHUAWEI VNFM Driver Component.api1/N/A/api/huaweivnfmdriver/v1/InternalRound Robin8482
nokiavnfmdriverNokia VNFM Driver Componetapi1/N/A/api/nokiavnfmdriver/v1/IntelnalRound Robin8486
jujuvnfmdriverJUJU VNFM Driver Component.api1/N/A/api/jujuvnfmdriver/v1/InternalRound Robin8483
vnflcm VNF Lifecycle Managementapi1/N/A/api/vnflcm/v1/InternalRound Robin8801
vnfres VNF Virtual Resource Managementapi1/N/A/api/vnfres/v1/InternalRound Robin8802
vnfmgr VNF Init Configuration and Managementapi1/N/A/api/vnfmgr/v1/InternalRound Robin8803
activitiVNF Execution Engineapi1//activiti-rest//activiti-rest/
InternalRound Robin8804
workflowWorkflow Managementapi1//mgr/api/workflow/v1/internalRound Robin8805
catalogNFVO Catalog Component.api1/N/A/api/catalog/v1/internalRound Robin8806
emsdriverEMS driver Componentapi1/N/A/api/emsdriver/v1/internal

Round

Robin

8206

...

Service NameDescriptionService TypeversionURLCustomized  PathPublished URLVisual RangeLB MethodPortEnable SSL

multicloud


apiv0/N/A/api/multicloud/v0/InternalRound Robin9001

OFP

Not applicable in Amsterdam Release

...

OOM

9001


OFP

Not applicable in Amsterdam Release

Service NameDescriptionService TypeversionURLCustomized  PathPublished URLVisual RangeLB MethodPortEnable SSL












OOM

Convinient way to retrieve all the port information, formatted as follow:
port-name | internal port | external port

Code Block
kubectl get svc --all-namespaces -o go-template='{{range .items}}{{range.spec.ports}}{{if .nodePort}}{{.name}} | {{.port}} | {{.nodePort}}{{"\n"}}{{end}}{{end}}{{end}}'


Component Name

Namespace

Container

Internal Port

External Port

Logging Filebeat Container

Description

Service Type

version

URL

Customized  Path

Published URL

Visual Range

LB Method

Enable SSL

AAF

onap-aaf

aaf-authz-service

8101

30299











AAI

onap-aai

model-loader-service

8080

30210











8443

30229











aai-service

8080

30232











8443

30233











APPC

onap-appc

dgbuilder

3000

30228











sdnhost

8282

30230











1830

30231











CLAMP




30295











CLI




30260











CONSUL

onap-consul

consul-server 

8500

30270











8301

30271











DCAE




30236














30237














30238














30239














30240














30245











LOG

onap-log

kibana

5601

30253











elasticsearch

9200

30254











MR

onap-message-router

dmaap

3905

30226











3904

30227











MOCK




30288











MSB

onap-msb

msb-iag

80

30080











msb-discovery 

10081

30081











msb-eag 

80

30082











msb-consul 

8500

30500











MSO

onap-mso 

mso

9990

30222











8080

30223











3905

30224











3904

30225











8787

30250











mariadb

3306

30252











Multicloud




30291














30292














30293














30294











POLICY

onap-policy

brmsgw

9989

30216











drools

6969

30217











pap

9091

30218











8443

30219











pdp

8081

30220











PORTAL

onap-portal

vnc-portal 

6080

30211











5900

30212











portalapps

8006

30213











8010

30214











8989

30215











ROBOT

onap-robot

robot

88

30209











SDC

onap-sdc 

sdc-be

8443

30204











8080

30205











sdc-fe 

8181

30206











9443

30207











SDNC

onap-sdnc

sdnc-portal

8843

30201











sdnhost

8282

30202











8201

30208











sdnc-dgbuilder

3000

30203











UUI




30298











VFC




30296














30403














30410














30411














30480














30482














30483














30484














30801














30802














30803














30804














30806











VID

onap-vid

vid-server

8080

30200











VNFSDK




30297












Portal Platform

Service NameDescriptionService TypeversionURLCstomized  PathPublished URLVisual RangeLB MethodPortEnable SSL
 portalRESTful service provided by Portal Platform


api2

/

N/A/api/portal/v2/InternalRound robin8989


Usecase UI

...