mirror of https://github.com/k3s-io/k3s
94 lines
3.4 KiB
Bash
Executable File
94 lines
3.4 KiB
Bash
Executable File
# 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.
|
|
|
|
# A library of helper functions and constant for the local config.
|
|
|
|
# Use the config file specified in $KUBE_CONFIG_FILE, or default to
|
|
# config-default.sh.
|
|
source $(dirname ${BASH_SOURCE})/${KUBE_CONFIG_FILE-"config-default.sh"}
|
|
|
|
# Find the release to use. If passed in, go with that and validate. If not use
|
|
# the release/config.sh version assuming a dev workflow.
|
|
function find-release() {
|
|
if [ -n "$1" ]; then
|
|
RELEASE_NORMALIZED=$1
|
|
else
|
|
local RELEASE_CONFIG_SCRIPT=$(dirname $0)/../release/config.sh
|
|
if [ -f $(dirname $0)/../release/config.sh ]; then
|
|
. $RELEASE_CONFIG_SCRIPT
|
|
normalize_release
|
|
fi
|
|
fi
|
|
|
|
# Do one final check that we have a good release
|
|
if ! gsutil -q stat $RELEASE_NORMALIZED/master-release.tgz; then
|
|
echo "Could not find release tar. If developing, make sure you have run src/release/release.sh to create a release."
|
|
exit 1
|
|
fi
|
|
echo "Release: ${RELEASE_NORMALIZED}"
|
|
}
|
|
|
|
# Use the gcloud defaults to find the project. If it is already set in the
|
|
# environment then go with that.
|
|
function detect-project () {
|
|
if [ -z "$PROJECT" ]; then
|
|
PROJECT=$(gcloud config list project | tail -n 1 | cut -f 3 -d ' ')
|
|
fi
|
|
|
|
if [ -z "$PROJECT" ]; then
|
|
echo "Could not detect Google Cloud Platform project. Set the default project using 'gcloud config set project <PROJECT>'"
|
|
exit 1
|
|
fi
|
|
echo "Project: $PROJECT (autodetected from gcloud config)"
|
|
}
|
|
|
|
function detect-minions () {
|
|
KUBE_MINION_IP_ADDRESSES=()
|
|
for (( i=0; i<${#MINION_NAMES[@]}; i++)); do
|
|
local minion_ip=$(gcloud compute instances get ${MINION_NAMES[$i]} \
|
|
--fields networkInterfaces[].accessConfigs[].natIP --format=text \
|
|
| tail -n 1 | cut -f 2 -d ' ')
|
|
echo "Found ${MINION_NAMES[$i]} at ${minion_ip}"
|
|
KUBE_MINION_IP_ADDRESSES+=("${minion_ip}")
|
|
done
|
|
if [ -z "$KUBE_MINION_IP_ADDRESSES" ]; then
|
|
echo "Could not detect Kubernetes minion nodes. Make sure you've launched a cluster with 'kube-up.sh'"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
function detect-master () {
|
|
KUBE_MASTER=${MASTER_NAME}
|
|
KUBE_MASTER_IP=$(gcloud compute instances get ${MASTER_NAME} \
|
|
--fields networkInterfaces[].accessConfigs[].natIP --format=text \
|
|
| tail -n 1 | cut -f 2 -d ' ')
|
|
if [ -z "$KUBE_MASTER_IP" ]; then
|
|
echo "Could not detect Kubernetes master node. Make sure you've launched a cluster with 'kube-up.sh'"
|
|
exit 1
|
|
fi
|
|
echo "Using master: $KUBE_MASTER (external IP: $KUBE_MASTER_IP)"
|
|
}
|
|
|
|
function get-password {
|
|
file=${HOME}/.kubernetes_auth
|
|
if [ -e ${file} ]; then
|
|
user=$(cat $file | python -c 'import json,sys;print json.load(sys.stdin)["User"]')
|
|
passwd=$(cat $file | python -c 'import json,sys;print json.load(sys.stdin)["Password"]')
|
|
return
|
|
fi
|
|
user=admin
|
|
passwd=$(python -c 'import string,random; print "".join(random.choice(string.ascii_letters + string.digits) for _ in range(16))')
|
|
}
|
|
|