categraf/k8s/gen_ds.sh

91 lines
2.6 KiB
Bash

namespace=test
dry_run=true
if [[ $dry_run == true ]]; then
dry_run_params="--dry-run=client"
else
dry_run_params=""
fi
target="input.cpu input.disk input.diskio input.docker input.kernel input.kernel_vmstat input.linux_sysctl_fs input.mem input.net input.netstat input.processes input.system input.kubernetes"
function install() {
#config.toml
kubectl create cm categraf-config -n $namespace --from-file=../conf/config.toml --from-file=../conf/logs.toml ${dry_run_params}
#input.xxx
for dir in $(echo $target | sed 's/ /\n/g')
do
name=$(echo $dir | sed -e 's/\./-/g' -e 's/_/\-/g' -e 's/ //g')
relative=$(echo $dir | sed -e 's/ //g')
kubectl create cm $name -n $namespace --from-file=../conf/$dir ${dry_run_params}
if [[ "X$mount" == "X" ]] ; then
mount=$(echo " - mountPath: /etc/categraf/conf/$relative\n name: $name")
else
mount=$(echo "$mount\n - mountPath: /etc/categraf/conf/$relative\n name: $name")
fi
if [[ "X$volume" == "X" ]]; then
volume=$(echo " - name: $name\n configMap:\n name: $name")
else
volume=$(echo "$volume\n - name: $name\n configMap:\n name: $name")
fi
done
#daemonset
sed -e "s#MOUNTS#$mount#g" -e "s#VOLUMES#$volume#g" categraf.tpl | kubectl apply -n $namespace ${dry_run_params} -f -
}
function uninstall() {
# config.toml
kubectl delete cm categraf-config -n $namespace ${dry_run_params}
# input.xxx
for dir in $(echo $target | sed 's/ /\n/g')
do
name=$(echo $dir | sed -e 's/\./-/g' -e 's/_/\-/g' -e 's/ //g')
kubectl delete cm -n $namespace $name ${dry_run_params}
done
# daemonset
kubectl delete ds -n $namespace nightingale-categraf ${dry_run_params}
}
function exp() {
echo "" > categraf.yaml
# config.toml
kubectl get cm categraf-config -n $namespace -o yaml | sed -e '/creationTimestamp:/d' -e '/namespace:/d' -e '/resourceVersion:/d' -e '/uid:/d' >> categraf.yaml
# input.xxx
for dir in $(echo $target | sed 's/ /\n/g')
do
name=$(echo $dir | sed -e 's/\./-/g' -e 's/_/\-/g' -e 's/ //g')
kubectl get cm -n $namespace $name -o yaml >> categraf.yaml
done
# daemonset
kubectl get ds -n $namespace nightingale-categraf -o yaml >> categraf.yaml
}
## usage
function usage() {
echo "** install categraf daemonset, default namespace:test, default action with --dry-run=client **"
echo "usage: $0 install|uninstall"
}
action=$1
case $action in
"install" )
install
;;
"uninstall" )
uninstall
;;
"export" )
exp
;;
* )
usage
;;
esac