...
The initial attributes essentially describe the application – a unique identifier, a schema version (that enables versioning the data model of the descriptor itself), and basic metadata, like application name and version and human-readable descriptive fields.
The next two attributes “extraServiceRequirement” and “enhancedClusterCapabilities” attribute "asdExtCpd" will be used for multi-app or multi-cloud orchestration – a description of exposed exposing endpoints (to enable orchestrators to string together or optimally place linked applications), and two fields that list extra capabilities required from clusters.
The attributes “enhancedClusterCapabilities” will be used for multi-app or multi-cloud orchestration.
Finally, “deploymentItems” is a list of deployment items, i.e. Helm Charts, that together can deploy an application. The table below shows the information element of these deployment item descriptors.
...
asdExtCpd Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
description | M | 1 | String | Describes the service exposed. |
virtualLinkRequirement | M | 1 | String | Refers 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. |
interfaceOrder | M | 0..1 | Integer, greater or equal to zero | Mandatory attribute for a secondary network interface (not applicable for a primary network interface). Defines the order in which an the additional/secondary network interface declaration appears in the pod manifest. Note that an SRIOV mated vNIC pair shall be modelled by a single vduCp, and its order value set to the lower value of the two vNIC’s order numbers; the two vNICs are expected to appear in consecutive order on the compute instance, and be attached to same network(s). See NOTE 2 |
networkInterfaceRequirements | M | 0..1 | datatype.NetworkInterfaceRequirements | Details container implementation specific requirements on the NetworkAttachmentDefinition to . See NOTE 2 & 3. |
inputParamMappings | M | 0..1 | datatype.extCpd.ParamMappings | Information on what parameters that are required to be provided to the deployment tools for the asdExtCpd instance. |
resourceMapping | M | 0..1 | String | Kubernetes API resource name for the resource manifest 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.
NetworkInterfaceRequirements Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
trunkMode | M | 0..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). |
ipam | M | 0..1 | ”cniManaged” ”userManaged” ”inBand” | The default value (”cniManaged”) means that the CNI specifies how IPAM is done and assigns the IP address to the pod interface. Value ”user” indicates that IPAM is done via the application inside the pod. "inBand" indicates that the application expects to receive the interface configuration through protocols/procedures over the interface itself, such as DHCP, DHCPv6, SLAAC. |
interfaceType | M | 0..1 | ”kernel” | ”userspaceDpdk” | "memif" | This attribute is applicable for passthrough and memif interfaces. Value default value is ”kernel”. |
interfaceOption | M | 0..N | e.g. "speed=1G|10G|25G|100G" "nic-type=virtio|i710|mlx-cx5|" | Applicable to Pod network interfaces that directly connect to a physical NIC. The value is a list of verified options for physical NIC caracteristics. |
networkRedundancy | M | 0..1 | "infraProvided“ | "none“ | "matedPair" | Default value is "infra-provided”, which means that the infrastructure is expected to provide network redundancy for the pod interface. Value "none" means that the application has no requirement on network redundancy. Value ”matedPair” means that the Pod asks for a mated pair of non-redundant left/right network attachments (typically SRIOV) and handles redundancy on application level. The same set of networks shall be configured on both interfaces. |
switchPlane | M | 0..1 | “left” | “right” | Used (only) in conjunction with networkRedundancy "none" when the application requires two independent virtual links that for redundancy reasons have to reside on different switch planes (left or right). |
redundancyMethod | M | 0..1 | ”activePassiveBond” | ”activeActiveBond” | ”activePassiveL3” | ”activeActiveL3” | Used (only) in conjunction with networkRedundancy "matedPair". "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. |
datatype.ExtCpd.ParamMappings Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
ipAddressParameter | M | 0..1 | String | When present, this attribute specifies the name of the deployment artifact input parameter through which the orchestrator can configure the IP address(es), ipv4 and/or IPv6, for this asdExtCpd. The param name and provided IP address value will be passed to the deployment tool when deploying the DeploymentArtifacts. Note 1 |
nadName | M | 0..1 | [String]1..N, Note 2 | These attributes specifies, for an asdExtCpd respesenting a secondary network interface, the name(s) of the deployment artifact input parameters through which the orchestrator can configure the corresponding network annotation in the pod manifest with references to the NAD(s) to be used for creating the network interface. |
nadNamespace | M | 0..1 | String |
Note 1: When the asdExt Cpd represent a networkRedundant/mated-pair of sriov interfaces, there are references to 2 or 3 related NADs needed to be passed, lwhile for other interface types only one NAD reference is needed to be passed.
...
enhancedClusterCapabilities Information Element
Attribute | Qualifier | Cardinality | Content | Description |
---|---|---|---|---|
Id | M | 1 | String | Asd local unique name for the enhanceClusterCapabilities instance |
minKernelVersion | M | 1 | String | Describes the minimal required Kernel version, e.g. 4.15.0. Coded as displayed by linux command uname –r |
requiredKernelModules | M | 0..1 | List of String | Required kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. |
conflictingKernelModules | M | 0..1 | List of String | Kernel modules, which must not be present in the target environment. The kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. Example: Linux kernel SCTP module, which would conflict with use of proprietary user space SCTP stack provided by the application. |
requiredCRDs | M | 0..1 | List of String | List the required CRDs and their versions in the target environment. The list shall include those CRDs which are not delivered with the application. Example: Redis CRD, version 5.0. |
clusterLabels | M | 0..1 | List of String | This attribute allows to associate arbitrary labels to clusters. These can indicate special infrastructure capabilities (e.g., NW acceleration, GPGPU compute |
, etc.). The intent of these labels is to serve as a set of values that can help in application placement decisions. This can be specified with the attribute -m: Mandatory, means deployment is not attempted if such support is not available in the target system -p: As preference - it means orchestrator will try to select a system with specific requirements, but if not found it will attempt deployment in a system not having such HW. | ||||
secondaryInterfacePlugin | M | 0..1 | String | The plug-in name / revision of the operator to handle secondary interface (e.g. Multus-CNI, v3.8) |