#cloud-config --- write_files: - path: /opt/bin/waiter.sh owner: root content: | #! /usr/bin/bash until curl http://127.0.0.1:4001/v2/machines; do sleep 2; done coreos: fleet: etcd-servers: http://localhost:4001 metadata: "role=master" flannel: interface: eth1 units: - name: setup-network-environment.service command: start content: | [Unit] Description=Setup Network Environment Documentation=https://github.com/kelseyhightower/setup-network-environment Requires=network-online.target After=network-online.target [Service] ExecStartPre=-/usr/bin/mkdir -p /opt/bin ExecStartPre=/usr/bin/wget -N -P /opt/bin https://storage.googleapis.com/k8s/setup-network-environment ExecStartPre=/usr/bin/chmod +x /opt/bin/setup-network-environment ExecStart=/opt/bin/setup-network-environment RemainAfterExit=yes Type=oneshot - name: etcd.service command: start content: | [Unit] Description=etcd Requires=setup-network-environment.service After=setup-network-environment.service [Service] EnvironmentFile=/etc/network-environment User=etcd PermissionsStartOnly=true ExecStart=/usr/bin/etcd \ --name ${DEFAULT_IPV4} \ --addr ${DEFAULT_IPV4}:4001 \ --bind-addr 0.0.0.0 \ --cluster-active-size 1 \ --data-dir /var/lib/etcd \ --http-read-timeout 86400 \ --peer-addr ${DEFAULT_IPV4}:7001 \ --snapshot true Restart=always RestartSec=10s - name: etcd-waiter.service command: start content: | [Unit] Description=etcd waiter Wants=network-online.target Wants=etcd.service After=etcd.service After=network-online.target Before=flanneld.service [Service] ExecStartPre=/usr/bin/chmod +x /opt/bin/waiter.sh ExecStart=/usr/bin/bash /opt/bin/waiter.sh RemainAfterExit=true Type=oneshot - name: flanneld.service command: start drop-ins: - name: 50-network-config.conf content: | [Unit] Requires=etcd.service [Service] ExecStartPre=/usr/bin/etcdctl set /coreos.com/network/config '{"Network":"10.244.0.0/16", "Backend": {"Type": "vxlan"}}' - name: docker-cache.service command: start content: | [Unit] Description=Docker cache proxy Requires=early-docker.service After=early-docker.service Before=early-docker.target [Service] Restart=always TimeoutStartSec=0 RestartSec=5 Environment="TMPDIR=/var/tmp/" Environment="DOCKER_HOST=unix:///var/run/early-docker.sock" ExecStartPre=-/usr/bin/docker kill docker-registry ExecStartPre=-/usr/bin/docker rm docker-registry ExecStartPre=/usr/bin/docker pull quay.io/devops/docker-registry:latest # GUNICORN_OPTS is an workaround for # https://github.com/docker/docker-registry/issues/892 ExecStart=/usr/bin/docker run --rm --net host --name docker-registry \ -e STANDALONE=false \ -e GUNICORN_OPTS=[--preload] \ -e MIRROR_SOURCE=https://registry-1.docker.io \ -e MIRROR_SOURCE_INDEX=https://index.docker.io \ -e MIRROR_TAGS_CACHE_TTL=1800 \ quay.io/devops/docker-registry:latest - name: docker.service drop-ins: - name: 51-docker-mirror.conf content: | [Unit] # making sure that docker-cache is up and that flanneld finished # startup, otherwise containers won't land in flannel's network... Requires=docker-cache.service flanneld.service After=docker-cache.service flanneld.service [Service] Environment=DOCKER_OPTS='--registry-mirror=http://$private_ipv4:5000' - name: kube-apiserver.service command: start content: | [Unit] Description=Kubernetes API Server Documentation=https://github.com/GoogleCloudPlatform/kubernetes Requires=etcd.service After=etcd.service [Service] ExecStartPre=-/usr/bin/mkdir -p /opt/bin ExecStartPre=/usr/bin/wget -N -P /opt/bin https://storage.googleapis.com/kubernetes-release/release/v0.11.0/bin/linux/amd64/kube-apiserver ExecStartPre=/usr/bin/chmod +x /opt/bin/kube-apiserver ExecStart=/opt/bin/kube-apiserver \ --address=0.0.0.0 \ --port=8080 \ --portal_net=10.100.0.0/16 \ --etcd_servers=http://127.0.0.1:4001 \ --public_address_override=$private_ipv4 \ --logtostderr=true Restart=always RestartSec=10 - name: kube-controller-manager.service command: start content: | [Unit] Description=Kubernetes Controller Manager Documentation=https://github.com/GoogleCloudPlatform/kubernetes Requires=kube-apiserver.service After=kube-apiserver.service [Service] ExecStartPre=/usr/bin/wget -N -P /opt/bin https://storage.googleapis.com/kubernetes-release/release/v0.11.0/bin/linux/amd64/kube-controller-manager ExecStartPre=/usr/bin/chmod +x /opt/bin/kube-controller-manager ExecStart=/opt/bin/kube-controller-manager \ --master=127.0.0.1:8080 \ --logtostderr=true Restart=always RestartSec=10 - name: kube-scheduler.service command: start content: | [Unit] Description=Kubernetes Scheduler Documentation=https://github.com/GoogleCloudPlatform/kubernetes Requires=kube-apiserver.service After=kube-apiserver.service [Service] ExecStartPre=/usr/bin/wget -N -P /opt/bin https://storage.googleapis.com/kubernetes-release/release/v0.11.0/bin/linux/amd64/kube-scheduler ExecStartPre=/usr/bin/chmod +x /opt/bin/kube-scheduler ExecStart=/opt/bin/kube-scheduler --master=127.0.0.1:8080 Restart=always RestartSec=10 - name: kube-register.service command: start content: | [Unit] Description=Kubernetes Registration Service Documentation=https://github.com/kelseyhightower/kube-register Requires=kube-apiserver.service After=kube-apiserver.service Requires=fleet.service After=fleet.service [Service] ExecStartPre=/usr/bin/wget -N -P /opt/bin https://storage.googleapis.com/k8s/kube-register ExecStartPre=/usr/bin/chmod +x /opt/bin/kube-register ExecStart=/opt/bin/kube-register \ --metadata=role=node \ --fleet-endpoint=unix:///var/run/fleet.sock \ --api-endpoint=http://127.0.0.1:8080 Restart=always RestartSec=10 update: group: alpha reboot-strategy: off