Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.extCpdData: version: 0.1.0 derived_from: tosca.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 shall bewhat exposedservice 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: > Details container implementation specific are required to be configured for this extCpdrequirements on the NetworkAttachmentDefinition required: false type: datatype.paramMappingstosca.datatypes.asd.networkInterfaceRequirements resourceMappinginput_param_mappings: description: > KubernetesInformation APIon resourcewhat namehelm forchart theinput resourceparameters manifest for the servicethat are required to be configured for this extCpd required: false type: string | ||||
Code Block | ||||
title | tosca. | datatypedatatypes.asd. | networkInterfaceRequirements||
collapse | true | networkInterfaceRequirements: paramMappings derived resource_from: tosca.datatypes.Root mapping: version: 1.0 description: "Describes> the datatype for network interface requirements" properties: Kubernetes API resource name for the trunkMode: resource manifest for description: >the 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 of carrying traffic for several VLANs. interface requirements" 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 IP address to the pod interface.not configured required: false type: string for the Cp i.e. It is equivalent to boolean value "false". constraints 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 This attribute is applicable for passthrough and memif interfaces. type: string constraints: - The default value is ”kernel.netdev”. required: false type: listvalid_values: ["infraProvided", "orchestrated", "userManaged"] default: "infraProvided" interface_type: entry_schema:description: > Indicates what type of network interface the type:application stringexpects. Kernel based constraints: virtual netdev based on CNIs such as ovs | bridge | - valid_values: [“virtio", "memif“] macvlan interfaceRedundancy: | ipvlan, or PCIe dev directly visible in description: >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: of non-redundant left/right network attachments (typically SRIOV) and handles redundancy on - valid_values: ["kernel.netdev", "direct.userdriver", "direct.kerneldriver", "direct.bond", "userspace"] default: "kernel.netdev" interface_option: description: > application level. The same set of networks shall be configured on both interfaces. required: false This attribute describes verified realization options for the network interface in type: string question. Currently listed options constraints: (virtio and memif) - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] nicOptions:are applicable for the interfaceType “userspace”. required: false descriptiontype: >list nicsentry_schema: a direct user space driver the application is verified to work with. Allowed valuestype: fromstring ETSI registry. required: false type: listconstraints: entry_schema: - valid_values: [“virtio", type: string | ||||
Code Block | ||||
| ||||
paramMappings"memif“] interface_redundancy: version: 1.0 derived_fromdescription: tosca.datatypes.Root> description: "Describes the datatype for parameter mapping" properties: ipAddressParameter: Identifies switch-plane redundancy method the application uses, description: > and that node infrastructure is required to When present, this attribute specifies the name of the deployment artifact input parameter comply with. "infraProvided", “left” and “right”: The container sees a through which the orchestrator can configure the IP address(es), ipv4 and/or IPv6, for this single vNIC that a) the infrastructure bonds over both switchplanes asdExtCpd. The param name and providedor IPb) addressthat value will be passedis connected to the deploymentnetwork via only left or tool when deployingright the DeploymentArtifactsswitchplane. required: false type: string The other nadName:cases are for a mated pair of vnics connecting description:to > These attributes specifies, for an asdExtCpdsame respesentingnetwork, abut secondarywhere networkone interface,vNIC connects via left the name(s) ofswitch plane and the deploymentother artifactvia inputright parametersswitch through which the orchestrator plane, and can configurewhere the corresponding network annotation inapplication manages the pod manifest with references redundancy. "activePassiveBond": to the NAD(s) to be used for creating the network interface.It is expected that the NADs application bonds with move of MAC address. "activeActiveBond“: bonded left/right links must themselvesbe havepart beenof createda priormulti-chassis toLAG the deployment of the deployment artifacts. required: false type: string nadNamespace: "activePassiveL3": application will move application IP address between the vNICs. description: > These attributes specifies, for an asdExtCpd respesenting a secondary network interface, "activeActiveL3": the application uses anycast/ECMP. required: true type: string the name(s) of theconstraints: deployment artifact input parameters through which the orchestrator - valid_values: ["infraProvided", "actPassBond", "actActBond", "actPassL3", "actActL3", "Left", "Right"] can configure the corresponding network annotation in the pod manifest with references default: "infraProvided" nic_options: description: > Identifies tofor the NAD(s) to be used for creating the network interface.It is expected that the NADs direct.userdriver interface type, the physical nics the driver is verified to work with. Allowed themselvesvalues for havenic beentypes createdmust priorbe tohandled thevia deploymenta ofregistry theor deploymentbe artifactsstandardized. required: false type: string | ||||
Code Block | ||||
| ||||
enhancedClusterCapabilities:list entry_schema: type: string |
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
tosca.datatypes.asd.paramMappings: version: 0.1.0 derived_from: tosca.datatypes.Root description: "Describes the datatype for parameter mapping" properties: minKernelVersionloadbalancer_IP: description: "Describes> the minimal required Kernel version, e.g. 4.15.0. Coded as displayed by linux command uname –r" required: trueWhen present, this attribute specifies the name of the deployment type: string artifact requiredKernelModules: input parameter through which the orchestrator can description: > Required kernel modules are codedconfigure the asloadbalancerIP listedparameter byof linuxthe lsmodK8s command, e.g. ip6_tables, cryptd, nf_nat etc. required: false type: listservice or ingress controller that the extCpdData represents. entry_schema: Note: The format of the Content strings is specific for type:each stringdifferent conflictingKernelModules: description: > orchestration templating technology used Kernel modules, which must not be present in the target environment. (Helm, Teraform, etc.). Currently only a format for use with TheHelm kernelcharts modulesis aresuggested: coded as listed by linux lsmod command, e.g. ip6_tables, cryptd, nf_nat etc. "<helmchartname>:[<subchartname>.]^(0..N)[<parentparamname>.]^(0..N)<paramname>". Example: LinuxWhether kernelthe SCTPoptional module,parts whichof wouldthe conflictformat withare usepresent ofdepends proprietaryon userhow spacethe SCTP stackparameter providedis bydeclared in the helm application.chart. An example is: required: false type: list"chartName:subChart1.subChart2.subChart3.Parent1.Parent2.Parent3.LBIP". entry_schemarequired: false type: string requiredCustomResourcesexternal_IPs: description: > When present, this attribute specifies the Listname of the customdeployment resource kinds required to be supported in the target environment. artifact input parameter through which the orchestrator can The list shall include those custom resource kinds which are not delivered withconfigure the application. required: falseextermalIPs parameter of the K8s service or ingress type: list controller, or entry_schema: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). type: tosca.datatypes.asd.CustomResourceRequirement clusterLabels: description: > This attribute allows to associate arbitrary labels to clusters. Example: These can indicate special infrastructure capabilities (e.g., NW acceleration, GPGPU compute, etc.). ClusterLabels The intent of these labels is to serve as a set of values that can help in application placement decisions. - feature.node.kubernetes.io/cpu-cpuid.AESNI: true required: false type: list This can beentry_schema: specified with the attribute type: string -mrequired_plugin: Mandatory, means deployment is not attempted ifdescription: sucha supportlist isof notthe availablename inof the required targetK8s systemplugin required: false -p: As preference - it means orchestrator will try to select a system with specific requirements, type: list entry_schema: type: tosca.datatypes.asd.requiredPlugin |
Code Block | ||||
---|---|---|---|---|
| ||||
tosca.datatypes.asd.customResourceRequirement: version: 0.1 but if not found it will attempt deployment in a system not having such HW. derived_from: tosca.datatypes.Root description: > required: false kind: "Redis", type: listapiVersion: "kubedb.com/v1alpha1" properties: entry_schema: kind: type: string requiredPodAnnotations: description: "the name of the custom description: > resource requirement" Annotationstype: required to be supported.string Example thatrequired: listtrue requirement for Kubernetes cluster infrastructure support for the Multus network attachment annotationsapi_version: requiredPodAnnotationsdescription: {"k8s.v1.cncf.io/networks", ... } required: false type: list entry_schema:"the api version of the custom resource requirement" type: string typerequired: stringtrue |
Code Block | ||||
---|---|---|---|---|
| ||||
customResourceRequirementtosca.datatypes.asd.requiredPlugin: version: 0.1.0 derived_from: tosca.datatypes.Root description: "the required K8s plugin" properties: description: > name: kind: "Redis", apiVersiondescription: "kubedb.com/v1alpha1" properties: the name of the required K8s plugin" type: string kind: required: true type: string version: required: true description: "the version of the required K8s apiVersion: plugin" type: string required: true |
...