kube-router/hack/vagrant-up.sh
Bryan Zubrod 7c489a6e26 Update DaemonSet manifests (#188)
* Update DaemonSet, etc manifests

- Remove beta annotation versions of init containers
- Add YAML InitContainers spec to all manifests
- Add CNI config ConfigMap to all manifests
- Make indentation, volume names, etc consistent
- Set all kubeconfig volumes to readonly

* Use IfNotPresent image pull policy for vagrant testing

- Avoids an error with busybox init container image fetching
2017-10-08 18:40:21 -05:00

112 lines
3.4 KiB
Bash
Executable File

#!/usr/bin/env sh
# vim: noai:ts=2:sw=2:set expandtab
set -e
HACK_DIR="$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd -P)"
export HACK_DIR
# shellcheck source=vagrant-common.sh
. "${HACK_DIR}/vagrant-common.sh"
if [ -n "${1}" ]; then
echo "### Usage ###"
echo "# Single node cluster."
echo "${0}"
echo
echo "# Multi node cluster."
echo "HACK_MULTI_NODE=\"true\" ${0}"
echo
echo "# Use custom k8s manifests."
echo "HACK_MANIFEST_DIRS=\"/path/to/yaml/files\" ${0}"
echo
echo "# HACK_MANIFEST_DIRS is one or more space separated directories and"
echo "# should at least include kube-router.yaml and kube-router-cfg.yaml"
echo "# or equivalent."
echo
exit 0
fi
# Get bootkube
if [ -d "${BK_CLONE_DIR}/.git" ]; then
echo "INFO: Bootkube repo already cloned."
echo "INFO: Checking out version ${BK_VERSION}."
cd "${BK_CLONE_DIR}"
git fetch
git checkout "${BK_VERSION}"
else
echo "INFO: Bootkube repo not found."
echo "INFO: Cloning bootkube version ${BK_VERSION}."
git clone --depth=1 --branch "${BK_VERSION}" "${BK_CLONE_URL}" "${BK_CLONE_DIR}"
fi
echo "INFO: Exporting your kube-router container image."
export_latest_image
echo "INFO: Caching hyperkube images to Bootkube local-images directory."
"${HACK_DIR}/sync-image-cache.sh"
# Copy custom manifests for Bootkube to use
echo "INFO: Using custom manifests from ${HACK_MANIFEST_DIRS}"
mkdir -p "${BK_CLONE_DIR}/hack/custom-manifests"
for i in ${HACK_MANIFEST_DIRS}
do
cp -f "${i}"/*.yaml "${BK_CLONE_DIR}/hack/custom-manifests" \
|| echo "INFO: No custom .yaml files found."
cp -f "${i}"/*.yml "${BK_CLONE_DIR}/hack/custom-manifests" \
|| echo "INFO: No custom .yml files found."
if [ -f "${KR_MANIFEST_PATH}" ]; then
echo "Modifying image attribute in ${KR_MANIFEST_PATH}"
sed -i -e "s/image: cloudnativelabs\/kube-router/image: ${KR_IMAGE_TAG}/" \
"${KR_MANIFEST_PATH}"
sed -i -e "s/imagePullPolicy: Always/imagePullPolicy: IfNotPresent/" "${KR_MANIFEST_PATH}"
echo "Verify modification:"
grep -F "image: " "${KR_MANIFEST_PATH}"
grep -F "imagePullPolicy: " "${KR_MANIFEST_PATH}"
else
echo "kube-router manifest not found at ${KR_MANIFEST_PATH}"
echo "Couldn't modify."
fi
done
# Build Bootkube
echo "INFO: Building Bootkube"
make -C "${BK_CLONE_DIR}"
# Start cluster
echo "INFO: Starting VM(s) and cluster"
cd "${BK_HACK_DIR}"
KUBE_ROUTER="true" ./bootkube-up
# Create symlink to bootkube hack dir
ln -sf "${BK_HACK_DIR}" "${BK_SHORTCUT_DIR}"
echo
echo "SUCCESS! The local cluster is ready."
echo
echo "### kubectl usage ###"
echo "# Quickstart - Use this kubeconfig for individual commands"
echo "KUBECONFIG=${BK_SHORTCUT_DIR}/cluster/auth/kubeconfig kubectl get pods --all-namespaces -o wide"
echo "#"
echo "## OR ##"
echo "#"
echo "# Use this kubeconfig for the current terminal session"
echo "KUBECONFIG=${BK_SHORTCUT_DIR}/cluster/auth/kubeconfig"
echo "export KUBECONFIG"
echo "kubectl get pods --all-namespaces -o wide"
echo "#"
echo "## OR ##"
echo "#"
echo "# Backup and replace your default kubeconfig"
echo "# Note: This will continue to work on recreated local clusters"
echo "mv ~/.kube/config ~/.kube/config-backup"
echo "ln -s ${BK_SHORTCUT_DIR}/cluster/auth/kubeconfig ~/.kube/config"
echo
echo "### SSH ###"
echo "# Get node names"
echo "make vagrant status"
echo "# SSH into a the controller node (c1)"
echo "make vagrant ssh c1"
echo
echo "Enjoy!"