Versions Compared

Key

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

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

NOTE: This is the discussion version of the Application Service Descriptor (ASD) onboarding IM. Please, refer to the released version 1.0 in the "Clean" wiki subfolder. 

Introduction:

In today, many complex applications are consisting in a mixed, complex workload, that is described in many Kubernetes resources, e.g. to be run on a certain cluster, etc.  In order to deploy the application, the orchestration task would be requiring dealing with different abstract layers of resources, different templates system mapping, and application packaging.  Another challenge is to keep up with changes in the cloud infrastructures features enhancement mapping into abstract resource template.

...

Attribute

Qualifier

#

Content

Description

deploymentItemId

M

1

Identifier

The identifier of this deployment item

artifactType

M

1

String

Specifies the artifact type. One of following values can be chosen: "helm_chart", "helmfile", "crd", "terraform"

artifactId

M

1

String

Reference to a DeploymentArtifact. It can refer to URI or file path. 

deploymentOrder

M

0..1

Integer

Specifies the deployment stage that the DeploymentArtifact belongs to. A lower value specifies that the DeploymentArtifact belongs to an earlier deployment stage, i.e. needs to be installed prior to DeploymentArtifact with higher deploymentOrder values. If not specified, the deployment of the DeploymentArtifact can be done in arbitrary order and decided bu by the orchestrator.

lifecycleParameters

M

0..N

String

The list of parameters that can be overridden at deployment time (e.g., the list of parameters in the values.yaml which can be overridden at deployment time)in the values.yaml which can be overridden at deployment time)

Note 1: All cloud native CNF resource IM is specified by particular cloud native specifications. K8s document is an example.

asdExtCpd Information Element

AttributeQualifierCardinalityContentDescription
idM1StringThe identifier of this extCpdData
descriptionM1StringDescribes the service exposed.
virtualLinkRequirementM1..NStringRefers in an abstract way to the network or multiple networks that the ExtCpd shall be exposed on (ex: OAM, EndUser, backhaul, LI, etc). The intent is to enable a network operator to take decision on to which actual VPN to connect the extCpd to. NOTE 1.
networkInterfaceRealizationRequirementsM0..1datatype.networkInterfaceRealizationRequirementsDetails container implementation specific requirements on the NetworkAttachmentDefinition to . See NOTE 2 & 3.
inputParamMappingsM0..1datatype.extCpd.ParamMappingsInformation on what parameters that are required to be provided to the deployment tools for the asdExtCpd instance.
resourceMappingM0..1StringKubernetes API resource name for the resource manifest as specified e.g. in helm.chart for the service, ingress or pod resource declaring the network interface. Enables, together with knowledge on namespace, the orchestrator to lookup the runtime data related to the extCpd.

NOTE 1: Corresponds more or less to a virtual_link requirement in ETSI NFV SOL001.
NOTE 2: Applies only for ExtCpds representing secondary network interfaces in a pod.
NOTE 3: Several ExtCpd may refer to same additional network interface requirements.

networkInterfaceRealizationRequirements Information Element

AttributeQualifierCardinalityContentDescription
trunkModeM0..1”false” | ”true”If not present or  set to”false”, means that this interface shall connect to single network. If set to ”true” then the network interface shall be a trunk interface (connects to multiple VLANS).
ipamM0..1"infraProvided", "orchestrated", "userManaged"The default value ("infraProvided") means that the CNI specifies how IPAM is done and assigns the IP address to the pod interface. 
interfaceType​M0..1

"kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace

This attribute is applicable for passthrough and memif interfaces. Value default value is ”kernel.netdev”.​ 
interfaceOptionsM0..N

"virtio",
"memif"

Alternative vNIC configurations the network interface is verified to work with.

interfaceRedundancyM0..1"infraProvided", "activePassiveBond", "activeActiveBond", "activePassiveL3", "activeActiveL3",
 ”bondCni”,
"Left", "Right"

