157 lines
5.4 KiB
YAML
157 lines
5.4 KiB
YAML
{{- if .Values.hooks.clusterID.enabled }}
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: {{ template "kubecost.fullname" . }}-hook
|
|
namespace: {{ $.Release.Namespace }}
|
|
labels:
|
|
app: {{ template "kubecost.name" . }}-kubecost
|
|
{{ include "kubecost.labels" . | indent 4 }}
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade,post-delete
|
|
helm.sh/hook-weight: "-5"
|
|
helm.sh/hook-delete-policy: before-hook-creation
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: {{ template "kubecost.fullname" . }}-hook
|
|
labels:
|
|
app: {{ template "kubecost.name" . }}
|
|
{{ include "kubecost.labels" . | indent 4 }}
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade,post-delete
|
|
helm.sh/hook-weight: "-4"
|
|
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
|
|
rules:
|
|
# The following namespaces and configmaps permissions are needed to
|
|
# grab the kube-system namespace uid and write it out to a configmap.
|
|
- apiGroups: [""]
|
|
resources:
|
|
- namespaces
|
|
verbs: ["get"]
|
|
- apiGroups: [""]
|
|
resources:
|
|
- configmaps
|
|
verbs: ["get", "create", "patch", "update", "delete"]
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: {{ template "kubecost.fullname" . }}-hook
|
|
labels:
|
|
app: {{ template "kubecost.name" . }}
|
|
{{ include "kubecost.labels" . | indent 4 }}
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade,post-delete
|
|
helm.sh/hook-weight: "-3"
|
|
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: {{ template "kubecost.fullname" . }}-hook
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: {{ template "kubecost.fullname" . }}-hook
|
|
namespace: {{ $.Release.Namespace }}
|
|
{{- if index .Values "cost-analyzer" "global" "prometheus" "enabled" }}
|
|
---
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: {{ .Release.Name }}-edit-prom-cluster-id
|
|
namespace: {{ .Release.Namespace }}
|
|
annotations:
|
|
helm.sh/hook: post-install,post-upgrade
|
|
helm.sh/hook-weight: "3"
|
|
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
|
|
spec:
|
|
template:
|
|
metadata:
|
|
name: {{ .Release.Name }}-edit-prom-cluster-id
|
|
spec:
|
|
serviceAccountName: {{ template "kubecost.fullname" . }}-hook
|
|
{{- if .Values.hooks.clusterID.priorityClassName }}
|
|
priorityClassName: "{{ .Values.hooks.clusterID.priorityClassName }}"
|
|
{{- end }}
|
|
containers:
|
|
- name: kubectl
|
|
image: {{ .Values.hooks.clusterID.kubectlImage | quote }}
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- sh
|
|
- "-c"
|
|
- |
|
|
/bin/bash <<'EOF'
|
|
set -o nounset
|
|
set -o errexit
|
|
set -o pipefail
|
|
CLUSTERID=$(kubectl get namespace kube-system -o jsonpath="{.metadata.uid}")
|
|
kubectl get configmap/{{ template "kubecost.prometheus-server-cm-name" . }} -oyaml > /tmp/override.yaml
|
|
sed -e 's/\$CLUSTER_ID/"'$CLUSTERID'"/g' /tmp/override.yaml > /tmp/final.yaml
|
|
kubectl apply -f /tmp/final.yaml
|
|
echo "Done replacing \$CLUSTER_ID with $CLUSTERID"
|
|
EOF
|
|
restartPolicy: OnFailure
|
|
{{- end }}
|
|
{{- if index .Values "cost-analyzer" "prometheus" "server" "clusterIDConfigmap" }}
|
|
---
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: {{ .Release.Name }}-cluster-id-configmap
|
|
namespace: {{ .Release.Namespace }}
|
|
annotations:
|
|
helm.sh/hook: pre-install,pre-upgrade
|
|
helm.sh/hook-weight: "3"
|
|
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
|
|
spec:
|
|
template:
|
|
metadata:
|
|
name: {{ .Release.Name }}-cluster-id-configmap
|
|
spec:
|
|
serviceAccountName: {{ template "kubecost.fullname" . }}-hook
|
|
{{- if .Values.hooks.clusterID.priorityClassName }}
|
|
priorityClassName: "{{ .Values.hooks.clusterID.priorityClassName }}"
|
|
{{- end }}
|
|
containers:
|
|
- name: kubectl
|
|
image: {{ .Values.hooks.clusterID.kubectlImage | quote }}
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- sh
|
|
- "-c"
|
|
- kubectl create configmap {{ index .Values "cost-analyzer" "prometheus" "server" "clusterIDConfigmap" }} -n {{ .Release.Namespace }} -oyaml --dry-run --save-config --from-literal=CLUSTER_ID=$(kubectl get namespace kube-system -o jsonpath="{.metadata.uid}") | kubectl apply -f -
|
|
restartPolicy: OnFailure
|
|
---
|
|
apiVersion: batch/v1
|
|
kind: Job
|
|
metadata:
|
|
name: {{ .Release.Name }}-cleanup-cluster-id-configmap
|
|
namespace: {{ .Release.Namespace }}
|
|
annotations:
|
|
helm.sh/hook: post-delete
|
|
helm.sh/hook-weight: "3"
|
|
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
|
|
spec:
|
|
template:
|
|
metadata:
|
|
name: {{ .Release.Name }}-cleanup-cluster-id-configmap
|
|
spec:
|
|
serviceAccountName: {{ template "kubecost.fullname" . }}-hook
|
|
{{- if .Values.hooks.clusterID.priorityClassName }}
|
|
priorityClassName: "{{ .Values.hooks.clusterID.priorityClassName }}"
|
|
{{- end }}
|
|
containers:
|
|
- name: kubectl
|
|
image: {{ .Values.hooks.clusterID.kubectlImage | quote }}
|
|
imagePullPolicy: IfNotPresent
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- kubectl delete configmap {{ index .Values "cost-analyzer" "prometheus" "server" "clusterIDConfigmap" }} -n {{ .Release.Namespace }} --ignore-not-found
|
|
restartPolicy: OnFailure
|
|
{{- end }}
|
|
{{- end }}
|