| # ============LICENSE_START========================================== |
| # =================================================================== |
| # Copyright (c) 2017 AT&T |
| # |
| # 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============================================ |
| |
| inputs: |
| |
| labels: |
| default: {} |
| |
| node_types: |
| |
| cloudify.nodes.Kubernetes: |
| derived_from: cloudify.nodes.Root |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| implementation: scripts/create.py |
| |
| cloudify.nodes.Kubernetes.Master: |
| derived_from: cloudify.nodes.Root |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| implementation: scripts/create.py |
| configure: |
| implementation: scripts/kubernetes_master/configure.py |
| start: |
| implementation: scripts/kubernetes_master/start.py |
| |
| cloudify.nodes.Kubernetes.Node: |
| derived_from: cloudify.nodes.Root |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| implementation: scripts/create.py |
| configure: |
| implementation: scripts/kubernetes_node/configure.py |
| start: |
| implementation: fabric.fabric_plugin.tasks.run_task |
| inputs: |
| tasks_file: |
| default: scripts/tasks.py |
| task_name: |
| default: label_node |
| task_properties: |
| default: |
| hostname: { get_attribute: [ SELF, hostname ] } |
| labels: { get_input: labels } |
| fabric_env: |
| default: |
| host_string: { get_attribute: [ kubernetes_master_host, ip ] } |
| user: { get_input: agent_user } |
| key: { get_secret: agent_key_private } |
| stop: |
| implementation: fabric.fabric_plugin.tasks.run_task |
| inputs: |
| tasks_file: |
| default: scripts/tasks.py |
| task_name: |
| default: stop_node |
| task_properties: |
| default: |
| hostname: { get_attribute: [ SELF, hostname ] } |
| fabric_env: |
| default: |
| host_string: { get_attribute: [ kubernetes_master_host, ip ] } |
| user: { get_input: agent_user } |
| key: { get_secret: agent_key_private } |
| delete: |
| implementation: fabric.fabric_plugin.tasks.run_task |
| inputs: |
| tasks_file: |
| default: scripts/tasks.py |
| task_name: |
| default: delete_node |
| task_properties: |
| default: |
| hostname: { get_attribute: [ SELF, hostname ] } |
| fabric_env: |
| default: |
| host_string: { get_attribute: [ kubernetes_master_host, ip ] } |
| user: { get_input: agent_user } |
| key: { get_secret: agent_key_private } |
| |
| node_templates: |
| |
| kubernetes_master: |
| type: cloudify.nodes.Kubernetes.Master |
| relationships: |
| - type: cloudify.relationships.contained_in |
| target: kubernetes_master_host |
| |
| kubernetes_node: |
| type: cloudify.nodes.Kubernetes.Node |
| relationships: |
| - type: cloudify.relationships.contained_in |
| target: kubernetes_node_host |
| - type: cloudify.relationships.depends_on |
| target: kubernetes_master |
| |
| outputs: |
| |
| kubernetes_cluster_bootstrap_token: |
| value: { get_attribute: [ kubernetes_master, bootstrap_token ] } |
| |
| kubernetes_cluster_master_ip: |
| value: { get_attribute: [ kubernetes_master, master_ip ] } |
| |
| kubernetes-admin_client_certificate_data: |
| value: { get_attribute: [ kubernetes_master, kubernetes-admin_client_certificate_data ] } |
| |
| kubernetes-admin_client_key_data: |
| value: { get_attribute: [ kubernetes_master, kubernetes-admin_client_key_data ] } |
| |
| kubernetes_certificate_authority_data: |
| value: { get_attribute: [ kubernetes_master, kubernetes_certificate_authority_data ] } |
| |
| policy_types: |
| scale_policy_type: |
| source: policies/scale.clj |
| properties: |
| policy_operates_on_group: |
| default: true |
| service_selector: |
| description: regular expression that selects the metric to be measured |
| default: ".*" |
| moving_window_size: |
| description: the moving window for individual sources in secs |
| default: 10 |
| scale_threshold: |
| description: the value to trigger scaling over aggregrated moving values |
| scale_limit: |
| description: scaling limit |
| default: 10 |
| scale_direction: |
| description: scale up ('<') or scale down ('>') |
| default: '<' |
| cooldown_time: |
| description: the time to wait before evaluating again after a scale |
| default: 60 |
| |
| groups: {} |
| |
| # scale_up_group: |
| # members: [kubernetes_node_host] |
| # policies: |
| # auto_scale_up: |
| # type: scale_policy_type |
| # properties: |
| # policy_operates_on_group: true |
| # scale_limit: 6 |
| # scale_direction: '<' |
| # scale_threshold: 30 |
| # service_selector: .*kubernetes_node_host.*cpu.total.user |
| # cooldown_time: 60 |
| # triggers: |
| # execute_scale_workflow: |
| # type: cloudify.policies.triggers.execute_workflow |
| # parameters: |
| # workflow: scale |
| # workflow_parameters: |
| # delta: 1 |
| # scalable_entity_name: kubernetes_node_host |
| |
| # scale_down_group: |
| # members: [kubernetes_node_host] |
| # policies: |
| # auto_scale_down: |
| # type: scale_policy_type |
| # properties: |
| # policy_operates_on_group: true |
| # scale_limit: 6 |
| # scale_direction: '<' |
| # scale_threshold: 30 |
| # service_selector: .*kubernetes_node_host.*cpu.total.user |
| # cooldown_time: 60 |
| # triggers: |
| # execute_scale_workflow: |
| # type: cloudify.policies.triggers.execute_workflow |
| # parameters: |
| # workflow: scale |
| # workflow_parameters: |
| # delta: 1 |
| # scalable_entity_name: kubernetes_node_host |
| |
| # heal_group: |
| # members: [kubernetes_node_host] |
| # policies: |
| # simple_autoheal_policy: |
| # type: cloudify.policies.types.host_failure |
| # properties: |
| # service: |
| # - .*kubernetes_node_host.*.cpu.total.system |
| # - .*kubernetes_node_host.*.process.hyperkube.cpu.percent |
| # interval_between_workflows: 60 |
| # triggers: |
| # auto_heal_trigger: |
| # type: cloudify.policies.triggers.execute_workflow |
| # parameters: |
| # workflow: heal |
| # workflow_parameters: |
| # node_instance_id: { 'get_property': [ SELF, node_id ] } |
| # diagnose_value: { 'get_property': [ SELF, diagnose ] } |