”infraProvided” means that the application sees one vNIC but that the infrastruture provides redundant access to the network via both switch planes. ”Left” and ”right” indicates a vNIC connected non-redundantly to the network via one specific (left or right) switchplane. All other attributes indicates a mated vNIC pair in the Pod, one connecting to the network via left switchplane and the other connecting to the network via the right switchplane, and with application using them together as a redundant network interface using a particular redundancy method that need to be accomodated in the node infrastructure.
"activeActiveBond": The bonded left/right links must be part of a multi-chassis LAG in active-active mode
"activePassiveBond": Interfaces bonded in active-passive mode in the application with move of bond MAC address. No specific requirements on DC fabric.
"activePassiveL3":  Move of application IP address
"activeActiveL3": Anycast/ECMP
”bondCni” ; the mated pair network interfaces are used via a 3rd bond cni based network interface.

nicOptionsM0..N"examples": ["i710", "mlx-cx5v"]

nics a direct user space driver the application is verified to work with. Allowed values from ETSI registry.


datatype.ExtCpd.ParamMappings Information Element

AttributeQualifierCardinalityContentDescription
loadbalancerIPM0..1String

When present, this attribute specifies the name of the deployment artifact input parameter through which the orchestrator can configure the loadbalancerIP parameter of the K8s service or ingress controller that the ExtCpd represents.

Note 2

externalIPsM0..NString

When present, this attribute specifies the name of the deployment artifact input parameter through which the orchestrator can configure the extermalIPs parameter of the K8s service or ingress controller, or the pod network interface annotation, that the ExtCpd represents. The param name and provided IP address(es) value will be passed to the deployment tool when deploying the DeploymentArtifacts

Note 2

nadNamesM0..N

StringNote 1,
Note 2, Note 3

These attributes specifies, for an ExtCpd respesenting a secondary network interface, the name(s) of the deployment artifact input parameter(s) through which the orchestrator can provide the names of the network attachment definitions (NADs) the orchestrator has created as base for the network interface the ExtCpd represents.
It is expected that the NADs themselves have been created prior to the deployment of the deployment artifacts.

Note 1,2,3

nadNamespaceM0..1String

Specifies, for an ExtCpd respesenting a secondary network interface, the name of the deployment artifact input parameter through which the orchestrator can provide the namespace where the NADs are located.
Attribute may be omitted if the namespace is same as the application namespace. 

Note 2

Note 1: When the ExtCpd represent a networkRedundant/mated-pair of sriov interfaces, there are references to 2 or 3 related NADs needed to be passed, while for other interface types only one NAD reference is needed to be passed.

Note 2: The format of the Content strings is specific for each different orchestration templating technology used (Helm, Teraform, etc.). Currently only a format for use with Helm charts is suggested: "helmchartname<helmchartname>:[<subchartname>.]0..N[<parentparamname>.]0..N[<paramname>]”. Whether the optional parts of the format are present depends on how the parameter is declared in the helm chart. An example is: "chartName:subChartName1subChart1.subChartName2subChart2.subChartName3subChart3.ParentParamName1Parent1.ParentParamName2Parent2.ParentParamName3Parent3.paramNameparameter".

Note 3:  A direct attached (passthrough) network interface, such as an sriov interface, attaches to a network via only one of the two switch planes in the infrastructure.
When using a direct attached network interface one therefore commonly in a pod uses a mated pair of sriov network attachments, where each interface attaches same network but via different switchplane.
The application uses the mated pair of network interfaces as a single logical “swith-path-redundant” network interface – and this is represented by a single ExtCpd. 
Also there is a case where a third “bond” attachment interface is used in the pod, bonding the two direct interfaces so that the application do not need to handle the redundancy issues – application just uses the bond interface.
In this case all three attachments are together making up a logical “switch-path-redundant” network interface represented by a single ExtCpd. When three NADs are used in the ExtCpd the NAD implementing the bond attachment interface is provided through the parameter indicated in the third place in the nadNames attribute.

...