From 4996ccbf2db05eabf82a41a4163448e4b5947f47 Mon Sep 17 00:00:00 2001 From: Abhishek Shah Date: Mon, 6 Apr 2015 17:54:06 -0700 Subject: [PATCH] Load docker images of kubernetes components after docker is installed. --- .../saltbase/salt/kube-master-addons/init.sls | 37 +++++++ .../saltbase/salt/kube-master-addons/initd | 100 ++++++++++++++++++ .../kube-master-addons.service | 9 ++ .../kube-master-addons/kube-master-addons.sh | 24 +++++ cluster/saltbase/salt/top.sls | 1 + 5 files changed, 171 insertions(+) create mode 100644 cluster/saltbase/salt/kube-master-addons/init.sls create mode 100644 cluster/saltbase/salt/kube-master-addons/initd create mode 100644 cluster/saltbase/salt/kube-master-addons/kube-master-addons.service create mode 100644 cluster/saltbase/salt/kube-master-addons/kube-master-addons.sh diff --git a/cluster/saltbase/salt/kube-master-addons/init.sls b/cluster/saltbase/salt/kube-master-addons/init.sls new file mode 100644 index 00000000000..0f5cb4c2a65 --- /dev/null +++ b/cluster/saltbase/salt/kube-master-addons/init.sls @@ -0,0 +1,37 @@ +/etc/kubernetes/kube-master-addons.sh: + file.managed: + - source: salt://kube-master-addons/kube-master-addons.sh + - user: root + - group: root + - mode: 755 + +{% if grains['os_family'] == 'RedHat' %} + +/usr/lib/systemd/system/kube-master-addons.service: + file.managed: + - source: salt://kube-master-addons/kube-master-addons.service + - user: root + - group: root + +{% else %} + +/etc/init.d/kube-master-addons: + file.managed: + - source: salt://kube-master-addons/initd + - user: root + - group: root + - mode: 755 + +{% endif %} + +# Used to restart kube-master-addons service each time salt is run +master-docker-image-tags: + file.touch: + - name: /srv/pillar/docker-images.sls + +kube-master-addons: + service.running: + - enable: True + - restart: True + - watch: + - file: master-docker-image-tags diff --git a/cluster/saltbase/salt/kube-master-addons/initd b/cluster/saltbase/salt/kube-master-addons/initd new file mode 100644 index 00000000000..ac1d87eb28c --- /dev/null +++ b/cluster/saltbase/salt/kube-master-addons/initd @@ -0,0 +1,100 @@ +#!/bin/bash +# +### BEGIN INIT INFO +# Provides: kube-master-addons +# Required-Start: $local_fs $network $syslog docker +# Required-Stop: +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Kubernetes Master Addon Object Manager +# Description: +# Enforces installation of Kubernetes Master Addon Objects +### END INIT INFO + + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="Kubernetes Master Addon Object Manager" +NAME=kube-master-addons +DAEMON_LOG_FILE=/var/log/$NAME.log +PIDFILE=/var/run/$NAME.pid +SCRIPTNAME=/etc/init.d/$NAME +KUBE_MASTER_ADDONS_SH=/etc/kubernetes/kube-master-addons.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.2-14) to ensure that this file is present +# and status_of_proc is working. +. /lib/lsb/init-functions + + + + +# +# Function that starts the daemon/service +# +do_start() +{ + ${KUBE_MASTER_ADDONS_SH} >${DAEMON_LOG_FILE} 2>&1 & + echo $! > ${PIDFILE} + disown +} + +# +# Function that stops the daemon/service +# +do_stop() +{ + kill $(cat ${PIDFILE}) + rm ${PIDFILE} + return +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 || exit 0 ;; + 2) log_end_msg 1 || exit 1 ;; + esac + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) exit 1 ;; + esac + ;; + status) + if [ ! -e ${PIDFILE} ]; then + exit 1 + fi + pid=$(cat ${PIDFILE}) + # Checks that ${pid} is running AND is us. + ps --no-headers ${pid} | grep ${SCRIPTNAME} > /dev/null || exit $? + ;; + + restart|force-reload) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac diff --git a/cluster/saltbase/salt/kube-master-addons/kube-master-addons.service b/cluster/saltbase/salt/kube-master-addons/kube-master-addons.service new file mode 100644 index 00000000000..10b954931ed --- /dev/null +++ b/cluster/saltbase/salt/kube-master-addons/kube-master-addons.service @@ -0,0 +1,9 @@ +[Unit] +Description=Kubernetes-Master Addon Object Manager +Documentation=https://github.com/GoogleCloudPlatform/kubernetes + +[Service] +ExecStart=/etc/kubernetes/kube-master-addons.sh + +[Install] +WantedBy=multi-user.target diff --git a/cluster/saltbase/salt/kube-master-addons/kube-master-addons.sh b/cluster/saltbase/salt/kube-master-addons/kube-master-addons.sh new file mode 100644 index 00000000000..3ef49cb48fc --- /dev/null +++ b/cluster/saltbase/salt/kube-master-addons/kube-master-addons.sh @@ -0,0 +1,24 @@ +#!/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. + + while true; do + if which docker 1>/dev/null 2>&1; then + if docker load -i /srv/salt/kube-bins/kube-apiserver.tar 1>/dev/null 2>&1; then + break; + fi; + fi; + done; + diff --git a/cluster/saltbase/salt/top.sls b/cluster/saltbase/salt/top.sls index b950d09fa75..cfa15440836 100644 --- a/cluster/saltbase/salt/top.sls +++ b/cluster/saltbase/salt/top.sls @@ -35,6 +35,7 @@ base: - nginx - cadvisor - kube-client-tools + - kube-master-addons {% if grains['cloud'] is defined and grains['cloud'] != 'vagrant' %} - logrotate {% endif %}