Last active
August 29, 2015 14:27
-
-
Save keyz182/a0a8115045388b491eeb to your computer and use it in GitHub Desktop.
CoreOS Heat Template
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
heat_template_version: 2014-10-16 | |
description: Deploy a CoreOS cluster | |
parameters: | |
count: | |
description: Number of CoreOS machines to deploy | |
type: number | |
default: 3 | |
constraints: | |
- range: | |
min: 3 | |
max: 20 | |
description: Must be between 3 and 20 servers. | |
key_name: | |
type: string | |
description: Name of key-pair to be used for compute instance | |
flavor: | |
type: string | |
default: m1.medium | |
constraints: | |
- allowed_values: | |
- m1.small | |
- m1.medium | |
- m1.large | |
- d1.large | |
- m1.xlarge | |
description: | | |
Must be a valid CSCloud Compute Cloud flavour | |
image_id: | |
type: string | |
label: CoreOS image ID | |
default: 6d75f2c4-a898-4842-9fb9-4439fd528f2c | |
public_net_id: | |
type: string | |
label: Public network ID | |
description: ID of the public network to use | |
default: d6a726a2-14e9-42ab-bab2-07df1b418cd0 | |
discovery_url: | |
type: string | |
label: Cluster discovery URL such as one generated from https://discovery.etcd.io/new | |
name: | |
type: string | |
description: Name of each CoreOS machine booted | |
default: CoreOS-stable | |
resources: | |
security_group: | |
type: OS::Neutron::SecurityGroup | |
properties: | |
description: Security Group | |
name: core-security-group | |
rules: | |
- remote_ip_prefix: 0.0.0.0/0 | |
protocol: tcp | |
port_range_min: 0 | |
port_range_max: 65535 | |
- remote_ip_prefix: 0.0.0.0/0 | |
protocol: udp | |
port_range_min: 0 | |
port_range_max: 65535 | |
- remote_ip_prefix: 0.0.0.0/0 | |
protocol: icmp | |
private_net: | |
type: OS::Neutron::Net | |
properties: | |
admin_state_up: true | |
name: core-net | |
private_subnet: | |
type: OS::Neutron::Subnet | |
properties: | |
name: core-subnet | |
cidr: 192.168.10.0/24 | |
gateway_ip: 192.168.10.1 | |
allocation_pools: | |
- start: 192.168.10.20 | |
end: 192.168.10.99 | |
dns_nameservers: [10.239.40.2, 10.239.40.130] | |
enable_dhcp: true | |
network_id: { get_resource: private_net } | |
router: | |
type: OS::Neutron::Router | |
properties: | |
name: core-router | |
admin_state_up: true | |
router_gw: | |
type: OS::Neutron::RouterGateway | |
properties: | |
network_id: { get_param: public_net_id } | |
router_id: { get_resource: router } | |
router_interface: | |
type: OS::Neutron::RouterInterface | |
properties: | |
router_id: { get_resource: router } | |
subnet_id: { get_resource: private_subnet } | |
machines: | |
type: "OS::Heat::ResourceGroup" | |
depends_on: private_net | |
properties: | |
count: { get_param: count } | |
resource_def: | |
type: OS::Nova::Server | |
properties: | |
security_groups: [{ get_resource: security_group }] | |
key_name: { get_param: key_name } | |
image: { get_param: image_id } | |
networks: | |
- network: { get_resource: private_net } | |
flavor: { get_param: flavor } | |
name: | |
str_replace: | |
template: | |
$name-$index | |
params: | |
$name: { get_param: name } | |
$index: "%index%" | |
user_data_format: RAW | |
user_data: | |
str_replace: | |
template: | | |
#cloud-config | |
coreos: | |
etcd: | |
discovery: $discovery_url$ | |
# multi-region and multi-cloud deployments need to use $public_ipv4 | |
addr: $private_ipv4:4001 | |
peer-addr: $private_ipv4:7001 | |
units: | |
- name: etcd.service | |
command: start | |
- name: fleet.service | |
command: start | |
params: | |
$discovery_url$: { get_param: discovery_url } | |
outputs: | |
key_pair: | |
description: SSH key-pair for this cluster | |
value: { get_param: key_name } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2014 Zuercher Hochschule fuer Angewandte Wissenschaften | |
# 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. | |
heat_template_version: 2013-05-23 | |
description: > | |
A simple Heat template to deploy CoreOS into an existing cluster. | |
parameters: | |
public_net_id: | |
type: string | |
label: Public Network ID | |
description: ID of the public network to use | |
default: d6a726a2-14e9-42ab-bab2-07df1b418cd0 | |
image_id: | |
type: string | |
label: Glance Image ID | |
description: ID of existing Glance image to use | |
default: 6d75f2c4-a898-4842-9fb9-4439fd528f2c | |
key-pair: | |
type: string | |
label: SSH Key Pair | |
description: Name of the SSH Key pair to use | |
resources: | |
security_group: | |
type: OS::Neutron::SecurityGroup | |
properties: | |
description: Kubernetes Security Group | |
name: kube-secrurity-group | |
rules: | |
- remote_ip_prefix: 0.0.0.0/0 | |
protocol: tcp | |
port_range_min: 0 | |
port_range_max: 65535 | |
- remote_ip_prefix: 0.0.0.0/0 | |
protocol: udp | |
port_range_min: 0 | |
port_range_max: 65535 | |
- remote_ip_prefix: 0.0.0.0/0 | |
protocol: icmp | |
private_net: | |
type: OS::Neutron::Net | |
properties: | |
admin_state_up: true | |
name: kube-net | |
private_subnet: | |
type: OS::Neutron::Subnet | |
properties: | |
name: kube-subnet | |
cidr: 192.168.12.0/24 | |
gateway_ip: 192.168.12.1 | |
allocation_pools: | |
- start: 192.168.12.20 | |
end: 192.168.12.99 | |
dns_nameservers: [10.239.40.2, 10.239.40.130] | |
enable_dhcp: true | |
network_id: { get_resource: private_net } | |
router: | |
type: OS::Neutron::Router | |
properties: | |
name: kube-router | |
admin_state_up: true | |
router_gw: | |
type: OS::Neutron::RouterGateway | |
properties: | |
network_id: { get_param: public_net_id } | |
router_id: { get_resource: router } | |
router_interface: | |
type: OS::Neutron::RouterInterface | |
properties: | |
router_id: { get_resource: router } | |
subnet_id: { get_resource: private_subnet } | |
discovery_port: | |
type: OS::Neutron::Port | |
properties: | |
admin_state_up: true | |
network_id: { get_resource: private_net } | |
security_groups: | |
- { get_resource: security_group } | |
fixed_ips: | |
- ip_address: "192.168.12.10" | |
discovery: | |
type: OS::Nova::Server | |
properties: | |
name: discovery | |
image: { get_param: image_id } | |
flavor: m1.small | |
networks: | |
- port: { get_resource: discovery_port } | |
key_name: { get_param: key-pair } | |
user_data_format: RAW | |
user_data: | | |
#cloud-config | |
coreos: | |
fleet: | |
etcd_servers: http://127.0.0.1:4001 | |
metadata: role=etcd | |
etcd: | |
name: etcd | |
addr: $private_ipv4:4001 | |
bind-addr: 0.0.0.0 | |
peer-addr: $private_ipv4:7001 | |
cluster-active-size: 1 | |
snapshot: true | |
units: | |
- name: etcd.service | |
command: start | |
master_port: | |
type: OS::Neutron::Port | |
properties: | |
admin_state_up: true | |
network_id: { get_resource: private_net } | |
security_groups: | |
- { get_resource: security_group } | |
master_floatingip: | |
type: OS::Neutron::FloatingIP | |
properties: | |
floating_network_id: { get_param: public_net_id } | |
port_id: { get_resource: master_port } | |
master: | |
type: OS::Nova::Server | |
properties: | |
name: master | |
image: { get_param: image_id } | |
flavor: m1.small | |
networks: | |
- port: { get_resource: master_port } | |
key_name: { get_param: key-pair } | |
user_data_format: RAW | |
user_data: | |
str_replace: | |
template: | | |
#cloud-config | |
coreos: | |
fleet: | |
public-ip: $private_ipv4 | |
metadata: role=master | |
etcd: | |
discovery: http://$etcd_discovery_ip$:4001/v2/keys/cluster | |
addr: $private_ipv4:4001 | |
peer-addr: $private_ipv4:7001 | |
units: | |
- name: etcd.service | |
command: start | |
- name: fleet.service | |
command: start | |
- name: flannel.service | |
command: start | |
content: | | |
[Unit] | |
Requires=etcd.service | |
After=etcd.service | |
[Service] | |
ExecStartPre=-/usr/bin/mkdir -p /opt/bin | |
ExecStartPre=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/flannel/flanneld | |
ExecStartPre=/usr/bin/chmod +x /opt/bin/flanneld | |
ExecStartPre=/usr/bin/etcdctl -C http://$etcd_discovery_ip$:4001 set /coreos.com/network/config '{"Network":"10.100.0.0/16"}' | |
ExecStart=/opt/bin/flanneld \ | |
-etcd-endpoints http://$etcd_discovery_ip$:4001 \ | |
-iface=$private_ipv4 \ | |
-logtostderr=true | |
[Install] | |
WantedBy=multi-user.target | |
- name: docker.service | |
command: restart | |
content: | | |
[Unit] | |
Description=Docker Application Container Engine | |
Documentation=http://docs.docker.io | |
Requires=flannel.service | |
After=flannel.service | |
[Service] | |
EnvironmentFile=/run/flannel/subnet.env | |
ExecStartPre=/bin/mount --make-rprivate / | |
ExecStart=/usr/bin/docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} | |
Restart=on-failure | |
RestartSec=5 | |
[Install] | |
WantedBy=multi-user.target | |
- name: download-kubernetes.service | |
command: start | |
content: | | |
[Unit] | |
After=network-online.target | |
Before=kube-apiserver.service | |
Before=controller-manager.service | |
Description=Download Kubernetes Binaries | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Requires=network-online.target | |
[Service] | |
ExecStart=/usr/bin/wget -N -P /tmp https://dbyz.co.uk/Public/kubernetes.tar.gz | |
ExecStart=/usr/bin/tar xvf /tmp/kubernetes.tar.gz -C /tmp/ | |
ExecStart=/usr/bin/tar xvf /tmp/kubernetes/server/kubernetes-server-linux-amd64.tar.gz -C /tmp/kubernetes/server/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/hyperkube /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kube-apiserver /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kube-controller-manager /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kube-proxy /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kube-scheduler /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kubectl /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kubelet /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/server/kubernetes/server/bin/kubernetes /opt/bin/ | |
ExecStart=/usr/bin/mv /tmp/kubernetes/platforms/linux/amd64/kubectl /opt/bin | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/kube-register | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/proxy | |
ExecStart=/usr/bin/chmod +x /opt/bin/kube-register | |
ExecStart=/usr/bin/chmod +x /opt/bin/kubectl | |
ExecStart=/usr/bin/chmod +x /opt/bin/hyperkube | |
ExecStart=/usr/bin/chmod +x /opt/bin/kube-apiserver | |
ExecStart=/usr/bin/chmod +x /opt/bin/kube-proxy | |
ExecStart=/usr/bin/chmod +x /opt/bin/kube-scheduler | |
ExecStart=/usr/bin/chmod +x /opt/bin/kubelet | |
ExecStart=/usr/bin/chmod +x /opt/bin/kubernetes | |
RemainAfterExit=yes | |
Type=oneshot | |
- name: kube-apiserver.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/kube-apiserver | |
Description=Kubernetes API Server | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/kube-apiserver \ | |
--address=0.0.0.0 \ | |
--port=8080 \ | |
--etcd_servers=http://$etcd_discovery_ip$:4001 \ | |
--service-cluster-ip-range=192.168.12.128/25 \ | |
--logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: kube-scheduler.service | |
command: start | |
content: | | |
[Unit] | |
After=kube-apiserver.service | |
ConditionFileIsExecutable=/opt/bin/kube-scheduler | |
Description=Kubernetes Scheduler | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=kube-apiserver.service | |
[Service] | |
ExecStart=/opt/bin/kube-scheduler \ | |
--logtostderr=true \ | |
--master=127.0.0.1:8080 | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: kube-controller-manager.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/controller-manager | |
Description=Kubernetes Controller Manager | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/kube-controller-manager \ | |
--master=127.0.0.1:8080 \ | |
--logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: kube-register.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/kube-register | |
Description=Kubernetes Registration Service | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/kube-register \ | |
--metadata=role=kubernetes \ | |
--fleet-endpoint=unix:///var/run/fleet.sock \ | |
--api-endpoint=http://127.0.0.1:8080 | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: proxy.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/proxy | |
Description=Kubernetes Proxy | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/proxy \ | |
--master=http://127.0.0.1:8080 --logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
params: | |
$etcd_discovery_ip$: | |
get_attr: [ discovery, first_address ] | |
minion-1_port: | |
type: OS::Neutron::Port | |
properties: | |
admin_state_up: true | |
network_id: { get_resource: private_net } | |
security_groups: | |
- { get_resource: security_group } | |
fixed_ips: | |
- ip_address: "192.168.12.14" | |
minion-1: | |
type: OS::Nova::Server | |
properties: | |
name: minion-1 | |
image: { get_param: image_id } | |
flavor: m1.medium | |
networks: | |
- port: { get_resource: minion-1_port } | |
key_name: { get_param: key-pair } | |
user_data_format: RAW | |
user_data: | |
str_replace: | |
template: | | |
#cloud-config | |
coreos: | |
etcd: | |
discovery: http://$etcd_discovery_ip$:4001/v2/keys/cluster | |
addr: $private_ipv4:4001 | |
peer-addr: $private_ipv4:7001 | |
fleet: | |
public-ip: $public_ipv4 | |
metadata: role=kubernetes | |
units: | |
- name: etcd.service | |
command: start | |
- name: fleet.service | |
command: start | |
- name: flannel.service | |
command: start | |
content: | | |
[Unit] | |
Requires=etcd.service | |
After=etcd.service | |
[Service] | |
ExecStartPre=-/usr/bin/mkdir -p /opt/bin | |
ExecStartPre=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/flannel/flanneld | |
ExecStartPre=/usr/bin/chmod +x /opt/bin/flanneld | |
ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{"Network":"10.100.0.0/16"}' | |
ExecStart=/opt/bin/flanneld \ | |
-etcd-endpoints http://$etcd_discovery_ip$:4001 \ | |
-iface=$private_ipv4 \ | |
-logtostderr=true | |
- name: docker.service | |
command: restart | |
content: | | |
[Unit] | |
Description=Docker Application Container Engine | |
Documentation=http://docs.docker.io | |
Requires=flannel.service | |
After=flannel.service | |
[Service] | |
EnvironmentFile=/run/flannel/subnet.env | |
ExecStartPre=/bin/mount --make-rprivate / | |
ExecStart=/usr/bin/docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} | |
Restart=on-failure | |
RestartSec=5 | |
[Install] | |
WantedBy=multi-user.target | |
- name: download-kubernetes.service | |
command: start | |
content: | | |
[Unit] | |
After=network-online.target | |
Before=kubelet.service | |
Before=proxy.service | |
Description=Download Kubernetes Binaries | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Requires=network-online.target | |
[Service] | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/kubelet | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/proxy | |
ExecStart=/usr/bin/chmod +x /opt/bin/kubelet | |
ExecStart=/usr/bin/chmod +x /opt/bin/proxy | |
RemainAfterExit=yes | |
Type=oneshot | |
- name: kubelet.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/kubelet | |
Description=Kubernetes Kubelet | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/kubelet \ | |
--address=0.0.0.0 \ | |
--port=10250 \ | |
--hostname_override=$private_ipv4 \ | |
--api-servers=http://$master_discovery_ip$:8080 \ | |
--logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: proxy.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/proxy | |
Description=Kubernetes Proxy | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/proxy \ | |
--master=http://$master_discovery_ip$:8080 --logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
params: | |
$etcd_discovery_ip$: | |
get_attr: [ discovery, first_address ] | |
$master_discovery_ip$: | |
get_attr: [ master, first_address ] | |
minion-2_port: | |
type: OS::Neutron::Port | |
properties: | |
admin_state_up: true | |
network_id: { get_resource: private_net } | |
security_groups: | |
- { get_resource: security_group } | |
fixed_ips: | |
- ip_address: "192.168.12.15" | |
minion-2: | |
type: OS::Nova::Server | |
properties: | |
name: minion-2 | |
image: { get_param: image_id } | |
flavor: m1.medium | |
networks: | |
- port: { get_resource: minion-2_port } | |
key_name: { get_param: key-pair } | |
user_data_format: RAW | |
user_data: | |
str_replace: | |
template: | | |
#cloud-config | |
coreos: | |
etcd: | |
discovery: http://$etcd_discovery_ip$:4001/v2/keys/cluster | |
addr: $private_ipv4:4001 | |
peer-addr: $private_ipv4:7001 | |
fleet: | |
public-ip: $public_ipv4 | |
metadata: role=kubernetes | |
units: | |
- name: etcd.service | |
command: start | |
- name: fleet.service | |
command: start | |
- name: flannel.service | |
command: start | |
content: | | |
[Unit] | |
Requires=etcd.service | |
After=etcd.service | |
[Service] | |
ExecStartPre=-/usr/bin/mkdir -p /opt/bin | |
ExecStartPre=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/flannel/flanneld | |
ExecStartPre=/usr/bin/chmod +x /opt/bin/flanneld | |
ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{"Network":"10.100.0.0/16"}' | |
ExecStart=/opt/bin/flanneld \ | |
-etcd-endpoints http://$etcd_discovery_ip$:4001 \ | |
-iface=$private_ipv4 \ | |
-logtostderr=true | |
- name: docker.service | |
command: restart | |
content: | | |
[Unit] | |
Description=Docker Application Container Engine | |
Documentation=http://docs.docker.io | |
Requires=flannel.service | |
After=flannel.service | |
[Service] | |
EnvironmentFile=/run/flannel/subnet.env | |
ExecStartPre=/bin/mount --make-rprivate / | |
ExecStart=/usr/bin/docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} | |
Restart=on-failure | |
RestartSec=5 | |
[Install] | |
WantedBy=multi-user.target | |
- name: download-kubernetes.service | |
command: start | |
content: | | |
[Unit] | |
After=network-online.target | |
Before=kubelet.service | |
Before=proxy.service | |
Description=Download Kubernetes Binaries | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Requires=network-online.target | |
[Service] | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/kubelet | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/proxy | |
ExecStart=/usr/bin/chmod +x /opt/bin/kubelet | |
ExecStart=/usr/bin/chmod +x /opt/bin/proxy | |
RemainAfterExit=yes | |
Type=oneshot | |
- name: kubelet.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/kubelet | |
Description=Kubernetes Kubelet | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/kubelet \ | |
--address=0.0.0.0 \ | |
--port=10250 \ | |
--hostname_override=$private_ipv4 \ | |
--api-servers=http://$master_discovery_ip$:8080 \ | |
--logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: proxy.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/proxy | |
Description=Kubernetes Proxy | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/proxy \ | |
--master=http://$master_discovery_ip$:8080 --logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
params: | |
$etcd_discovery_ip$: | |
get_attr: [ discovery, first_address ] | |
$master_discovery_ip$: | |
get_attr: [ master, first_address ] | |
minion-3_port: | |
type: OS::Neutron::Port | |
properties: | |
admin_state_up: true | |
network_id: { get_resource: private_net } | |
security_groups: | |
- { get_resource: security_group } | |
fixed_ips: | |
- ip_address: "192.168.12.16" | |
minion-3: | |
type: OS::Nova::Server | |
properties: | |
name: minion-3 | |
image: { get_param: image_id } | |
flavor: m1.medium | |
networks: | |
- port: { get_resource: minion-3_port } | |
key_name: { get_param: key-pair } | |
user_data_format: RAW | |
user_data: | |
str_replace: | |
template: | | |
#cloud-config | |
coreos: | |
etcd: | |
discovery: http://$etcd_discovery_ip$:4001/v2/keys/cluster | |
addr: $private_ipv4:4001 | |
peer-addr: $private_ipv4:7001 | |
fleet: | |
public-ip: $public_ipv4 | |
metadata: role=kubernetes | |
units: | |
- name: etcd.service | |
command: start | |
- name: fleet.service | |
command: start | |
- name: flannel.service | |
command: start | |
content: | | |
[Unit] | |
Requires=etcd.service | |
After=etcd.service | |
[Service] | |
ExecStartPre=-/usr/bin/mkdir -p /opt/bin | |
ExecStartPre=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/flannel/flanneld | |
ExecStartPre=/usr/bin/chmod +x /opt/bin/flanneld | |
ExecStartPre=/usr/bin/etcdctl -C http://$etcd_discovery_ip$:4001 set /coreos.com/network/config '{"Network":"10.100.0.0/16"}' | |
ExecStart=/opt/bin/flanneld \ | |
-etcd-endpoints http://$etcd_discovery_ip$:4001 \ | |
-iface=$private_ipv4 \ | |
-logtostderr=true | |
[Install] | |
WantedBy=multi-user.target | |
- name: docker.service | |
command: restart | |
content: | | |
[Unit] | |
Description=Docker Application Container Engine | |
Documentation=http://docs.docker.io | |
Requires=flannel.service | |
After=flannel.service | |
[Service] | |
EnvironmentFile=/run/flannel/subnet.env | |
ExecStartPre=/bin/mount --make-rprivate / | |
ExecStart=/usr/bin/docker -d --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} | |
Restart=on-failure | |
RestartSec=5 | |
[Install] | |
WantedBy=multi-user.target | |
- name: download-kubernetes.service | |
command: start | |
content: | | |
[Unit] | |
After=network-online.target | |
Before=kubelet.service | |
Before=proxy.service | |
Description=Download Kubernetes Binaries | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Requires=network-online.target | |
[Service] | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/kubelet | |
ExecStart=/usr/bin/wget -N -P /opt/bin http://storage.googleapis.com/kubernetes/proxy | |
ExecStart=/usr/bin/chmod +x /opt/bin/kubelet | |
ExecStart=/usr/bin/chmod +x /opt/bin/proxy | |
RemainAfterExit=yes | |
Type=oneshot | |
- name: kubelet.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/kubelet | |
Description=Kubernetes Kubelet | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/kubelet \ | |
--address=0.0.0.0 \ | |
--port=10250 \ | |
--hostname_override=$private_ipv4 \ | |
--api-servers=http://$master_discovery_ip$:8080 \ | |
--logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
- name: proxy.service | |
command: start | |
content: | | |
[Unit] | |
After=etcd.service | |
After=download-kubernetes.service | |
ConditionFileIsExecutable=/opt/bin/proxy | |
Description=Kubernetes Proxy | |
Documentation=https://github.com/GoogleCloudPlatform/kubernetes | |
Wants=etcd.service | |
Wants=download-kubernetes.service | |
[Service] | |
ExecStart=/opt/bin/proxy \ | |
--master=http://$master_discovery_ip$:8080 --logtostderr=true | |
Restart=always | |
RestartSec=10 | |
[Install] | |
WantedBy=multi-user.target | |
params: | |
$etcd_discovery_ip$: | |
get_attr: [ discovery, first_address ] | |
$master_discovery_ip$: | |
get_attr: [ master, first_address ] | |
outputs: | |
floating_ip: | |
description: Public IP Address of Kubernetes master | |
value: { get_attr: [master_floatingip, floating_ip_address] } | |
key-pair: | |
description: SSH key-pair name for Kubernetes master | |
value: { get_param: key-pair } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment