Add a pre-upgrade job to resize Loki PVCs
This commit is contained in:
parent
c4a00aabae
commit
a960dec59f
@ -1,4 +1,26 @@
|
|||||||
{{- if and .Values.monitoring.enabled .Values.monitoring.lokiStack.enabled }}
|
{{-
|
||||||
|
$lokiEnabled :=
|
||||||
|
and
|
||||||
|
.Values.monitoring.enabled
|
||||||
|
.Values.monitoring.lokiStack.enabled
|
||||||
|
}}
|
||||||
|
{{-
|
||||||
|
$lokiPersistenceEnabled :=
|
||||||
|
dig
|
||||||
|
"loki"
|
||||||
|
"persistence"
|
||||||
|
"enabled"
|
||||||
|
false
|
||||||
|
.Values.monitoring.lokiStack.release.values
|
||||||
|
}}
|
||||||
|
{{-
|
||||||
|
$lokiVolumeSize :=
|
||||||
|
ternary
|
||||||
|
.Values.monitoring.lokiStack.release.values.loki.persistence.size
|
||||||
|
""
|
||||||
|
$lokiPersistenceEnabled
|
||||||
|
}}
|
||||||
|
{{- if $lokiEnabled }}
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: Secret
|
kind: Secret
|
||||||
@ -126,3 +148,101 @@ spec:
|
|||||||
loki-metrics-dashboard.json: |
|
loki-metrics-dashboard.json: |
|
||||||
{{- .Files.Get "grafana-dashboards/loki-metrics-dashboard.json" | nindent 12 }}
|
{{- .Files.Get "grafana-dashboards/loki-metrics-dashboard.json" | nindent 12 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if .Release.IsUpgrade }}
|
||||||
|
---
|
||||||
|
# This hook checks whether we need to resize PVC volumes
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: {{ include "cluster-addons.componentName" (list . "loki-stack-manage-pvcs") }}
|
||||||
|
labels: {{ include "cluster-addons.componentLabels" (list . "loki-stack-manage-pvcs") | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
helm.sh/hook: pre-upgrade
|
||||||
|
helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
|
||||||
|
spec:
|
||||||
|
backoffLimit: {{ .Values.hooks.backoffLimit }}
|
||||||
|
activeDeadlineSeconds: {{ .Values.hooks.activeDeadlineSeconds }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels: {{ include "cluster-addons.componentSelectorLabels" (list . "loki-stack-manage-pvcs") | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.hooks.imagePullSecrets }}
|
||||||
|
imagePullSecrets: {{ toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
securityContext: {{ toYaml .Values.hooks.podSecurityContext | nindent 8 }}
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: manage-pvcs
|
||||||
|
image: {{
|
||||||
|
printf "%s:%s"
|
||||||
|
.Values.hooks.image.repository
|
||||||
|
(default .Chart.AppVersion .Values.hooks.image.tag)
|
||||||
|
}}
|
||||||
|
imagePullPolicy: {{ .Values.hooks.image.pullPolicy }}
|
||||||
|
securityContext: {{ toYaml .Values.hooks.securityContext | nindent 12 }}
|
||||||
|
args:
|
||||||
|
- /bin/bash
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
set -ex
|
||||||
|
test -f "$KUBECONFIG" || exit 0
|
||||||
|
kubectl version || exit 0
|
||||||
|
|
||||||
|
{{- if $lokiEnabled }}
|
||||||
|
EXISTING_SIZE="$(
|
||||||
|
kubectl get statefulset loki-stack \
|
||||||
|
--namespace {{ .Values.monitoring.lokiStack.release.namespace }} \
|
||||||
|
--ignore-not-found \
|
||||||
|
--output jsonpath='{.spec.volumeClaimTemplates[0].spec.resources.requests.storage}'
|
||||||
|
)"
|
||||||
|
if [ "$EXISTING_SIZE" != "{{ $lokiVolumeSize }}" ]; then
|
||||||
|
kubectl delete statefulset loki-stack \
|
||||||
|
--namespace {{ .Values.monitoring.lokiStack.release.namespace }} \
|
||||||
|
--ignore-not-found
|
||||||
|
fi
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- if and $lokiEnabled $lokiPersistenceEnabled }}
|
||||||
|
pvcs=($( \
|
||||||
|
kubectl get pvc \
|
||||||
|
--namespace {{ .Values.monitoring.lokiStack.release.namespace }} \
|
||||||
|
--selector app=loki,release=loki-stack \
|
||||||
|
--output name \
|
||||||
|
))
|
||||||
|
for pvc in "${pvcs[@]}"; do
|
||||||
|
kubectl patch $pvc \
|
||||||
|
--namespace {{ .Values.monitoring.lokiStack.release.namespace }} \
|
||||||
|
--patch '{"spec": {"resources": {"requests": {"storage": "{{ $lokiVolumeSize }}"}}}}'
|
||||||
|
done
|
||||||
|
{{- else }}
|
||||||
|
kubectl delete pvc \
|
||||||
|
--namespace {{ .Values.monitoring.lokiStack.release.namespace }} \
|
||||||
|
--selector app=loki,release=loki-stack \
|
||||||
|
--wait=false
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
- name: KUBECONFIG
|
||||||
|
value: /etc/kubernetes/config
|
||||||
|
resources: {{ toYaml .Values.hooks.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: etc-kubernetes
|
||||||
|
mountPath: /etc/kubernetes
|
||||||
|
readOnly: true
|
||||||
|
hostNetwork: {{ .Values.hooks.hostNetwork }}
|
||||||
|
{{- with .Values.hooks.nodeSelector }}
|
||||||
|
nodeSelector: {{ toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.hooks.affinity }}
|
||||||
|
affinity: {{ toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.hooks.tolerations }}
|
||||||
|
tolerations: {{ toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: etc-kubernetes
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "cluster-addons.componentName" (list . "kubeconfig") }}
|
||||||
|
items:
|
||||||
|
- key: value
|
||||||
|
path: config
|
||||||
|
{{- end }}
|
||||||
|
@ -18,31 +18,7 @@ RUN apt-get update && \
|
|||||||
apt-get install -y curl git jq python3 python3-pip tini && \
|
apt-get install -y curl git jq python3 python3-pip tini && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ARG KUBECTL_VN_1_22=v1.22.13
|
ARG KUBECTL_VN_1_24=v1.24.11
|
||||||
RUN set -ex; \
|
|
||||||
OS_ARCH="$(uname -m)"; \
|
|
||||||
case "$OS_ARCH" in \
|
|
||||||
x86_64) kubectl_arch=amd64 ;; \
|
|
||||||
aarch64) kubectl_arch=arm64 ;; \
|
|
||||||
*) false ;; \
|
|
||||||
esac; \
|
|
||||||
curl -fsSL https://dl.k8s.io/release/${KUBECTL_VN_1_22}/bin/linux/${kubectl_arch}/kubectl -o /usr/bin/kubectl-v1.22; \
|
|
||||||
chmod +x /usr/bin/kubectl-v1.22; \
|
|
||||||
/usr/bin/kubectl-v1.22 version --client
|
|
||||||
|
|
||||||
ARG KUBECTL_VN_1_23=v1.23.10
|
|
||||||
RUN set -ex; \
|
|
||||||
OS_ARCH="$(uname -m)"; \
|
|
||||||
case "$OS_ARCH" in \
|
|
||||||
x86_64) kubectl_arch=amd64 ;; \
|
|
||||||
aarch64) kubectl_arch=arm64 ;; \
|
|
||||||
*) false ;; \
|
|
||||||
esac; \
|
|
||||||
curl -fsSL https://dl.k8s.io/release/${KUBECTL_VN_1_23}/bin/linux/${kubectl_arch}/kubectl -o /usr/bin/kubectl-v1.23; \
|
|
||||||
chmod +x /usr/bin/kubectl-v1.23; \
|
|
||||||
/usr/bin/kubectl-v1.23 version --client
|
|
||||||
|
|
||||||
ARG KUBECTL_VN_1_24=v1.24.4
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
OS_ARCH="$(uname -m)"; \
|
OS_ARCH="$(uname -m)"; \
|
||||||
case "$OS_ARCH" in \
|
case "$OS_ARCH" in \
|
||||||
@ -54,7 +30,7 @@ RUN set -ex; \
|
|||||||
chmod +x /usr/bin/kubectl-v1.24; \
|
chmod +x /usr/bin/kubectl-v1.24; \
|
||||||
/usr/bin/kubectl-v1.24 version --client
|
/usr/bin/kubectl-v1.24 version --client
|
||||||
|
|
||||||
ARG KUBECTL_VN_1_25=v1.25.0
|
ARG KUBECTL_VN_1_25=v1.25.7
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
OS_ARCH="$(uname -m)"; \
|
OS_ARCH="$(uname -m)"; \
|
||||||
case "$OS_ARCH" in \
|
case "$OS_ARCH" in \
|
||||||
@ -66,10 +42,22 @@ RUN set -ex; \
|
|||||||
chmod +x /usr/bin/kubectl-v1.25; \
|
chmod +x /usr/bin/kubectl-v1.25; \
|
||||||
/usr/bin/kubectl-v1.25 version --client
|
/usr/bin/kubectl-v1.25 version --client
|
||||||
|
|
||||||
|
ARG KUBECTL_VN_1_26=v1.26.2
|
||||||
|
RUN set -ex; \
|
||||||
|
OS_ARCH="$(uname -m)"; \
|
||||||
|
case "$OS_ARCH" in \
|
||||||
|
x86_64) kubectl_arch=amd64 ;; \
|
||||||
|
aarch64) kubectl_arch=arm64 ;; \
|
||||||
|
*) false ;; \
|
||||||
|
esac; \
|
||||||
|
curl -fsSL https://dl.k8s.io/release/${KUBECTL_VN_1_26}/bin/linux/${kubectl_arch}/kubectl -o /usr/bin/kubectl-v1.26; \
|
||||||
|
chmod +x /usr/bin/kubectl-v1.26; \
|
||||||
|
/usr/bin/kubectl-v1.26 version --client
|
||||||
|
|
||||||
ENV HELM_CACHE_HOME /tmp/helm/cache
|
ENV HELM_CACHE_HOME /tmp/helm/cache
|
||||||
ENV HELM_CONFIG_HOME /tmp/helm/config
|
ENV HELM_CONFIG_HOME /tmp/helm/config
|
||||||
ENV HELM_DATA_HOME /tmp/helm/data
|
ENV HELM_DATA_HOME /tmp/helm/data
|
||||||
ARG HELM_VERSION=v3.9.4
|
ARG HELM_VERSION=v3.11.2
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
OS_ARCH="$(uname -m)"; \
|
OS_ARCH="$(uname -m)"; \
|
||||||
case "$OS_ARCH" in \
|
case "$OS_ARCH" in \
|
||||||
@ -81,7 +69,7 @@ RUN set -ex; \
|
|||||||
tar -xz --strip-components 1 -C /usr/bin linux-${helm_arch}/helm; \
|
tar -xz --strip-components 1 -C /usr/bin linux-${helm_arch}/helm; \
|
||||||
helm version
|
helm version
|
||||||
|
|
||||||
ENV KUBECTL_VN_LATEST v1.25
|
ENV KUBECTL_VN_LATEST v1.26
|
||||||
COPY ./bin/* /usr/bin/
|
COPY ./bin/* /usr/bin/
|
||||||
|
|
||||||
USER $UTILS_UID
|
USER $UTILS_UID
|
||||||
|
Loading…
Reference in New Issue
Block a user