summaryrefslogtreecommitdiffstats
path: root/k8s/k8splugin_types.yaml
diff options
context:
space:
mode:
Diffstat (limited to 'k8s/k8splugin_types.yaml')
-rw-r--r--k8s/k8splugin_types.yaml282
1 files changed, 282 insertions, 0 deletions
diff --git a/k8s/k8splugin_types.yaml b/k8s/k8splugin_types.yaml
new file mode 100644
index 0000000..af50e70
--- /dev/null
+++ b/k8s/k8splugin_types.yaml
@@ -0,0 +1,282 @@
+# ================================================================================
+# Copyright (c) 2017-2020 AT&T Intellectual Property. All rights reserved.
+# Copyright (c) 2020 Pantheon.tech. All rights reserved.
+# ================================================================================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# ============LICENSE_END=========================================================
+#
+
+tosca_definitions_version: cloudify_dsl_1_3
+
+plugins:
+ k8s:
+ executor: 'central_deployment_agent'
+ package_name: k8splugin
+ package_version: 3.0.0
+
+data_types:
+
+ dcae.types.LoggingInfo:
+ description: >
+ Information for setting up centralized logging via ELK using a "sidecar" container.
+ If 'log_directory' is not provided, the plugin will not set up ELK logging.
+ (The properties all have to be declared as not required, otherwise the
+ 'log_info' property on the node would also be required.)
+ properties:
+ log_directory:
+ description: >
+ The path in the container where the component writes its logs.
+ If the component is following the EELF requirements, this would be
+ the directory where the four EELF files are being written.
+ (Other logs can be placed in the directory--if their names in '.log',
+ they'll also be sent into ELK.)
+ type: string
+ required: false
+ alternate_fb_path:
+ description: >
+ Hope not to use this. By default, the plugin will mount the log volume
+ at /var/log/onap/<component_type> in the sidecar container's file system.
+ 'alternate_fb_path' allows overriding the default. Will affect how the log
+ data can be found in the ELK system.
+ type: string
+ required: false
+
+ dcae.types.TLSInfo:
+ description: >
+ Information for using TLS (HTTPS). (The properties all have to be declared as not
+ required, otherwise the tls_info property on the node would also be required.)
+ properties:
+ cert_directory:
+ description: >
+ The path in the container where the component expects to find TLS-related data.
+ type: string
+ required: false
+ use_tls:
+ description: >
+ Flag indicating whether TLS (HTTPS) is to be used
+ type: boolean
+ required: false
+
+node_types:
+ dcae.nodes.ContainerizedComponent:
+ # Base type for all containerized components
+ # Captures common properties and interfaces
+ derived_from: cloudify.nodes.Root
+ properties:
+ image:
+ type: string
+ description: Full uri of the Docker image
+
+ application_config:
+ default: {}
+ description: >
+ Application configuration for this component. The data structure is
+ expected to be a complex map (native YAML) and to be constructed and filled
+ by the creator of the blueprint.
+
+ docker_config:
+ default: {}
+ description: >
+ Copied from the auxiliary portion of the component spec that contains things
+ like healthcheck definitions for the component. Health checks are
+ optional.
+
+ resource_config:
+ default: {}
+ description: >
+ This is used to specify the cpu and memory request and limit for container.
+ Please specify "requests" property and/or a "limits" property, with subproproperties
+ for cpu and memory. (https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/)
+
+ log_info:
+ type: dcae.types.LoggingInfo
+ description: >
+ Information for setting up centralized logging via ELK.
+ required: false
+
+ tls_info:
+ type: dcae.types.TLSInfo
+ description: >
+ Information for setting up TLS (HTTPS).
+ required: false
+
+ replicas:
+ type: integer
+ description: >
+ The number of instances of the component that should be launched initially
+ default: 1
+
+ always_pull_image:
+ type: boolean
+ description: >
+ Set to true if the orchestrator should always pull a new copy of the image
+ before deploying. By default the orchestrator pulls only if the image is
+ not already present on the host where the container is being launched.
+ default: false
+
+ location_id:
+ type: string
+ description: >
+ The identifier for the location where the component is to be deployed.
+ If absent, the plugin uses its configured default location, typically the location
+ where the plugin is running (the central site). Also used to supply a location to
+ the DMaaP bus controller if the component is being provisioned as a publisher or
+ subscriber to a DMaaP feed or topic.
+ required: false
+
+ interfaces:
+ dcae.interfaces.update:
+ scale:
+ implementation: k8s.k8splugin.scale
+ update_image:
+ implementation: k8s.k8splugin.update_image
+
+ # The ContainerizedServiceComponent node type is to be used for DCAE service components.
+ #
+ # The plugin deploys the component into a Kubernetes cluster with a very specific choice
+ # of Kubernetes elements that are deliberately not under the control of the blueprint author.
+ # The idea is to deploy all service components in a consistent way, with the details abstracted
+ # away from the blueprint author. The plugin is responsible for:
+ # * Generation of the service component name
+ # * Managing of service component configuration information
+ dcae.nodes.ContainerizedServiceComponent:
+ derived_from: dcae.nodes.ContainerizedComponent
+ properties:
+ service_component_type:
+ type: string
+ description: Service component type of the application being run in the container
+
+ service_id:
+ type: string
+ description: >
+ Unique id for this DCAE service instance this component belongs to. This value
+ will be applied as a tag in the registration of this component with Consul.
+ default: Null
+
+ location_id:
+ type: string
+ description: >
+ Location id of where to run the container. Not used by the plugin. Here for backward compatibility.
+ default: Null
+ required: False
+
+ service_component_name_override:
+ type: string
+ description: >
+ Manually override and set the name for this component. If this
+ is set, then the name will not be auto-generated. Using this feature provides
+ a service component with a fixed name that's known in advance, but care must be taken
+ to avoid attempting to deploy two components with the same name. If the component
+ exposes any ports, the k8s Service created by the plugin will use service_component_name_override
+ as the DNS host name.
+ default: Null
+
+ interfaces:
+ cloudify.interfaces.lifecycle:
+ create:
+ # Generate service component name and populate config into Consul
+ implementation: k8s.k8splugin.create_for_components
+ start:
+ # Create k8s entities for the component and start
+ implementation: k8s.k8splugin.create_and_start_container_for_components
+ stop:
+ # Stop and remove k8s entities associated with the component
+ implementation: k8s.k8splugin.stop_and_remove_container
+ delete:
+ # Delete configuration from Consul
+ implementation: k8s.k8splugin.cleanup_discovery
+ dcae.interfaces.policy:
+ # This is to be invoked by the policy handler upon policy updates
+ policy_update:
+ implementation: k8s.k8splugin.policy_update
+
+ # This node type is intended for DCAE service components that use DMaaP and must use the
+ # DMaaP plugin.
+ dcae.nodes.ContainerizedServiceComponentUsingDmaap:
+ derived_from: dcae.nodes.ContainerizedServiceComponent
+ properties:
+ streams_publishes:
+ description: >
+ List of DMaaP streams used for publishing.
+
+ Message router items look like:
+
+ name: topic00
+ location: mtc5
+ client_role: XXXX
+ type: message_router
+
+ Data router items look like:
+
+ name: feed00
+ location: mtc5
+ type: data_router
+
+ This information is forwarded to the dmaap plugin to provision
+ default: []
+ streams_subscribes:
+ description: >
+ List of DMaaP streams used for subscribing.
+
+ Message router items look like:
+
+ name: topic00
+ location: mtc5
+ client_role: XXXX
+ type: message_router
+
+ Data router items look like:
+
+ name: feed00
+ location: mtc5
+ type: data_router
+ username: king
+ password: 123456
+ route: some-path
+ scheme: https
+
+ Note that username and password is optional. If not provided or null then the
+ plugin will generate them.
+
+ default: []
+ interfaces:
+ cloudify.interfaces.lifecycle:
+ create:
+ # Generate service component name, populate config into Consul, set up runtime properties for DMaaP plugin
+ implementation: k8s.k8splugin.create_for_components_with_streams
+
+ # ContainerizedApplication is intended to be more of an all-purpose Docker container node
+ # for non-componentized applications.
+ dcae.nodes.ContainerizedApplication:
+ derived_from: cloudify.nodes.Root
+ properties:
+ name:
+ type: string
+ description: Name of the Docker container to be given
+ image:
+ type: string
+ description: Full uri of the Docker image
+ interfaces:
+ cloudify.interfaces.lifecycle:
+ start:
+ # Create Docker container and start
+ implementation: k8s.k8splugin.create_and_start_container
+ stop:
+ # Stop and remove Docker container
+ implementation: k8s.k8splugin.stop_and_remove_container
+ dcae.interfaces.scale:
+ scale:
+ implementation: k8s.k8splugin.scale
+ dcae.interfaces.update:
+ update_image:
+ implementation: k8s.k8splugin.update_image