Update versions of addons
[icn.git] / deploy / cpu-manager / cpu-manager.sh
1 #!/usr/bin/env bash
2 set -eEux -o pipefail
3
4 SCRIPTDIR="$(readlink -f $(dirname ${BASH_SOURCE[0]}))"
5 LIBDIR="$(dirname $(dirname ${SCRIPTDIR}))/env/lib"
6
7 source $LIBDIR/common.sh
8
9 # The upstream repo is not in an easily consumed structure, so first
10 # grab all the YAMLs then build out what we need in the overlay
11 function build_source {
12     mkdir -p ${SCRIPTDIR}/base
13     for yaml in cmk-namespace.yaml cmk-rbac-rules.yaml cmk-serviceaccount.yaml; do
14         curl -sL https://raw.githubusercontent.com/intel/CPU-Manager-for-Kubernetes/${CPU_MANAGER_VERSION}/resources/authorization/${yaml} -o ${SCRIPTDIR}/base/${yaml}
15     done
16     for yaml in cmk-init-pod.yaml cmk-discover-pod.yaml cmk-install-pod.yaml cmk-nodereport-daemonset.yaml cmk-reconcile-daemonset.yaml; do
17         curl -sL https://raw.githubusercontent.com/intel/CPU-Manager-for-Kubernetes/${CPU_MANAGER_VERSION}/resources/pods/${yaml} -o ${SCRIPTDIR}/base/${yaml}
18     done
19     for yaml in cmk-webhook-certs.yaml cmk-webhook-configmap.yaml cmk-webhook-service.yaml cmk-webhook-deployment.yaml cmk-webhook-config.yaml; do
20         curl -sL https://raw.githubusercontent.com/intel/CPU-Manager-for-Kubernetes/${CPU_MANAGER_VERSION}/resources/webhook/${yaml} -o ${SCRIPTDIR}/base/${yaml}
21     done
22     rm -f ${SCRIPTDIR}/base/kustomization.yaml
23     pushd ${SCRIPTDIR}/base && kustomize create --autodetect && popd
24
25     mkdir -p ${SCRIPTDIR}/icn
26     cat <<EOF >${SCRIPTDIR}/icn/daemonset-init-containers-patch.yaml
27 apiVersion: apps/v1
28 kind: DaemonSet
29 metadata:
30   name: cmk-reconcile-ds-all
31   namespace: cmk-namespace
32 spec:
33   template:
34     spec:
35       containers:
36 $(yq eval '.spec.template.spec.containers' ${SCRIPTDIR}/base/cmk-nodereport-daemonset.yaml | awk '{print "      "$0}')
37       initContainers:
38 $(yq eval '.spec.containers' ${SCRIPTDIR}/base/cmk-init-pod.yaml | awk '{print "      "$0}')
39 $(yq eval '.spec.containers' ${SCRIPTDIR}/base/cmk-discover-pod.yaml | awk '{print "      "$0}')
40 $(yq eval '.spec.containers' ${SCRIPTDIR}/base/cmk-install-pod.yaml | awk '{print "      "$0}')
41 EOF
42     yq '(.spec.template.spec.initContainers[0].env[] | select(.name=="NUM_EXCLUSIVE_CORES").value) = 2' -i ${SCRIPTDIR}/icn/daemonset-init-containers-patch.yaml
43     yq '(.spec.template.spec.initContainers[1].args[0] = "/cmk/cmk.py discover --conf-dir=/etc/cmk --no-taint"' -i ${SCRIPTDIR}/icn/daemonset-init-containers-patch.yaml
44     yq '.spec.template.spec += {"volumes":[{"hostPath":{"path":"/opt/bin"},"name":"cmk-install-dir"}]}' -i ${SCRIPTDIR}/icn/daemonset-init-containers-patch.yaml
45 }
46
47 case $1 in
48     "build-source") build_source ;;
49     *) cat <<EOF
50 Usage: $(basename $0) COMMAND
51
52 Commands:
53   build-source  - Rebuild the in-tree YAML files
54 EOF
55        ;;
56 esac