2014-10-12 00:32:53 +00:00
|
|
|
#cloud-config
|
|
|
|
|
|
|
|
write_files:
|
2015-02-17 10:48:48 +00:00
|
|
|
- path: /etc/cloud.conf
|
|
|
|
permissions: 0600
|
2014-10-12 00:32:53 +00:00
|
|
|
content: |
|
2015-02-17 10:48:48 +00:00
|
|
|
[Global]
|
|
|
|
auth-url = OS_AUTH_URL
|
|
|
|
username = OS_USERNAME
|
|
|
|
api-key = OS_PASSWORD
|
|
|
|
tenant-id = OS_TENANT_NAME
|
|
|
|
region = OS_REGION_NAME
|
|
|
|
[LoadBalancer]
|
|
|
|
subnet-id = 11111111-1111-1111-1111-111111111111
|
2014-10-12 00:32:53 +00:00
|
|
|
- path: /opt/bin/git-kubernetes-nginx.sh
|
|
|
|
permissions: 0755
|
|
|
|
content: |
|
|
|
|
#!/bin/bash
|
2015-02-17 10:48:48 +00:00
|
|
|
git clone https://github.com/thommay/kubernetes_nginx /opt/kubernetes_nginx
|
2014-10-12 00:32:53 +00:00
|
|
|
/usr/bin/cp /opt/.kubernetes_auth /opt/kubernetes_nginx/.kubernetes_auth
|
2015-02-17 10:48:48 +00:00
|
|
|
/opt/kubernetes_nginx/git-kubernetes-nginx.sh
|
2014-10-12 00:32:53 +00:00
|
|
|
- path: /opt/bin/download-release.sh
|
|
|
|
permissions: 0755
|
|
|
|
content: |
|
|
|
|
#!/bin/bash
|
|
|
|
OBJECT_URL="CLOUD_FILES_URL"
|
|
|
|
echo "Downloading release ($OBJECT_URL)"
|
2014-10-17 20:10:08 +00:00
|
|
|
wget "${OBJECT_URL}" -O /opt/kubernetes.tar.gz
|
2014-10-12 00:32:53 +00:00
|
|
|
echo "Unpacking release"
|
|
|
|
rm -rf /opt/kubernetes || false
|
|
|
|
tar xzf /opt/kubernetes.tar.gz -C /opt/
|
|
|
|
- path: /opt/.kubernetes_auth
|
|
|
|
permissions: 0600
|
|
|
|
content: |
|
|
|
|
KUBE_USER:KUBE_PASSWORD
|
|
|
|
|
|
|
|
coreos:
|
|
|
|
etcd:
|
|
|
|
name: kubernetes-master
|
|
|
|
discovery: https://discovery.etcd.io/DISCOVERY_ID
|
|
|
|
addr: $private_ipv4:4001
|
|
|
|
peer-addr: $private_ipv4:7001
|
|
|
|
peer-bind-addr: $private_ipv4:7001
|
|
|
|
|
|
|
|
fleet:
|
|
|
|
public-ip: $private_ipv4
|
|
|
|
metadata: kubernetes_role=master
|
|
|
|
|
|
|
|
update:
|
|
|
|
reboot-strategy: etcd-lock
|
|
|
|
|
|
|
|
units:
|
|
|
|
- name: etcd.service
|
|
|
|
command: start
|
|
|
|
- name: fleet.service
|
|
|
|
command: start
|
|
|
|
- name: download-release.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Downloads Kubernetes Release
|
|
|
|
After=network-online.target
|
|
|
|
Requires=network-online.target
|
|
|
|
[Service]
|
|
|
|
Type=oneshot
|
|
|
|
RemainAfterExit=yes
|
|
|
|
ExecStart=/usr/bin/bash /opt/bin/download-release.sh
|
|
|
|
- name: master-apiserver.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Kubernetes API Server
|
|
|
|
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
|
|
|
|
After=network-online.target
|
|
|
|
Requires=network-online.target
|
|
|
|
After=download-release.service
|
|
|
|
Requires=download-release.service
|
|
|
|
[Service]
|
2014-11-11 00:34:21 +00:00
|
|
|
ExecStartPre=/usr/bin/ln -sf /opt/kubernetes/server/bin/kube-apiserver /opt/bin/kube-apiserver
|
2015-02-17 10:48:48 +00:00
|
|
|
ExecStart=/opt/bin/kube-apiserver --address=127.0.0.1 --port=8080 --etcd_servers=http://127.0.0.1:4001 --portal_net=PORTAL_NET --logtostderr=true --cloud_provider=rackspace --cloud_config=/etc/cloud.conf --v=2
|
2014-10-12 00:32:53 +00:00
|
|
|
Restart=always
|
|
|
|
RestartSec=2
|
2015-01-14 17:17:57 +00:00
|
|
|
- name: apiserver-advertiser.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Kubernetes Apiserver Advertiser
|
|
|
|
After=etcd.service
|
|
|
|
Requires=etcd.service
|
|
|
|
After=master-apiserver.service
|
|
|
|
[Service]
|
|
|
|
ExecStart=/bin/sh -c 'etcdctl set /corekube/apiservers/$private_ipv4 $private_ipv4'
|
|
|
|
Restart=always
|
|
|
|
RestartSec=120
|
2014-10-12 00:32:53 +00:00
|
|
|
- name: master-controller-manager.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Kubernetes Controller Manager
|
|
|
|
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
|
|
|
|
After=network-online.target
|
|
|
|
Requires=network-online.target
|
|
|
|
After=master-apiserver.service
|
|
|
|
Requires=master-apiserver.service
|
|
|
|
[Service]
|
2014-11-11 00:34:21 +00:00
|
|
|
ExecStartPre=/usr/bin/ln -sf /opt/kubernetes/server/bin/kube-controller-manager /opt/bin/kube-controller-manager
|
2015-02-17 10:48:48 +00:00
|
|
|
ExecStart=/opt/bin/kube-controller-manager --master=127.0.0.1:8080 --logtostderr=true --cloud_provider=rackspace --cloud_config=/etc/cloud.conf --v=2
|
2014-10-12 00:32:53 +00:00
|
|
|
Restart=always
|
|
|
|
RestartSec=2
|
|
|
|
- name: master-scheduler.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Kubernetes Scheduler
|
|
|
|
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
|
|
|
|
After=network-online.target
|
|
|
|
Requires=network-online.target
|
|
|
|
After=master-apiserver.service
|
|
|
|
Requires=master-apiserver.service
|
|
|
|
[Service]
|
2014-11-11 00:34:21 +00:00
|
|
|
ExecStartPre=/usr/bin/ln -sf /opt/kubernetes/server/bin/kube-scheduler /opt/bin/kube-scheduler
|
|
|
|
ExecStart=/opt/bin/kube-scheduler --master=127.0.0.1:8080 --logtostderr=true
|
2014-10-12 00:32:53 +00:00
|
|
|
Restart=always
|
|
|
|
RestartSec=10
|
2015-02-17 10:48:48 +00:00
|
|
|
- name: master-register.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Kubernetes Registration Service
|
|
|
|
Documentation=https://github.com/kelseyhightower/kube-register
|
|
|
|
|
|
|
|
[Service]
|
2015-04-27 04:51:37 +00:00
|
|
|
ExecStartPre=/usr/bin/wget -N -P /opt/bin https://storage.googleapis.com/kubernetes/kube-register
|
2015-02-17 10:48:48 +00:00
|
|
|
ExecStartPre=/usr/bin/chmod +x /opt/bin/kube-register
|
|
|
|
ExecStart=/opt/bin/kube-register \
|
|
|
|
--metadata=kubernetes_role=minion \
|
|
|
|
--fleet-endpoint=unix:///var/run/fleet.sock \
|
|
|
|
--api-endpoint=http://127.0.0.1:8080
|
|
|
|
Restart=always
|
|
|
|
RestartSec=10
|
2014-10-17 20:10:08 +00:00
|
|
|
#Running nginx service with --net="host" is a necessary evil until running all k8s services in docker.
|
2014-10-12 00:32:53 +00:00
|
|
|
- name: kubernetes-nginx.service
|
|
|
|
command: start
|
|
|
|
content: |
|
|
|
|
[Unit]
|
|
|
|
Description=Kubernetes Nginx Service
|
|
|
|
After=network-online.target
|
|
|
|
Requires=network-online.target
|
|
|
|
After=docker.service
|
|
|
|
Requires=docker.service
|
|
|
|
[Service]
|
|
|
|
ExecStartPre=/opt/bin/git-kubernetes-nginx.sh
|
2015-02-17 10:48:48 +00:00
|
|
|
ExecStartPre=-/usr/bin/docker rm kubernetes_nginx
|
2014-10-12 00:32:53 +00:00
|
|
|
ExecStart=/usr/bin/docker run --rm --net="host" -p "443:443" -t --name "kubernetes_nginx" kubernetes_nginx
|
|
|
|
ExecStop=/usr/bin/docker stop kubernetes_nginx
|
|
|
|
Restart=always
|
|
|
|
RestartSec=15
|