Files
node-problem-detector/test/e2e-install.sh
Karan Goel 2a2bab3d28 Add network interface stats
We do not have to collect these often, so for now set the collection
interval to 120s (even though the Stackdriver exporter is still set to
export every 60s).
2021-01-20 08:56:34 -08:00

103 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Copyright 2019 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.
# This script is for installing node problem detector (NPD) on a running node
# in metric-only mode, as a setup for NPD e2e tests.
set -o errexit
set -o nounset
set -o pipefail
readonly BIN_DIR=/home/kubernetes/bin
readonly CONFIG_DIR=/home/kubernetes/node-problem-detector/config
function print-help() {
echo "Usage: e2e-install.sh [flags] [command]"
echo
echo "Available flags:"
echo " -t [TARBALL] Specify the path of the NPD tarball (generated by 'make build-tar')."
echo
echo "Available commands:"
echo " help Print this help message"
echo " install Installs NPD to the this machine"
echo
echo "Examples:"
echo " e2e-install.sh help"
echo " e2e-install.sh -t /tmp/npd.tar.gz install"
}
function install-npd() {
if [[ -z "${TARBALL}" ]]; then
echo "ERROR: tarball flag is missing."
exit 1
fi
readonly workdir=$(mktemp -d)
tar -xf "${TARBALL}" --directory "${workdir}"
echo "Preparing NPD binary directory."
mkdir -p "${BIN_DIR}"
mount --bind "${BIN_DIR}" "${BIN_DIR}"
# Below remount is to work around COS's noexec mount on /home.
mount -o remount,exec "${BIN_DIR}"
echo "Stopping NPD"
systemctl stop node-problem-detector.service || true
echo "Installing NPD binary."
cp "${workdir}"/bin/node-problem-detector "${BIN_DIR}"
echo "Installing log-counter binary."
cp "${workdir}"/bin/log-counter "${BIN_DIR}"
echo "Installing NPD configurations."
mkdir -p "${CONFIG_DIR}"
cp -r "${workdir}"/config/* "${CONFIG_DIR}"
echo "Installing NPD systemd service."
cp "${workdir}"/config/systemd/node-problem-detector-metric-only.service /etc/systemd/system/node-problem-detector.service
echo "Installing problem maker binary, used only for e2e testing."
cp "${workdir}"/test/bin/problem-maker "${BIN_DIR}"
rm -rf "${workdir}"
# Start systemd service.
echo "Starting NPD systemd service."
systemctl daemon-reload
systemctl start node-problem-detector.service
}
function main() {
case ${1:-} in
help) print-help;;
install) install-npd;;
*) print-help;;
esac
}
TARBALL=""
while getopts "t:" opt; do
case ${opt} in
t) TARBALL="${OPTARG}";;
esac
done
shift "$((OPTIND-1))"
main "${@}"