k8s-docker-suite-app-murano/Kubernetes/KubernetesCluster/package/Classes/KubernetesGatewayNode.yaml

110 lines
3.9 KiB
YAML

# 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.
Namespaces:
=: com.mirantis.docker.kubernetes
std: io.murano
res: io.murano.resources
sys: io.murano.system
Name: KubernetesGatewayNode
Extends: KubernetesNode
Methods:
.init:
Body:
- $._environment: $.find(std:Environment).require()
- $._cluster: $.find(KubernetesCluster).require()
deployInstance:
Body:
- If: not $.getAttr(instanceDeployed, false)
Then:
- $._environment.reporter.report($this, 'Creating Gateway node for Kubernetes services')
- super($, $.deployInstance())
- $.setAttr(instanceDeployed, true)
setupEtcd:
Body:
- If: not $.getAttr(etcdConfigured, false)
Then:
- $._environment.reporter.report($, 'Configuring etcd node {0}'.format($.instance.name))
- $resources: new(sys:Resources)
- $template: $resources.yaml('EtcdAddMember.template').bind(dict(
name => $.instance.name,
ip => $.getIp()
))
- $clusterConfig: $._cluster.masterNode.instance.agent.call($template, $resources)
- $template: $resources.yaml('MemberEtcdSetup.template').bind(dict(
name => $.instance.name,
ip => $.getIp(),
clusterConfig => $clusterConfig
))
- $.instance.agent.call($template, $resources)
- $.setAttr(etcdConfigured, true)
setupCalico:
Body:
- $._environment.reporter.report($this, 'Setup Calico network on gateway node {0}'.format($.instance.name))
- $resources: new(sys:Resources)
- $template: $resources.yaml('SetupCalicoNode.template').bind(dict(
ip => $.getIp(),
masterIp => $._cluster.masterNode.getIp()
))
- $.instance.agent.call($template, $resources)
- $._enableCalicoTraffic()
setupFlannel:
Body:
- $._environment.reporter.report($this, 'Setup Flannel network on gateway node {0}'.format($.instance.name))
- $resources: new(sys:Resources)
- $template: $resources.yaml('SetupFlannelNode.template')
- $.instance.agent.call($template, $resources)
setupNode:
Body:
- If: not $.getAttr(nodeConfigured, false)
Then:
- $resources: new(sys:Resources)
- $._environment.reporter.report($, 'Setup Load Balancer on {0}'.format($.instance.name))
- $template: $resources.yaml('HAProxySetup.template').bind(dict(
masterIp => $._cluster.masterNode.getIp()
))
- $.instance.agent.call($template, $resources)
- $._environment.reporter.report(
$this, 'Gateway {0} is now available at {1}'.format($.instance.name, $.getIp(true)))
- $.setAttr(nodeConfigured, true)
removeFromCluster:
Body:
- If: $.getAttr(nodeConfigured, false)
Then:
- $._environment.reporter.report($this, 'Deleting Gateway Node')
- $resources: new(sys:Resources)
- $template: $resources.yaml('EtcdRemoveMember.template').bind(dict(
nodeId => $.getIp()
))
- $.instance.agent.call($template, $resources)
- $ip: $.getIp(true)
- $.instance.releaseResources()
- $._environment.reporter.report($this, 'Gateway {0} at {1} was deleted'.format($.instance.name, $ip))
- $.setAttr(nodeConfigured, false)
- $.setAttr(etcdConfigured, false)
- $.setAttr(instanceDeployed, false)