metricLabel="[Metric]" # Copies vmagent config file to the configured metric path. function cmdMetricPreparation() { printInfo "$metricLabel Preparation..." mkdir -p -- "$(dirname -- "$metricVmagentPath")" || return 1 cp -f -- "$appAssetsPath/metric/vmagent.yml" "$metricVmagentPath/vmagent.yml" printSuccess "$metricLabel Preparatory completed" } # Renders the Metric Kubernetes YAML manifest via Helm. function cmdMetricYamlRender() { printInfo "$metricLabel Render YAML | Helm" local templateFile="templates/$metricKube.yaml" [[ -f "$appAssetsPath/k3s/$templateFile" ]] || { printDanger "$metricLabel Template YAML : File not found | $appAssetsPath/k3s/$templateFile" return 1 } printInfo "$metricLabel Template YAML : $appAssetsPath/k3s/$templateFile" local varsFile varsFile=$(mktemp "/tmp/$metricKube.vars.XXXXXX.yaml") || return 1 printInfo "$metricLabel Variables : $varsFile" trap 'rm -f -- "$varsFile"' RETURN cat > "$varsFile" < "$metricYaml" || { printDanger "$metricLabel Render failed" return 1 } printSuccess "$metricLabel Render completed" } # Installs Metric components into Kubernetes. function cmdMetricInstall() { cmdMetricPreparation || return 1 cmdMetricYamlRender || return 1 cmdK3sYamlApplyEx "$metricYaml" } # Uninstalls Metric Kubernetes resources. function cmdMetricUninstall() { "$k3sCmd" kubectl delete -f "$metricYaml" }