mirror of https://github.com/k3s-io/k3s
154 lines
4.7 KiB
Bash
Executable File
154 lines
4.7 KiB
Bash
Executable File
#!/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.
|
|
|
|
# Bring up a Kubernetes cluster.
|
|
# Usage:
|
|
# wget -q -O - https://get.k8s.io | bash
|
|
# or
|
|
# curl -sS https://get.k8s.io | bash
|
|
#
|
|
# Advanced options
|
|
# Set KUBERNETES_PROVIDER to choose between different providers:
|
|
# Google Compute Engine [default]
|
|
# * export KUBERNETES_PROVIDER=gce; wget -q -O - https://get.k8s.io | bash
|
|
# Google Container Engine
|
|
# * export KUBERNETES_PROVIDER=gke; wget -q -O - https://get.k8s.io | bash
|
|
# Amazon EC2
|
|
# * export KUBERNETES_PROVIDER=aws; wget -q -O - https://get.k8s.io | bash
|
|
# Libvirt (with CoreOS as a guest operating system)
|
|
# * export KUBERNETES_PROVIDER=libvirt-coreos; wget -q -O - https://get.k8s.io | bash
|
|
# Microsoft Azure
|
|
# * export KUBERNETES_PROVIDER=azure-legacy; wget -q -O - https://get.k8s.io | bash
|
|
# Vagrant (local virtual machines)
|
|
# * export KUBERNETES_PROVIDER=vagrant; wget -q -O - https://get.k8s.io | bash
|
|
# VMWare VSphere
|
|
# * export KUBERNETES_PROVIDER=vsphere; wget -q -O - https://get.k8s.io | bash
|
|
# VMWare Photon Controller
|
|
# * export KUBERNETES_PROVIDER=photon-controller; wget -q -O - https://get.k8s.io | bash
|
|
# Rackspace
|
|
# * export KUBERNETES_PROVIDER=rackspace; wget -q -O - https://get.k8s.io | bash
|
|
# OpenStack-Heat
|
|
# * export KUBERNETES_PROVIDER=openstack-heat; wget -q -O - https://get.k8s.io | bash
|
|
#
|
|
# Set KUBERNETES_SKIP_DOWNLOAD to non-empty to skip downloading a release.
|
|
# Set KUBERNETES_SKIP_CONFIRM to skip the installation confirmation prompt.
|
|
# Set KUBERNETES_RELEASE to the release you want to use (e.g. 'v1.2.0'). See https://github.com/kubernetes/kubernetes/releases for release options
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
function create_cluster {
|
|
echo "Creating a kubernetes on ${KUBERNETES_PROVIDER:-gce}..."
|
|
(
|
|
cd kubernetes
|
|
./cluster/kube-up.sh
|
|
echo "Kubernetes binaries at ${PWD}/cluster/"
|
|
if [[ ":$PATH:" != *":${PWD}/cluster:"* ]]; then
|
|
echo "You may want to add this directory to your PATH in \$HOME/.profile"
|
|
fi
|
|
|
|
echo "Installation successful!"
|
|
)
|
|
}
|
|
|
|
if [[ "${KUBERNETES_SKIP_DOWNLOAD-}" ]]; then
|
|
create_cluster
|
|
exit 0
|
|
fi
|
|
|
|
if [[ -d "./kubernetes" ]]; then
|
|
if [[ -n "${KUBERNETES_SKIP_CONFIRM-}" ]]; then
|
|
echo "'kubernetes' directory already exist. Should we skip download step and start to create cluster based on it? [Y]/n"
|
|
read confirm
|
|
if [[ "$confirm" == "y" ]]; then
|
|
echo "Skipping download step."
|
|
create_cluster
|
|
exit 0
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
function get_latest_version_number {
|
|
local -r latest_url="https://storage.googleapis.com/kubernetes-release/release/stable.txt"
|
|
if [[ $(which wget) ]]; then
|
|
wget -qO- ${latest_url}
|
|
elif [[ $(which curl) ]]; then
|
|
curl -Ss ${latest_url}
|
|
else
|
|
echo "Couldn't find curl or wget. Bailing out." >&2
|
|
exit 4
|
|
fi
|
|
}
|
|
|
|
release=${KUBERNETES_RELEASE:-$(get_latest_version_number)}
|
|
release_url=https://storage.googleapis.com/kubernetes-release/release/${release}/kubernetes.tar.gz
|
|
|
|
uname=$(uname)
|
|
if [[ "${uname}" == "Darwin" ]]; then
|
|
platform="darwin"
|
|
elif [[ "${uname}" == "Linux" ]]; then
|
|
platform="linux"
|
|
else
|
|
echo "Unknown, unsupported platform: (${uname})."
|
|
echo "Supported platforms: Linux, Darwin."
|
|
echo "Bailing out."
|
|
exit 2
|
|
fi
|
|
|
|
machine=$(uname -m)
|
|
if [[ "${machine}" == "x86_64" ]]; then
|
|
arch="amd64"
|
|
elif [[ "${machine}" == "i686" ]]; then
|
|
arch="386"
|
|
elif [[ "${machine}" == "arm*" ]]; then
|
|
arch="arm"
|
|
elif [[ "${machine}" == "s390x*" ]]; then
|
|
arch="s390x"
|
|
elif [[ "${machine}" == "ppc64le" ]]; then
|
|
arch="ppc64le"
|
|
else
|
|
echo "Unknown, unsupported architecture (${machine})."
|
|
echo "Supported architectures x86_64, i686, arm, s390x, ppc64le."
|
|
echo "Bailing out."
|
|
exit 3
|
|
fi
|
|
|
|
file=kubernetes.tar.gz
|
|
|
|
echo "Downloading kubernetes release ${release} to ${PWD}/kubernetes.tar.gz"
|
|
if [[ -n "${KUBERNETES_SKIP_CONFIRM-}" ]]; then
|
|
echo "Is this ok? [Y]/n"
|
|
read confirm
|
|
if [[ "$confirm" == "n" ]]; then
|
|
echo "Aborting."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if [[ $(which wget) ]]; then
|
|
wget -N ${release_url}
|
|
elif [[ $(which curl) ]]; then
|
|
curl -L -z ${file} ${release_url} -o ${file}
|
|
else
|
|
echo "Couldn't find curl or wget. Bailing out."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Unpacking kubernetes release ${release}"
|
|
tar -xzf ${file}
|
|
|
|
create_cluster
|