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 inThis anproperty abstractdescribes wayfor toa theparticular networkExtCpd orinstance multiple networks that what theservice ExtCpdit shallexposes. be exposed on (ex: OAM, EndUser, backhaul, LI, etc) 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 container requiredimplementation tospecific berequirements configuredon for this extCpd required:the falseNetworkAttachmentDefinition typerequired: datatype.paramMappingsfalse type: tosca.datatypes.asd.networkInterfaceRequirements resourceMappinginput_param_mappings: description: > Kubernetes API resource name for the resource manifest for the serviceInformation on what helm chart input parameters that are required to be configured for this extCpd 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 in "trunk mode", the Cp is capable of carrying traffic for several VLANs. description: "Describes the datatype for network interface requirements" properties: trunk_mode: description: > Absence of this property implies that trunkMode is notInformation configuredabout forwhether the CP instantiated from this Cp i.e.is Itin is equivalent to boolean value "false". required: false type: boolean ipam: description: >Trunk mode (802.1Q or other). When operating in "trunk mode", the Cp is capable of carrying traffic for several VLANs. The default value ("infraProvided") means that the CNI specifies how IPAMAbsence of this property implies that trunkMode is donenot configured and assigns for the IP address Cp i.e. It is equivalent to theboolean podvalue interface"false". required required: falsetrue type: stringboolean constraintsdefault: false ipam: - valid_values: ["infraProvided", "orchestrated", "userManaged"] description: > interfaceType: Identifies whether application expects IP address assignment description:to >be This attribute is applicable for passthrough andmanaged memifby interfaces.the cluster infrastructure (CNI IPAM plugin), or The default value is ”kernel.netdev”. configured by required: false orchestrator via for example helm input parameter, or if IP assignment is handled by the application itself. required: true type: string constraints: - valid_values: ["kernel.netdevinfraProvided", "direct.userdriverorchestrated", "direct.kerneldriver", "direct.bond", "userspace"] userManaged"] default: "infraProvided" interfaceOptioninterface_type: description: > ThisIndicates attributewhat istype applicableof fornetwork passthroughinterface andthe memifapplication interfacesexpects. Kernel Thebased virtual defaultnetdev valuebased is ”kernel.netdev”. required: falseon CNIs such as ovs | bridge | type: list macvlan | ipvlan, or PCIe entry_schema: dev directly visible in application type: string namespace with kernel or userspace driver or bonded with the Bond constraints: CNI, or userspace-CNI based network - valid_values: [“virtio", "memif“]interface interfaceRedundancy: description: > (requires DPDK-OVS/VPP vSwitch). required: true Default value is "infra-provided”, which means that the infrastructure is expected to provide type: string constraints: - network redundancy for the pod interface. Value "none" means that the application has no valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"] default: "kernel.netdev" interface_option: description: > requirement on network redundancy. Value ”matedPair” means thatThis theattribute Poddescribes asksverified forrealization aoptions matedfor pairthe network ofinterface non-redundant left/right network attachments (typically SRIOV) and handles redundancy onin question. Currently listed options (virtio applicationand level.memif) Theare sameapplicable setfor ofthe networks shall be configured on both interfaces. interfaceType “userspace”. required: false type: stringlist constraintsentry_schema: - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] nicOptionstype: string constraints: - valid_values: [“virtio", "memif“] interface_redundancy: description: > nics a direct user space driver the application is verified to work with. Allowed values from ETSI registry. required: falseIdentifies switch-plane redundancy method the application uses, and that node infrastructure is required to comply with. type: list "infraProvided", “left” and entry_schema: “right”: The container sees a type: string | ||||
Code Block | ||||
| ||||
data_types: paramMappings: version: 1.0 description: "Describes the datatype for parameter mapping" properties: ipAddressParameter: description: > When present, this attribute specifies the name of the deployment artifact input parameter 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 throughof whichvnics theconnecting orchestratorto can configure the IP address(es), ipv4 and/or IPv6, for this same network, but where one vNIC connects asdExtCpd. The param name and provided IP address valuevia willleft beswitch passedplane toand the deployment other via right switch plane, and toolwhere the whenapplication deployingmanages the DeploymentArtifactsredundancy. required: false type"activePassiveBond": string nadName:the application bonds with move of MAC address. description: > "activeActiveBond“: bonded left/right links Thesemust attributesbe specifies,part for an asdExtCpd respesenting of a secondarymulti-chassis networkLAG interface, "activePassiveL3": the name(s) of the deployment artifact input parameters through which the orchestrator application will move application IP address between the vNICs. can configure"activeActiveL3": the correspondingapplication network annotation in the pod manifest with references uses anycast/ECMP. required: true type: string 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 constraints: - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] default: "infraProvided" nadNamespace nic_options: description: > These attributes specifies,Identifies for anthe asdExtCpddirect.userdriver respesentinginterface atype, secondary network interface,the physical nics the name(s) of the deployment artifact input parameters through which the orchestrator driver is verified to work with. Allowed values for nic types must be canhandled configurevia thea correspondingregistry networkor annotationbe instandardized. the pod manifest with required: references false type: list 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 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
| ||||||
Code Block | ||||||
| ||||||
data_types: enhancedClusterCapabilities: version: 1.0 description: "Describes the datatype for parameter mapping" properties: id: description: "Asd local unique name for the enhanceClusterCapabilities instance" required: true configure the loadbalancerIP parameter of the K8s type:service string minKernelVersion: description: "Describes theor minimalingress requiredcontroller Kernelthat version, e.g. 4.15.0. Coded as displayed by linux command uname –r" the extCpdData represents. Note: The required:format true of the Content strings is specific for each type:different string requiredKernelModules: description:orchestration >templating technology used Required kernel modules are coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. required: false type: list(Helm, Teraform, etc.). Currently only a format for use with Helm charts is suggested: "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>". entry_schema: Whether the optional parts of the format are type:present stringdepends on how the conflictingKernelModules: description: > parameter is declared Kernelin modules,the whichhelm mustchart. notAn beexample presentis: in the target environment. "chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.LBIP". The kernel modules are coded as listedrequired: byfalse linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. type: string external_IPs: Example description: Linux> kernel SCTP module, which would conflict with use of proprietary user space When present, this attribute specifies the name of the deployment SCTP stack provided by the application. required: false artifact input parameter through which the orchestrator can type: list entry_schema: configure the extermalIPs parameter of the K8s service or type: string ingress requiredCustomResources: description: > controller, or the pod network interface annotation, Listthat the required CRDs and their versions in the target environment. extCpdData represents. The list shall include those CRDs which areNote: notThe deliveredformat withof the application.Content strings is specific for each required:different false type: list orchestration templating technology entry_schema: used (Helm, Teraform, etc.). type: map Currently only a format for use with Helm charts is entry_schemasuggested: description: kind: "Redis", apiVersion: "kubedb.com/v1alpha1" "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>". Whether the optional parts of the format are present depends on how the type: string clusterLabels: parameter is description: >declared in the helm chart. An example is: This attribute allows to associate arbitrary labels to clusters. "chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.extIP". required: false These can indicatetype: speciallist infrastructure capabilities (e.g., NW acceleration, GPGPU compute, etc.). 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
required: false
type: list
entry_schema:
type: string
required_plugin:
description: a list of the name of the required K8s plugin
required: false
type: list
entry_schema:
type: tosca.datatypes.asd.requiredPlugin |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.customResourceRequirement: version: 0.1 derived_from: tosca.datatypes.Root description: > kind: The intent of these labels is to serve as a set of values that can help in application placement decisions. "Redis", apiVersion: "kubedb.com/v1alpha1" properties: kind: This can be specified with the attribute description: "the name of the custom resource requirement" type: string -m: Mandatory, means deployment is not attempted if such supportrequired: istrue not available in the target system api_version: -p: As preference - it meansdescription: orchestrator"the willapi tryversion toof selectthe acustom systemresource withrequirement" specific requirements, type: string but if not foundrequired: true |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.requiredPlugin: version: 0.1 derived_from: tosca.datatypes.Root it will attempt deployment in a system not having such HW. required: false description: "the required type:K8s listplugin" properties: entry_schema: name: type: string requiredPodAnnotations: description: "the name of the description:required >K8s plugin" Annotationstype: required to be supported.string Example that list requirement for Kubernetes cluster infrastructure support for the Multus network attachment annotationsrequired: true version: requiredPodAnnotations: {"k8s.v1.cncf.io/networks", ... } required: false type: list description: "the version of the required K8s plugin" entry_schema:type: string typerequired: string true |