97 lines
2.4 KiB
Bash
97 lines
2.4 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
# Copyright 2014 The Kubernetes Authors.
|
||
|
#
|
||
|
# 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
|
||
|
|
||
|
echo "kube-push.sh is currently broken; see https://github.com/kubernetes/kubernetes/issues/17397"
|
||
|
exit 1
|
||
|
|
||
|
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/..
|
||
|
|
||
|
if [ -f "${KUBE_ROOT}/cluster/env.sh" ]; then
|
||
|
source "${KUBE_ROOT}/cluster/env.sh"
|
||
|
fi
|
||
|
|
||
|
source "${KUBE_ROOT}/cluster/kube-util.sh"
|
||
|
|
||
|
function usage() {
|
||
|
echo "${0} [-m|-n <node id>] <version>"
|
||
|
echo " Updates Kubernetes 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
|
||
|
verify-kube-binaries
|
||
|
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 "Updating 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"
|