1 # ================================================================================
2 # Copyright (c) 2017-2019 AT&T Intellectual Property. All rights reserved.
3 # ================================================================================
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
8 # http://www.apache.org/licenses/LICENSE-2.0
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 # ============LICENSE_END=========================================================
17 # ECOMP is a trademark and service mark of AT&T Intellectual Property.
19 tosca_definitions_version: cloudify_dsl_1_3
22 - http://www.getcloudify.org/spec/cloudify/4.2/types.yaml
26 executor: 'central_deployment_agent'
27 package_name: k8splugin
28 package_version: 1.4.6
32 dcae.types.MSBRegistration:
34 Information for registering an HTTP service into MSB. It's optional to do so,
35 but if MSB registration is desired at least the port property must be provided.
36 If 'port' property is not provided, the plugin will not do the registration.
37 (The properties all have to be declared as not required, otherwise the
38 'msb_registration' property on the node would also be required.)
41 description: The container port at which the service is exposed
45 description: The version identifier for the service
49 description: The URL path (e.g., "/api", not the full URL) to the service endpoint
53 description: Set to true if service endpoint uses SSL (TLS)
57 dcae.types.LoggingInfo:
59 Information for setting up centralized logging via ELK using a "sidecar" container.
60 If 'log_directory' is not provided, the plugin will not set up ELK logging.
61 (The properties all have to be declared as not required, otherwise the
62 'log_info' property on the node would also be required.)
66 The path in the container where the component writes its logs.
67 If the component is following the EELF requirements, this would be
68 the directory where the four EELF files are being written.
69 (Other logs can be placed in the directory--if their names in '.log',
70 they'll also be sent into ELK.)
75 Hope not to use this. By default, the plugin will mount the log volume
76 at /var/log/onap/<component_type> in the sidecar container's file system.
77 'alternate_fb_path' allows overriding the default. Will affect how the log
78 data can be found in the ELK system.
84 Information for using TLS (HTTPS). (The properties all have to be declared as not
85 required, otherwise the tls_info property on the node would also be required.)
89 The path in the container where the component expects to find TLS-related data.
94 Flag indicating whether TLS (HTTPS) is to be used
99 dcae.nodes.ContainerizedComponent:
100 # Bese type for all containerized components
101 # Captures common properties and interfaces
102 derived_from: cloudify.nodes.Root
106 description: Full uri of the Docker image
111 Application configuration for this Docker component. The data structure is
112 expected to be a complex map (native YAML) and to be constructed and filled
113 by the creator of the blueprint.
118 This is what is the auxilary portion of the component spec that contains things
119 like healthcheck definitions for the Docker component. Health checks are
125 This is used to specify the cpu and memory request and limit for container.
126 Please specify "requests" property and/or a "limits" property, with subproproperties
127 for cpu and memory. (https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)
131 type: dcae.types.LoggingInfo
133 Information for setting up centralized logging via ELK.
137 type: dcae.types.TLSInfo
139 Information for setting up TLS (HTTPS).
145 The number of instances of the component that should be launched initially
151 Set to true if the orchestrator should always pull a new copy of the image
152 before deploying. By default the orchestrator pulls only if the image is
153 not already present on the Docker host where the container is being launched.
157 dcae.interfaces.update:
159 implementation: k8s.k8splugin.scale
161 implementation: k8s.k8splugin.update_image
163 # The ContainerizedServiceComponent node type is to be used for DCAE service components that
164 # are to be run in a Docker container. This node type goes beyond that of a ordinary Docker
165 # plugin where it has DCAE platform specific functionality:
167 # * Generation of the service component name
168 # * Managing of service component configuration information
170 # The plugin deploys the container into a Kubernetes cluster with a very specific choice
171 # of Kubernetes elements that are deliberately not under the control of the blueprint author.
172 # The idea is to deploy all service components in a consistent way, with the details abstracted
173 # away from the blueprint author.
174 dcae.nodes.ContainerizedServiceComponent:
175 derived_from: dcae.nodes.ContainerizedComponent
177 service_component_type:
179 description: Service component type of the application being run in the container
184 Unique id for this DCAE service instance this component belongs to. This value
185 will be applied as a tag in the registration of this component with Consul.
191 Location id of where to run the container. Not used by the plugin. Here for backward compatibility.
195 service_component_name_override:
198 Manually override and set the name for this Docker container node. If this
199 is set, then the name will not be auto-generated. Platform services are the
200 specific use cases for using this parameter because they have static
201 names for example the CDAP broker.
205 cloudify.interfaces.lifecycle:
207 # Generate service component name and populate config into Consul
208 implementation: k8s.k8splugin.create_for_components
210 # Create Docker container and start
211 implementation: k8s.k8splugin.create_and_start_container_for_components
213 # Stop and remove Docker container
214 implementation: k8s.k8splugin.stop_and_remove_container
216 # Delete configuration from Consul
217 implementation: k8s.k8splugin.cleanup_discovery
218 dcae.interfaces.policy:
219 # This is to be invoked by the policy handler upon policy updates
221 implementation: k8s.k8splugin.policy_update
223 # This node type is intended for DCAE service components that use DMaaP and must use the
225 dcae.nodes.ContainerizedServiceComponentUsingDmaap:
226 derived_from: dcae.nodes.ContainerizedServiceComponent
230 List of DMaaP streams used for publishing.
232 Message router items look like:
239 Data router items look like:
245 This information is forwarded to the dmaap plugin to provision
249 List of DMaaP streams used for subscribing.
251 Message router items look like:
258 Data router items look like:
268 Note that username and password is optional. If not provided or null then the
269 plugin will generate them.
273 cloudify.interfaces.lifecycle:
275 # Generate service component name and populate config into Consul
276 implementation: k8s.k8splugin.create_for_components_with_streams
278 # Create Docker container and start
279 implementation: k8s.k8splugin.create_and_start_container_for_components_with_streams
281 # ContainerizedPlatformComponent is intended for DCAE platform services. Unlike the components,
282 # platform services have well-known names and well-known ports.
283 dcae.nodes.ContainerizedPlatformComponent:
284 derived_from: dcae.nodes.ContainerizedComponent
288 Container name used to register with Consul
292 Name to be registered in the DNS for the service provided by the container.
293 If not provided, the 'name' field is used.
294 This is a work-around for the Kubernetes restriction on having '_' in a DNS name.
295 Having this field allows a component to look up its configuration using a name that
296 includes a '_' while providing a legal Kubernetes DNS name.
301 Network port that the platform service is expecting to expose on the host
307 Network port that the platform service exposes in the container
311 type: dcae.types.MSBRegistration
313 Information for registering with MSB
317 cloudify.interfaces.lifecycle:
319 # Populate config into Consul
320 implementation: k8s.k8splugin.create_for_platforms
322 # Create Docker container and start
323 implementation: k8s.k8splugin.create_and_start_container_for_platforms
325 # Stop and remove Docker container
326 implementation: k8s.k8splugin.stop_and_remove_container
328 # Delete configuration from Consul
329 implementation: k8s.k8splugin.cleanup_discovery
331 # ContainerizedApplication is intended to be more of an all-purpose Docker container node
332 # for non-componentized applications.
333 dcae.nodes.ContainerizedApplication:
334 derived_from: cloudify.nodes.Root
338 description: Name of the Docker container to be given
341 description: Full uri of the Docker image
343 cloudify.interfaces.lifecycle:
345 # Create Docker container and start
346 implementation: k8s.k8splugin.create_and_start_container
348 # Stop and remove Docker container
349 implementation: k8s.k8splugin.stop_and_remove_container
350 dcae.interfaces.scale:
352 implementation: k8s.k8splugin.scale
353 dcae.interfaces.update:
355 implementation: k8s.k8splugin.update_image