Use binary releases for cluster push scripts.

This is for GCE right now.  Other clouds/clusters are probably broken.
This commit is contained in:
Joe Beda
2014-09-23 15:54:27 -07:00
parent f5dffe3bfe
commit 15cd6f07d6
19 changed files with 397 additions and 437 deletions

50
cluster/saltbase/install.sh Executable file
View File

@@ -0,0 +1,50 @@
#!/bin/bash
# Copyright 2014 Google Inc. 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.
# This script will set up the salt directory on the target server. It takes one
# argument that is a tarball with the pre-compiled kuberntes server binaries.
set -o errexit
set -o nounset
set -o pipefail
readonly SALTBASE="$(dirname $0)"
readonly SERVER_BIN_TAR=${1-}
if [[ -z "$SERVER_BIN_TAR" ]]; then
echo "!!! No binaries specified"
exit 1
fi
# Create a temp dir for untaring
KUBE_TEMP=$(mktemp -d -t kubernetes.XXXXXX)
trap "rm -rf ${KUBE_TEMP}" EXIT
# This file is meant to run on the master. It will install the salt configs
# into the appropriate place on the master.
echo "+++ Installing salt files"
mkdir -p /srv
# This bash voodoo will prepend $SALTBASE to the start of each item in the
# $SALTDIRS array
readonly SALTDIRS=(salt pillar reactor)
cp -R --preserve=mode "${SALTDIRS[@]/#/${SALTBASE}/}" /srv/
echo "+++ Install binaries from tar: $1"
tar -xz -C "${KUBE_TEMP}" -f "$1"
mkdir -p /srv/salt/kube-bins
cp "${KUBE_TEMP}/kubernetes/server/bin/"* /srv/salt/kube-bins/

View File

@@ -1,5 +1,5 @@
base:
'*':
- mine
- common
- cluster-params
- privilege

View File

@@ -9,7 +9,7 @@
{% set cloud_provider = "-cloud_provider=" + grains.cloud_provider %}
{% endif %}
{% set minion_regexp = "-minion_regexp='" + pillar['instance_prefix'] + ".*'" %}
{% set minion_regexp = "-minion_regexp='" + pillar['node_instance_prefix'] + ".*'" %}
{% set address = "-address=127.0.0.1" %}
{% if grains.etcd_servers is defined %}

View File

