Initial vagrant setup and e2e testing support

This commit is contained in:
derekwaynecarr
2014-07-14 13:50:04 -04:00
parent 41eb15bcff
commit 69ae2fe4bb
43 changed files with 1268 additions and 370 deletions

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
EnvironmentFile=/etc/sysconfig/apiserver
ExecStart=/usr/local/bin/apiserver "$DAEMON_ARGS"
[Install]
WantedBy=multi-user.target

View File

@@ -1,11 +1,27 @@
{%- set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
DAEMON_ARGS="$DAEMON_ARGS -etcd_servers=http://{{ ips[0][0] }}:4001"
{% if grains['cloud'] is defined and grains['cloud'] == 'gce' %}
DAEMON_ARGS="$DAEMON_ARGS -cloud_provider=gce -minion_regexp='{{ pillar['instance_prefix'] }}.*'"
MACHINES="{{ ','.join(salt['mine.get']('roles:kubernetes-pool', 'network.ip_addrs', expr_form='grain').keys()) }}"
{% elif grains['cloud'] is defined and grains['cloud'] == 'azure' %}
MACHINES="{{ salt['mine.get']('roles:kubernetes-pool', 'grains.items', expr_form='grain').values()|join(',', attribute='hostnamef') }}"
{% set daemon_args = "$DAEMON_ARGS" %}
{% if grains['os_family'] == 'RedHat' %}
{% set daemon_args = "" %}
{% endif %}
DAEMON_ARGS="$DAEMON_ARGS -machines=$MACHINES"
{% set cloud_provider = "" %}
{% set minion_regexp = "-minion_regexp '" + pillar['instance_prefix'] + ".*'" %}
{% set address = "-address 127.0.0.1" %}
{% if grains.etcd_servers is defined %}
{% set etcd_servers = "-etcd_servers=http://" + grains.etcd_servers + ":4001" %}
{% set address = "-address=" + grains.etcd_servers %}
{% else %}
{% set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
{% set etcd_servers = "-etcd_servers=http://" + ips[0][0] + ":4001" %}
{% endif %}
{% if grains.minion_ips is defined %}
{% set machines = "-machines " + grains.minion_ips %}
{% elif grains.cloud is defined and grains.cloud == 'gce' %}
{% set cloud_provider = "-cloud_provider=gce" %}
{% set machines = "-machines " + ','.join(salt['mine.get']('roles:kubernetes-pool', 'network.ip_addrs', expr_form='grain').keys()) %}
{% elif grains.cloud is defined and grains.cloud == 'azure' %}
MACHINES="{{ salt['mine.get']('roles:kubernetes-pool', 'grains.items', expr_form='grain').values()|join(',', attribute='hostnamef') }}"
{% set machines = "-machines $MACHINES" %}
{% endif %}
DAEMON_ARGS="{{daemon_args}} {{address}} {{machines}} {{etcd_servers}} {{ minion_regexp }} {{ cloud_provider }}"

View File

@@ -1,12 +1,21 @@
{% set root = '/var/src/apiserver' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% if grains['os_family'] == 'RedHat' %}
{% set environment_file = '/etc/sysconfig/apiserver' %}
{% else %}
{% set environment_file = '/etc/default/apiserver' %}
{% endif %}
{{ package_dir }}:
file.recurse:
- source: salt://apiserver/go
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -20,7 +29,11 @@ apiserver-third-party-go:
- name: {{ root }}/src
- source: salt://third-party/go/src
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -29,7 +42,7 @@ apiserver-third-party-go:
- group
- mode
/etc/default/apiserver:
{{ environment_file }}:
file.managed:
- source: salt://apiserver/default
- template: jinja
@@ -54,6 +67,16 @@ apiserver-build:
- watch:
- cmd: apiserver-build
{% if grains['os_family'] == 'RedHat' %}
/usr/lib/systemd/system/apiserver.service:
file.managed:
- source: salt://apiserver/apiserver.service
- user: root
- group: root
{% else %}
/etc/init.d/apiserver:
file.managed:
- source: salt://apiserver/initd
@@ -61,6 +84,8 @@ apiserver-build:
- group: root
- mode: 755
{% endif %}
apiserver:
group.present:
- system: True
@@ -75,6 +100,8 @@ apiserver:
- enable: True
- watch:
- cmd: apiserver-build
- file: /etc/default/apiserver
- file: {{ environment_file }}
- file: /usr/local/bin/apiserver
{% if grains['os_family'] != 'RedHat' %}
- file: /etc/init.d/apiserver
{% endif %}

View File

@@ -1,6 +1,10 @@
pkg-core:
pkg.latest:
- names:
{% if grains['os_family'] == 'RedHat' %}
- python
- git
{% else %}
- apt-transport-https
- python-apt
{% endif %}

View File

@@ -0,0 +1,11 @@
[Unit]
Description=Kubernetes Controller Manager
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
Type=simple
EnvironmentFile=-/etc/sysconfig/controller-manager
ExecStart=/usr/local/bin/controller-manager "$DAEMON_ARGS"
[Install]
WantedBy=multi-user.target

View File

@@ -1,2 +1,15 @@
{%- set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
DAEMON_ARGS="$DAEMON_ARGS -etcd_servers=http://{{ ips[0][0] }}:4001"
{% set daemon_args = "$DAEMON_ARGS" %}
{% if grains['os_family'] == 'RedHat' %}
{% set daemon_args = "" %}
{% endif %}
{% set master="-master=127.0.0.1:8080" %}
{% if grains.master_ip is defined %}
{% set master="-master=" + grains.master_ip + ":8080" %}
{% endif %}
{% if grains.etcd_servers is defined %}
{% set etcd_servers = "-etcd_servers=http://" + grains.etcd_servers + ":4001" %}
{% else %}
{% set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
{% set etcd_servers = "-etcd_servers=http://" + ips[0][0] + ":4001" %}
{% endif %}
DAEMON_ARGS="{{daemon_args}} {{master}} {{etcd_servers}}"

View File

@@ -1,12 +1,21 @@
{% set root = '/var/src/controller-manager' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% if grains['os_family'] == 'RedHat' %}
{% set environment_file = '/etc/sysconfig/controller-manager' %}
{% else %}
{% set environment_file = '/etc/default/controller-manager' %}
{% endif %}
{{ package_dir }}:
file.recurse:
- source: salt://controller-manager/go
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -20,7 +29,11 @@ controller-manager-third-party-go:
- name: {{ root }}/src
- source: salt://third-party/go/src
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -29,7 +42,7 @@ controller-manager-third-party-go:
- group
- mode
/etc/default/controller-manager:
{{ environment_file }}:
file.managed:
- source: salt://controller-manager/default
- template: jinja
@@ -54,6 +67,16 @@ controller-manager-build:
- watch:
- cmd: controller-manager-build
{% if grains['os_family'] == 'RedHat' %}
/usr/lib/systemd/system/controller-manager.service:
file.managed:
- source: salt://controller-manager/controller-manager.service
- user: root
- group: root
{% else %}
/etc/init.d/controller-manager:
file.managed:
- source: salt://controller-manager/initd
@@ -61,6 +84,8 @@ controller-manager-build:
- group: root
- mode: 755
{% endif %}
controller-manager:
group.present:
- system: True
@@ -76,6 +101,9 @@ controller-manager:
- watch:
- cmd: controller-manager-build
- file: /usr/local/bin/controller-manager
- file: {{ environment_file }}
{% if grains['os_family'] != 'RedHat' %}
- file: /etc/init.d/controller-manager
- file: /etc/default/controller-manager
{% endif %}

View File

@@ -1,3 +1,11 @@
{% if grains['os_family'] == 'RedHat' %}
{% set environment_file = '/etc/sysconfig/docker' %}
{% else %}
{% set environment_file = '/etc/default/docker' %}
{% endif %}
{% if grains['os_family'] != 'RedHat' %}
docker-repo:
pkgrepo.managed:
- humanname: Docker Repo
@@ -25,7 +33,23 @@ cbr0:
- cidr: {{ grains['cbr-cidr'] }}
- mtu: 1460
/etc/default/docker:
{% endif %}
{% if grains['os_family'] == 'RedHat' %}
docker-io:
pkg:
- installed
docker:
service.running:
- enable: True
- require:
- pkg: docker-io
{% else %}
{{ environment_file }}:
file.managed:
- source: salt://docker/docker-defaults
- template: jinja
@@ -51,3 +75,5 @@ lxc-docker:
# - pkg: lxc-docker
# - watch:
# - file: /etc/default/docker
{% endif %}

View File

@@ -0,0 +1,2 @@
{% set hostname = grains.host %}
DAEMON_ARGS="-peer-addr {{hostname}}:7001 -name {{hostname}}"

View File

@@ -0,0 +1,11 @@
[Unit]
Description=etcd
Documentation=https://github.com/coreos/etcd
[Service]
Type=simple
EnvironmentFile=/etc/default/etcd
ExecStart=/usr/local/bin/etcd $DAEMON_ARGS
[Install]
WantedBy=multi-user.target

View File

@@ -46,6 +46,24 @@ etcd:
- group: etcd
- dir_mode: 700
{% if grains['os_family'] == 'RedHat' %}
/etc/default/etcd:
file.managed:
- source: salt://etcd/default
- template: jinja
- user: root
- group: root
- mode: 644
/usr/lib/systemd/system/etcd.service:
file.managed:
- source: salt://etcd/etcd.service
- user: root
- group: root
{% else %}
/etc/init.d/etcd:
file.managed:
- source: salt://etcd/initd
@@ -53,11 +71,17 @@ etcd:
- group: root
- mode: 755
{% endif %}
etcd-service:
service.running:
- name: etcd
- enable: True
- watch:
- file: /etc/etcd/etcd.conf
{% if grains['os_family'] == 'RedHat' %}
- file: /usr/lib/systemd/system/etcd.service
- file: /etc/default/etcd
{% endif %}
- cmd: etcd-install

View File

@@ -1,2 +1,11 @@
{%- set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
DAEMON_ARGS="$DAEMON_ARGS --etcd_servers=http://{{ ips[0][0] }}:4001"
{% set daemon_args = "$DAEMON_ARGS" %}
{% if grains['os_family'] == 'RedHat' %}
{% set daemon_args = "" %}
{% endif %}
{% if grains.etcd_servers is defined %}
{% set etcd_servers = "-etcd_servers=http://" + grains.etcd_servers + ":4001" %}
{% else %}
{% set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
{% set etcd_servers = "-etcd_servers=http://" + ips[0][0] + ":4001" %}
{% endif %}
DAEMON_ARGS="{{daemon_args}} {{etcd_servers}}"

View File

@@ -1,12 +1,21 @@
{% set root = '/var/src/kube-proxy' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% if grains['os_family'] == 'RedHat' %}
{% set environment_file = '/etc/sysconfig/kube-proxy' %}
{% else %}
{% set environment_file = '/etc/default/kube-proxy' %}
{% endif %}
{{ package_dir }}:
file.recurse:
- source: salt://kube-proxy/go
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -20,7 +29,11 @@ third-party-go:
- name: {{ root }}/src
- source: salt://third-party/go/src
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -46,6 +59,16 @@ kube-proxy-build:
- watch:
- cmd: kube-proxy-build
{% if grains['os_family'] == 'RedHat' %}
/usr/lib/systemd/system/kube-proxy.service:
file.managed:
- source: salt://kube-proxy/kube-proxy.service
- user: root
- group: root
{% else %}
/etc/init.d/kube-proxy:
file.managed:
- source: salt://kube-proxy/initd
@@ -53,7 +76,9 @@ kube-proxy-build:
- group: root
- mode: 755
/etc/default/kube-proxy:
{% endif %}
{{ environment_file }}:
file.managed:
- source: salt://kube-proxy/default
- template: jinja
@@ -75,5 +100,7 @@ kube-proxy:
- enable: True
- watch:
- cmd: kube-proxy-build
- file: /etc/default/kube-proxy
- file: {{ environment_file }}
{% if grains['os_family'] != 'RedHat' %}
- file: /etc/init.d/kube-proxy
{% endif %}

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
EnvironmentFile=/etc/sysconfig/kube-proxy
ExecStart=/usr/local/bin/kube-proxy "$DAEMON_ARGS"
[Install]
WantedBy=multi-user.target

View File

@@ -1,2 +1,18 @@
{%- set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
DAEMON_ARGS="$DAEMON_ARGS -etcd_servers=http://{{ ips[0][0] }}:4001 -address=$HOSTNAME -config=/etc/kubernetes/manifests"
{% set daemon_args = "$DAEMON_ARGS" %}
{% if grains['os_family'] == 'RedHat' %}
{% set daemon_args = "" %}
{% endif %}
{% if grains.etcd_servers is defined %}
{% set etcd_servers = "-etcd_servers=http://" + grains.etcd_servers + ":4001" %}
{% else %}
{% set ips = salt['mine.get']('roles:kubernetes-master', 'network.ip_addrs', 'grain').values() %}
{% set etcd_servers = "-etcd_servers=http://" + ips[0][0] + ":4001" %}
{% endif %}
{% if grains.minion_ip is defined %}
{% set address = "-address=" + grains.minion_ip + " -hostname_override=" + grains.minion_ip %}
{% else %}
{% set address = "-address=$HOSTNAME" %}
{% endif %}
DAEMON_ARGS="{{daemon_args}} {{etcd_servers}} {{address}} -config=/etc/kubernetes/manifests"

View File

@@ -1,12 +1,21 @@
{% set root = '/var/src/kubelet' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% if grains['os_family'] == 'RedHat' %}
{% set environment_file = '/etc/sysconfig/kubelet' %}
{% else %}
{% set environment_file = '/etc/default/kubelet' %}
{% endif %}
{{ package_dir }}:
file.recurse:
- source: salt://kubelet/go
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -20,7 +29,11 @@ kubelet-third-party-go:
- name: {{ root }}/src
- source: salt://third-party/go/src
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
@@ -29,7 +42,7 @@ kubelet-third-party-go:
- group
- mode
/etc/default/kubelet:
{{ environment_file}}:
file.managed:
- source: salt://kubelet/default
- template: jinja
@@ -54,6 +67,16 @@ kubelet-build:
- watch:
- cmd: kubelet-build
{% if grains['os_family'] == 'RedHat' %}
/usr/lib/systemd/system/kubelet.service:
file.managed:
- source: salt://kubelet/kubelet.service
- user: root
- group: root
{% else %}
/etc/init.d/kubelet:
file.managed:
- source: salt://kubelet/initd
@@ -61,6 +84,8 @@ kubelet-build:
- group: root
- mode: 755
{% endif %}
kubelet:
group.present:
- system: True
@@ -78,5 +103,7 @@ kubelet:
- watch:
- cmd: kubelet-build
- file: /usr/local/bin/kubelet
{% if grains['os_family'] != 'RedHat' %}
- file: /etc/init.d/kubelet
{% endif %}

View File

@@ -0,0 +1,10 @@
[Unit]
Description=Kubernetes Kubelet Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
[Service]
EnvironmentFile=/etc/sysconfig/kubelet
ExecStart=/usr/local/bin/kubelet "$DAEMON_ARGS"
[Install]
WantedBy=multi-user.target

View File

@@ -23,6 +23,7 @@ nginx:
file:
- managed
- source: salt://nginx/nginx.conf
- template: jinja
- user: root
- group: root
- mode: 644
@@ -30,6 +31,7 @@ nginx:
/etc/nginx/sites-enabled/default:
file:
- managed
- makedirs: true
- source: salt://nginx/kubernetes-site
- user: root
- group: root

View File

@@ -1,4 +1,9 @@
{% if grains['os_family'] == 'RedHat' %}
user nginx;
{% else %}
user www-data;
{% endif %}
worker_processes 4;
pid /var/run/nginx.pid;

View File

@@ -13,7 +13,7 @@ base:
'roles:kubernetes-master':
- match: grain
- golang
- etcd
- apiserver
- controller-manager
- etcd
- nginx