
The script allows also to push binaries only to the master or specified node. Added support for released tars. Introduced new push methods and implemented them for GCE.
89 lines
2.3 KiB
Bash
Executable File
89 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2014 The Kubernetes Authors 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.
|
|
|
|
# Push a new release to the cluster.
|
|
#
|
|
# This will find the release tar, cause it to be downloaded, unpacked, installed
|
|
# and enacted.
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
|
source "${KUBE_ROOT}/cluster/kube-env.sh"
|
|
source "${KUBE_ROOT}/cluster/${KUBERNETES_PROVIDER}/util.sh"
|
|
|
|
function usage() {
|
|
echo "${0} [-m|-n <node id>] <version>"
|
|
echo " Updates Kurnetes binaries. Can be done for all components (by default), master(-m) or specified node(-n)."
|
|
echo " If the version is not specified will try to use local binaries."
|
|
echo " Warning: upgrading single node is experimental"
|
|
}
|
|
|
|
push_to_master=false
|
|
push_to_node=false
|
|
|
|
while getopts "mn:h" opt; do
|
|
case ${opt} in
|
|
m)
|
|
push_to_master=true;;
|
|
n)
|
|
push_to_node=true
|
|
node_id="$OPTARG";;
|
|
h)
|
|
usage
|
|
exit 0;;
|
|
\?)
|
|
echo "Invalid option: -$OPTARG" >&2
|
|
usage
|
|
exit 1;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
if [[ "${push_to_master}" == "true" ]] && [[ "${push_to_node}" == "true" ]]; then
|
|
echo "Only one of options -m -n should be specified"
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
verify-prereqs
|
|
KUBE_VERSION=${1-}
|
|
|
|
if [[ "${push_to_master}" == "false" ]] && [[ "${push_to_node}" == "false" ]]; then
|
|
echo "Updating cluster using provider: $KUBERNETES_PROVIDER"
|
|
kube-push
|
|
fi
|
|
|
|
if [[ "${push_to_master}" == "true" ]]; then
|
|
echo "Udating master to version ${KUBE_VERSION:-"dev"}"
|
|
prepare-push false
|
|
push-master
|
|
fi
|
|
|
|
if [[ "${push_to_node}" == "true" ]]; then
|
|
echo "Updating node $node_id to version ${KUBE_VERSION:-"dev"}"
|
|
prepare-push true
|
|
push-node $node_id
|
|
fi
|
|
|
|
echo "Validating cluster post-push..."
|
|
|
|
"${KUBE_ROOT}/cluster/validate-cluster.sh"
|
|
|
|
echo "Done"
|