@@ -1,30 +1,9 @@
{% set root = '/var/src/apiserver' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% set go_opt = pillar['go_opt'] %}
{% 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
- recurse:
- user
- group
- mode
{{ environment_file }}:
file.managed:
- source: salt://apiserver/default
@@ -33,22 +12,12 @@
- group: root
- mode: 644
apiserver-build:
cmd.run:
- cwd: {{ root }}
- names:
- go build {{ go_opt }} {{ package }}/cmd/apiserver
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
- GOPATH: {{ root }}:{{ package_dir }}/Godeps/_workspace
- require:
- file: {{ package_dir }}
/usr/local/bin/apiserver:
file.symlink:
- target: {{ root }}/apiserver
- watch:
- cmd: apiserver-build
file.managed:
- source: salt://kube-bins/apiserver
- user: root
- group: root
- mode: 755
{% if grains['os_family'] == 'RedHat' %}
@@ -82,7 +51,6 @@ apiserver:
service.running:
- enable: True
- watch:
- cmd: apiserver-build
- file: {{ environment_file }}
- file: /usr/local/bin/apiserver
{% if grains['os_family'] != 'RedHat' %}

View File

@@ -1,30 +1,9 @@
{% set root = '/var/src/controller-manager' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% set go_opt = pillar['go_opt'] %}
{% 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
- recurse:
- user
- group
- mode
{{ environment_file }}:
file.managed:
- source: salt://controller-manager/default
@@ -33,22 +12,12 @@
- group: root
- mode: 644
controller-manager-build:
cmd.run:
- cwd: {{ root }}
- names:
- go build {{ go_opt }} {{ package }}/cmd/controller-manager
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
- GOPATH: {{ root }}:{{ package_dir }}/Godeps/_workspace
- require:
- file: {{ package_dir }}
/usr/local/bin/controller-manager:
file.symlink:
- target: {{ root }}/controller-manager
- watch:
- cmd: controller-manager-build
file.managed:
- source: salt://kube-bins/controller-manager
- user: root
- group: root
- mode: 755
{% if grains['os_family'] == 'RedHat' %}
@@ -82,7 +51,6 @@ controller-manager:
service.running:
- enable: True
- watch:
- cmd: controller-manager-build
- file: /usr/local/bin/controller-manager
- file: {{ environment_file }}
{% if grains['os_family'] != 'RedHat' %}

View File

@@ -1,21 +1,43 @@
etcd-install:
git.latest:
- target: /var/src/etcd
- name: git://github.com/coreos/etcd
cmd.wait:
- cwd: /var/src/etcd
- name: |
git checkout ab4bcc18694644d12f0c038339d8d039072502b1
./build
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
{% set etcd_version="v0.4.6" %}
{% set etcd_tar_url="https://github.com/coreos/etcd/releases/download/%s/etcd-%s-linux-amd64.tar.gz"
| format(etcd_version, etcd_version) %}
{% set etcd_tar_hash="md5=2949e9163e59dc4f8db9ad92f3245b20" %}
etcd-tar:
archive:
- extracted
- user: root
- name: /usr/local/src
- source: {{ etcd_tar_url }}
- source_hash: {{ etcd_tar_hash }}
- archive_format: tar
- if_missing: /usr/local/src/etcd-{{ etcd_version }}-linux-amd64
- tar_options: z
file.directory:
- name: /usr/local/src/etcd-{{ etcd_version }}-linux-amd64
- user: root
- group: root
- watch:
- git: etcd-install
- archive: etcd-tar
- recurse:
- user
- group
etcd-symlink:
file.symlink:
- name: /usr/local/bin/etcd
- target: /var/src/etcd/bin/etcd
- target: /usr/local/src/etcd-{{ etcd_version }}-linux-amd64/etcd
- force: true
- watch:
- cmd: etcd-install
- archive: etcd-tar
etcdctl-symlink:
file.symlink:
- name: /usr/local/bin/etcdctl
- target: /usr/local/src/etcd-{{ etcd_version }}-linux-amd64/etcdctl
- force: true
- watch:
- archive: etcd-tar
etcd:
group.present:
@@ -25,8 +47,6 @@ etcd:
- gid_from_name: True
- shell: /sbin/nologin
- home: /var/etcd
- require:
- group: etcd
/etc/etcd:
file.directory:
@@ -84,5 +104,6 @@ etcd-service:
- file: /usr/lib/systemd/system/etcd.service
- file: /etc/default/etcd
{% endif %}
- cmd: etcd-install
- file: etcd-tar
- file: etcd-symlink

View File

@@ -1,16 +0,0 @@
etcdctl-install:
git.latest:
- target: /var/src/etcdctl
- name: git://github.com/coreos/etcdctl
cmd.wait:
- cwd: /var/src/etcdctl
- name: ./build
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
- watch:
- git: etcdctl-install
file.symlink:
- name: /usr/local/bin/etcdctl
- target: /var/src/etcdctl/bin/etcdctl
- watch:
- cmd: etcdctl-install

View File

@@ -1,23 +0,0 @@
{% set go_version = '1.2.2' %}
{% set go_arch = 'linux-amd64' %}
{% set go_archive = 'go%s.%s.tar.gz' | format(go_version, go_arch) %}
{% set go_url = 'http://golang.org/dl/' + go_archive %}
{% set go_hash = 'sha1=6bd151ca49c435462c8bf019477a6244b958ebb5' %}
get-golang:
file.managed:
- name: /var/cache/{{ go_archive }}
- source: {{ go_url }}
- source_hash: {{ go_hash }}
cmd.wait:
- cwd: /usr/local
- name: tar xzf /var/cache/{{ go_archive }}
- watch:
- file: get-golang
install-golang:
file.symlink:
- name: /usr/local/bin/go
- target: /usr/local/go/bin/go
- watch:
- cmd: get-golang

View File

@@ -1,46 +1,15 @@
{% set root = '/var/src/kube-proxy' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% set go_opt = pillar['go_opt'] %}
{% 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
- recurse:
- user
- group
- mode
kube-proxy-build:
cmd.run:
- cwd: {{ root }}
- names:
- go build {{ go_opt }} {{ package }}/cmd/proxy
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
- GOPATH: {{ root }}:{{ package_dir }}/Godeps/_workspace
- require:
- file: {{ package_dir }}
/usr/local/bin/kube-proxy:
file.symlink:
- target: {{ root }}/proxy
- watch:
- cmd: kube-proxy-build
file.managed:
- source: salt://kube-bins/proxy
- user: root
- group: root
- mode: 755
{% if grains['os_family'] == 'RedHat' %}
@@ -82,7 +51,6 @@ kube-proxy:
service.running:
- enable: True
- watch:
- cmd: kube-proxy-build
- file: {{ environment_file }}
{% if grains['os_family'] != 'RedHat' %}
- file: /etc/init.d/kube-proxy

View File

@@ -1,30 +1,9 @@
{% set root = '/var/src/kubelet' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% set go_opt = pillar['go_opt'] %}
{% 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
- recurse:
- user
- group
- mode
{{ environment_file}}:
file.managed:
- source: salt://kubelet/default
@@ -33,22 +12,12 @@
- group: root
- mode: 644
kubelet-build:
cmd.run:
- cwd: {{ root }}
- names:
- go build {{ go_opt }} {{ package }}/cmd/kubelet
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
- GOPATH: {{ root }}:{{ package_dir }}/Godeps/_workspace
- require:
- file: {{ package_dir }}
/usr/local/bin/kubelet:
file.symlink:
- target: {{ root }}/kubelet
- watch:
- cmd: kubelet-build
file.managed:
- source: salt://kube-bins/kubelet
- user: root
- group: root
- mode: 755
{% if grains['os_family'] == 'RedHat' %}
@@ -84,7 +53,6 @@ kubelet:
service.running:
- enable: True
- watch:
- cmd: kubelet-build
- file: /usr/local/bin/kubelet
{% if grains['os_family'] != 'RedHat' %}
- file: /etc/init.d/kubelet

View File

@@ -1,30 +1,9 @@
{% set root = '/var/src/scheduler' %}
{% set package = 'github.com/GoogleCloudPlatform/kubernetes' %}
{% set package_dir = root + '/src/' + package %}
{% set go_opt = pillar['go_opt'] %}
{% if grains['os_family'] == 'RedHat' %}
{% set environment_file = '/etc/sysconfig/scheduler' %}
{% else %}
{% set environment_file = '/etc/default/scheduler' %}
{% endif %}
{{ package_dir }}:
file.recurse:
- source: salt://scheduler/go
- user: root
{% if grains['os_family'] == 'RedHat' %}
- group: root
{% else %}
- group: staff
{% endif %}
- dir_mode: 775
- file_mode: 664
- makedirs: True
- recurse:
- user
- group
- mode
{{ environment_file }}:
file.managed:
- source: salt://scheduler/default
@@ -33,22 +12,12 @@
- group: root
- mode: 644
scheduler-build:
cmd.run:
- cwd: {{ root }}
- names:
- go build {{ go_opt }} {{ package }}/plugin/cmd/scheduler
- env:
- PATH: {{ grains['path'] }}:/usr/local/bin
- GOPATH: {{ root }}:{{ package_dir }}/Godeps/_workspace
- require:
- file: {{ package_dir }}
/usr/local/bin/scheduler:
file.symlink:
- target: {{ root }}/scheduler
- watch:
- cmd: scheduler-build
file.managed:
- source: salt://kube-bins/scheduler
- user: root
- group: root
- mode: 755
{% if grains['os_family'] == 'RedHat' %}
@@ -82,7 +51,6 @@ scheduler:
service.running:
- enable: True
- watch:
- cmd: scheduler-build
- file: /usr/local/bin/scheduler
- file: {{ environment_file }}
{% if grains['os_family'] != 'RedHat' %}

View File

@@ -4,12 +4,12 @@ base:
'roles:kubernetes-pool':
- match: grain
- golang
- docker
- kubelet
- kube-proxy
- cadvisor
- nsinit
# We need a binary release of nsinit
# - nsinit
- logrotate
{% if grains['cloud'] is defined and grains['cloud'] == 'azure' %}
- openvpn-client
@@ -19,9 +19,7 @@ base:
'roles:kubernetes-master':
- match: grain
- golang
- etcd
- etcdctl
- apiserver
- controller-manager
- scheduler