Code Block | ||||
---|---|---|---|---|
| ||||
data_typestosca.datatypes.asd.extCpdData: extCpdData: version: 0.1 versionderived_from: 1.0tosca.datatypes.Root description: "Describes the datatype for external connection point definition data" properties: id: description: "The identifier of this extCpdData" required: true type: string virtualLinkRequirementdescription: description: > Refers in anThis abstractproperty waydescribes tofor thea networkparticular orExtCpd multipleinstance networks that the ExtCpd shallwhat beservice exposed on (ex: OAM, EndUser, backhaul, LI, etc)it exposes. required: true type: string networkInterfaceRequirements: virtual_link_requirement: description: > DetailsRefers containerin implementationan specificabstract requirementsway onto the network or multiple networks that the NetworkAttachmentDefinition the ExtCpd shall required:be false exposed on (ex: OAM, EndUser, backhaul, LI, etc) type: datatype.networkInterfaceRequirements inputParamMappingsrequired: true descriptiontype: > string Information on what helm chart input parameters that network_interface_realization_requirements: description: > areDetails requiredcontainer toimplementation bespecific configuredrequirements for thison extCpd the NetworkAttachmentDefinition required: false type: datatype.paramMappingstosca.datatypes.asd.networkInterfaceRequirements resourceMappinginput_param_mappings: description: > Information on what helm chart input parameters that Kubernetes API resource nameare forrequired theto resourcebe manifestconfigured for thethis serviceextCpd required: false type: string | ||||
Code Block | ||||
| ||||
data_types: networkInterfaceRequirements: tosca.datatypes.asd.paramMappings version: 1.0resource_mapping: description: "Describes the datatype fordescription: network> interface requirements" properties: Kubernetes API trunkMode: resource name for the resource manifest for the description:service, > ingress controller or pod Information about whether therequired: CPfalse instantiated from this Cp is in Trunk type: string |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.networkInterfaceRequirements:mode (802.1Q or other). derived_from: tosca.datatypes.Root version: 0.1 When operating indescription: "trunkDescribes mode", the Cpdatatype isfor capablenetwork ofinterface carryingrequirements" traffic for several VLANs. properties: trunk_mode: description: Absence> of this property implies that trunkMode is not configured for the Cp i.e. Information about whether the CP instantiated from this Cp is It is equivalent to boolean value "false". required: false in Trunk type: boolean ipam:mode (802.1Q or other). When operating in "trunk mode", description: > the Cp is Thecapable defaultof value ("infraProvided") means that the CNI specifies how IPAM is done and assigns carrying traffic for several VLANs. Absence of this property implies that trunkMode theis IPnot address to the pod interface. configured required: false type: string for the Cp i.e. It is equivalent constraints: to boolean value "false". required: true type: boolean - valid_values: ["infraProvided", "orchestrated", "userManaged"] default: false interfaceTypeipam: description: > ThisIdentifies attributewhether isapplication applicableexpects forIP passthroughaddress andassignment memifto interfaces.be The default value is ”kernel.netdev”.managed by the cluster infrastructure (CNI IPAM plugin), or required: false type:configured string by orchestrator via for example helm input parameter, constraints: - valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"] interfaceOption: description: > or if IP assignment is handled by the application itself. required: true type: string This attribute is applicable for passthrough and memif interfaces. constraints: - valid_values: The default value is ”kernel.netdev”. required: false type: list["infraProvided", "orchestrated", "userManaged"] default: "infraProvided" interface_type: entry_schemadescription: > Indicates what type of type: stringnetwork interface the application expects. Kernel based constraints: virtual netdev based on CNIs such as ovs | bridge | - valid_values: [“virtio", "memif“] interfaceRedundancy: macvlan | ipvlan, or PCIe dev directly visible description:in >application Default value is "infra-provided”, which meansnamespace thatwith thekernel infrastructureor isuserspace expecteddriver toor providebonded with the Bond network redundancy forCNI, theor pod interface. Value "none" means that the application has no userspace-CNI based network interface (requires DPDK-OVS/VPP vSwitch). requirement required: ontrue network redundancy. Value ”matedPair” meanstype: thatstring the Pod asks for a mated pair constraints: - valid_values: of non-redundant left/right network attachments (typically SRIOV) and handles redundancy on ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"] default: "kernel.netdev" interface_option: description: > application level. The same set of networks shallThis beattribute configureddescribes onverified bothrealization interfaces.options for the required: false type:network string interface in question. Currently listed options constraints: - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] nicOptions:(virtio and memif) are applicable for the interfaceType “userspace”. required: false descriptiontype: > list nics aentry_schema: direct user space driver the application is verified to work with. Allowed values from ETSI registry. type: string required: false typeconstraints: list entry_schema: type: string - valid_values: [“virtio", "memif“] interface_redundancy: description: > Identifies switch-plane redundancy method the application uses, and that node infrastructure is required to comply with. "infraProvided", “left” and “right”: The container sees a single vNIC that a) the infrastructure bonds over both switchplanes or b) that is connected to the network via only left or right the switchplane. The other cases are for a mated pair of vnics connecting to same network, but where one vNIC connects via left switch plane and the other via right switch plane, and where the application manages the redundancy. "activePassiveBond": the application bonds with move of MAC address. "activeActiveBond“: bonded left/right links must be part of a multi-chassis LAG "activePassiveL3": application will move application IP address between the vNICs. "activeActiveL3": the application uses anycast/ECMP. required: true type: string constraints: - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] default: "infraProvided" nic_options: description: > Identifies for the direct.userdriver interface type, the physical nics the driver is verified to work with. Allowed values for nic types must be handled via a registry or be standardized. required: false type: list entry_schema: type: string |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
tosca.datatypes.asd.paramMappings:
version: 0.1
derived_from: tosca.datatypes.Root
description: "Describes the datatype for parameter mapping"
properties:
loadbalancer_IP:
description: >
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 extCpdData represents.
Note: 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>:[<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:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.LBIP".
required: false
type: string
external_IPs:
description: >
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
extCpdData represents.
Note: 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>:[<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:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.extIP".
required: false
type: list
entry_schema:
type: string
nad_names:
description: >
Specifies, for an extCpdData 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 extCpdData represents.
Note 1: When the extCpdData 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>:[<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:"subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.nadName".
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 extCpdData.
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 extCpdData.
When three NADs are used in the extCpdData the NAD implementing the bond attachment
interface is provided through the parameter indicated in the third place in
the nadNames attribute.
required: false
type: list
entry_schema:
type: string
nad_namespace:
description: >
Specifies, for an extCpdData respesenting a secondary network interface,
the name of the deployment artifact input parameter through which the orchestrator
can provide the namespace where the NetworkAttachmentDefinitions (NADs) are located.
Attribute may be omitted if the namespace is same as the application
namespace.
Note: 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>:[<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:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.NameSpace".
required: false
type: string |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.enhancedClusterCapabilities:
version: 0.1
derived_from: tosca.datatypes.Root
description: "Describes the datatype for parameter mapping"
properties:
min_kernel_version:
description: >
Describes the minimal required Kernel version, e.g. 4.15.0.
Coded as displayed by linux command uname –r
required: true
type: string
required_kernel_modules:
description: >
Required kernel modules are coded as listed by linux lsmod command,
e.g. ip6_tables, cryptd, nf_nat etc.
required: false
type: list
entry_schema:
type: string
conflicting_kernel_modules:
description: >
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.
required: false
type: list
entry_schema:
type: string
required_custom_resources:
description: >
List the custom resource kinds required to be supported in the target
environment. The list shall include those custom resource kinds which
are not delivered with the application.
required: false
type: list
entry_schema:
type: tosca.datatypes.asd.customResourceRequirement
cluster_labels:
description: >
This attribute allows to associate arbitrary labels to clusters.
These can indicate special infrastructure capabilities (e.g., NW acceleration,
GPU compute, etc.). The intent of these labels is to serve as a set of
values that can help in application placement decisions.
clusterLabels follow the Kubernetes label key-value-nomenclature
(https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/).
It is recommended that labels follow a standardized meaning e.g. for node
features (https://kubernetes-sigs.github.io/node-feature-discovery/v0.9/get-started/features.html#table-of-contents).
Example:
ClusterLabels
- feature.node.kubernetes.io/cpu-cpuid.AESNI: true | ||||
Code Block | ||||
| ||||
data_types: paramMappings: version: 1.0 description: "Describes the datatype for parameter mapping" properties: ipAddressParameter: descriptionrequired: >false When present, this attribute specifies the name of the deployment artifact input parameter type: list entry_schema: throughtype: whichstring 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 required_plugin: description: a list of the name of the required K8s plugin required: false type: list entry_schema: tool when deploying the DeploymentArtifacts.type: tosca.datatypes.asd.requiredPlugin |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.customResourceRequirement: required: false type: string nadName:version: 0.1 derived_from: tosca.datatypes.Root description: > These attributes specifies, for an asdExtCpd respesenting a secondary network interface,kind: "Redis", apiVersion: "kubedb.com/v1alpha1" properties: kind: 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 description: "the name of the custom resource requirement" type: string required: true api_version: to the NAD(s) to be used for creating the network interface.It is expected that the NADs themselves have been created prior to the deployment of the deployment artifacts. required: false type: string nadNamespace: description: "the api version of the custom resource requirement" type: string required: true |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.requiredPlugin: version: 0.1 description: > These attributes specifies, for an asdExtCpd respesenting a secondary network interface, derived_from: tosca.datatypes.Root description: "the required K8s plugin" the name(s) of the deployment artifact input parameters through which the orchestrator properties: name: can configure description: "the correspondingname networkof annotation in the podrequired manifest with references K8s plugin" type: string to the NAD(s) to be used for creating the network interface.It is expected that the NADs required: true version: themselves have been created prior todescription: "the deploymentversion of the deploymentrequired artifacts.K8s plugin" required: false type: string required: true |