Skip to content

Commit 55a83cd

Browse files
committed
feat: Enhance Helm templates with additional functionality
1 parent 0ed69eb commit 55a83cd

File tree

7 files changed

+153
-19
lines changed

7 files changed

+153
-19
lines changed

charts/redis-operator/templates/_helpers.tpl

Lines changed: 28 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,45 @@
22
{{ .Values.redisOperator.name | trunc 63 | trimSuffix "-" }}
33
{{- end }}
44

5+
{{/*
6+
Expand the name of the chart.
7+
*/}}
8+
{{- define "redisOperator.name" -}}
9+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
10+
{{- end }}
11+
512
{{/*
613
Common labels
714
*/}}
815
{{- define "redisOperator.labels" -}}
9-
app.kubernetes.io/name: {{ .Values.redisOperator.name }}
10-
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
16+
helm.sh/chart: {{ include "redisOperator.chart" . }}
17+
{{ include "redisOperator.selectorLabels" . }}
18+
{{- if .Chart.AppVersion }}
19+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
20+
{{- end }}
1121
app.kubernetes.io/managed-by: {{ .Release.Service }}
12-
app.kubernetes.io/instance: {{ .Release.Name }}
13-
app.kubernetes.io/version: {{ .Chart.AppVersion }}
14-
app.kubernetes.io/component: operator
15-
app.kubernetes.io/part-of: {{ .Release.Name }}
1622
{{- end }}
1723

1824
{{/*
1925
Selector labels
2026
*/}}
2127
{{- define "redisOperator.selectorLabels" -}}
22-
app.kubernetes.io/name: {{ .Values.redisOperator.name }}
28+
app.kubernetes.io/name: {{ include "redisOperator.name" . }}
2329
app.kubernetes.io/instance: {{ .Release.Name }}
24-
app.kubernetes.io/component: operator
30+
{{- end }}
31+
32+
{{/*
33+
Create chart name and version as used by the chart label.
34+
*/}}
35+
{{- define "redisOperator.chart" -}}
36+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
37+
{{- end }}
38+
39+
{{/*
40+
RedisCluster Resource Owner Labels
41+
*/}}
42+
{{- define "redisOperator.ownerLabels" -}}
43+
app.kubernetes.io/part-of: {{ .Release.Name }}
44+
app.kubernetes.io/managed-by: {{ .Release.Service }}
2545
{{- end }}
2646

charts/redis-operator/templates/deployment.yaml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ spec:
1010
selector:
1111
matchLabels:
1212
{{- include "redisOperator.selectorLabels" . | nindent 6 }}
13-
replicas: {{ .Values.replicaCount }}
13+
replicas: {{ .Values.redisOperator.replicaCount }}
1414
template:
1515
metadata:
1616
annotations:
@@ -26,7 +26,7 @@ spec:
2626
{{- toYaml .Values.redisOperator.imagePullSecrets | nindent 8 }}
2727
{{- end }}
2828
securityContext:
29-
{{- toYaml .Values.podSecurityContext | nindent 8 }}
29+
{{- toYaml .Values.redisOperator.podSecurityContext | nindent 8 }}
3030
containers:
3131
- command:
3232
- /manager
@@ -36,7 +36,7 @@ spec:
3636
name: {{ .Values.redisOperator.name }}
3737
imagePullPolicy: {{ .Values.redisOperator.imagePullPolicy }}
3838
securityContext:
39-
{{- toYaml .Values.securityContext | nindent 12 }}
39+
{{- toYaml .Values.redisOperator.securityContext | nindent 12 }}
4040
env:
4141
- name: RECONCILE_INTERVAL
4242
value: {{ .Values.redisOperator.reconcileInterval | default "0s" }}
@@ -54,19 +54,19 @@ spec:
5454
port: 8081
5555
initialDelaySeconds: 5
5656
periodSeconds: 10
57-
{{- if .Values.resources }}
57+
{{- if .Values.redisOperator.resources }}
5858
resources:
59-
{{- toYaml .Values.resources | nindent 12 }}
59+
{{- toYaml .Values.redisOperator.resources | nindent 12 }}
6060
{{- end }}
61-
{{- with .Values.nodeSelector }}
61+
{{- with .Values.redisOperator.nodeSelector }}
6262
nodeSelector:
6363
{{- toYaml . | nindent 8 }}
6464
{{- end }}
65-
{{- with .Values.affinity }}
65+
{{- with .Values.redisOperator.affinity }}
6666
affinity:
6767
{{- toYaml . | nindent 8 }}
6868
{{- end }}
69-
{{- with .Values.tolerations }}
69+
{{- with .Values.redisOperator.tolerations }}
7070
tolerations:
7171
{{- toYaml . | nindent 8 }}
7272
{{- end }}

charts/redis-operator/templates/grafana/configmaps-datasources.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ data:
1414
- name: Prometheus
1515
type: prometheus
1616
uid: prometheus
17-
url: http://{{ .Release.Name }}-prometheus-server:{{ .Values.prometheus.server.service.servicePort }}
17+
url: http://{{ .Release.Name }}-prometheus:9090
1818
access: proxy
1919
isDefault: true
2020
{{- end }}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: batch/v1
2+
kind: Job
3+
metadata:
4+
name: {{ .Release.Name }}-rediscluster-pre-delete
5+
namespace: {{ .Release.Namespace }}
6+
annotations:
7+
helm.sh/hook: pre-delete
8+
helm.sh/hook-delete-policy: hook-succeeded
9+
labels:
10+
{{- include "redisOperator.labels" . | nindent 4 }}
11+
spec:
12+
template:
13+
metadata:
14+
name: {{ .Release.Name }}-rediscluster-cleanup
15+
labels:
16+
{{- include "redisOperator.labels" . | nindent 8 }}
17+
spec:
18+
serviceAccountName: {{ .Values.redisOperator.name }}-service-account
19+
restartPolicy: Never
20+
containers:
21+
- name: kubectl
22+
image: bitnami/kubectl:latest
23+
command:
24+
- /bin/sh
25+
- -c
26+
- |
27+
echo "Deleting RedisCluster resources..."
28+
kubectl delete rediscluster -n {{ .Release.Namespace }} -l app.kubernetes.io/instance={{ .Release.Name }} --ignore-not-found
29+
echo "Waiting for Redis pods to terminate..."
30+
# Redis 파드 삭제 확인
31+
PODS=$(kubectl get pods -n {{ .Release.Namespace }} -l clusterName={{ .Values.redisCluster.name | default .Release.Name }} -o name 2>/dev/null)
32+
if [ ! -z "$PODS" ]; then
33+
kubectl delete pods -n {{ .Release.Namespace }} -l clusterName={{ .Values.redisCluster.name | default .Release.Name }} --grace-period=0 --force --ignore-not-found
34+
fi
35+
echo "Cleanup complete"
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
apiVersion: redis.redis/v1beta1
2+
kind: RedisCluster
3+
metadata:
4+
name: {{ .Values.redisCluster.name | default .Release.Name }}
5+
namespace: {{ .Release.Namespace }}
6+
labels:
7+
{{- include "redisOperator.labels" . | nindent 4 }}
8+
app.kubernetes.io/managed-by: {{ .Release.Service }}
9+
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
10+
app.kubernetes.io/instance: {{ .Release.Name }}
11+
# Helm 삭제 시 이 CR도 함께 삭제되도록 설정
12+
{{- $deployment := lookup "apps/v1" "Deployment" .Release.Namespace .Values.redisOperator.name }}
13+
{{- if $deployment }}
14+
ownerReferences:
15+
- apiVersion: apps/v1
16+
kind: Deployment
17+
name: {{ .Values.redisOperator.name }}
18+
uid: {{ $deployment.metadata.uid }}
19+
{{- end }}
20+
spec:
21+
image: {{ .Values.redisCluster.image }}:{{ .Values.redisCluster.tag }}
22+
imagePullPolicy: {{ .Values.redisCluster.imagePullPolicy }}
23+
{{- if .Values.redisCluster.imagePullSecrets }}
24+
imagePullSecrets:
25+
{{- toYaml .Values.redisCluster.imagePullSecrets | nindent 4 }}
26+
{{- end }}
27+
masters: {{ .Values.redisCluster.masters }}
28+
replicas: {{ .Values.redisCluster.replicas }}
29+
maxMemory: {{ .Values.redisCluster.maxMemory }}
30+
basePort: {{ .Values.redisCluster.basePort }}
31+
{{- if .Values.redisCluster.resources }}
32+
resources:
33+
{{- toYaml .Values.redisCluster.resources | nindent 4 }}
34+
{{- end }}
35+
{{- if .Values.redisCluster.securityContext }}
36+
securityContext:
37+
{{- toYaml .Values.redisCluster.securityContext | nindent 4 }}
38+
{{- end }}
39+
{{- if .Values.redisCluster.nodeSelector }}
40+
nodeSelector:
41+
{{- toYaml .Values.redisCluster.nodeSelector | nindent 4 }}
42+
{{- end }}
43+
{{- if .Values.redisCluster.tolerations }}
44+
tolerations:
45+
{{- toYaml .Values.redisCluster.tolerations | nindent 4 }}
46+
{{- end }}
47+
{{- if .Values.redisCluster.affinity }}
48+
affinity:
49+
{{- toYaml .Values.redisCluster.affinity | nindent 4 }}
50+
{{- end }}
51+
exporter:
52+
enabled: {{ .Values.redisCluster.exporter.enabled }}
53+
image: {{ .Values.redisCluster.exporter.image }}:{{ .Values.redisCluster.exporter.tag }}
54+
{{- if .Values.redisCluster.exporter.resources }}
55+
resources:
56+
{{- toYaml .Values.redisCluster.exporter.resources | nindent 6 }}
57+
{{- end }}

charts/redis-operator/templates/role.yaml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,26 @@ rules:
6565
- list
6666
- create
6767
- update
68-
- patch
68+
- patch
69+
- apiGroups: [""]
70+
resources:
71+
- events
72+
verbs:
73+
- create
74+
- delete
75+
- get
76+
- list
77+
- patch
78+
- update
79+
- watch
80+
- apiGroups: ["batch"]
81+
resources:
82+
- jobs
83+
verbs:
84+
- create
85+
- delete
86+
- get
87+
- list
88+
- patch
89+
- update
90+
- watch

charts/redis-operator/templates/service.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ metadata:
1010
app.kubernetes.io/version : {{ .Chart.AppVersion }}
1111
app.kubernetes.io/component: service
1212
app.kubernetes.io/part-of : {{ .Release.Name }}
13-
name: {{ .Values.redisOperator.name }}-service
13+
name: {{ .Values.redisOperator.name }}
1414
spec:
1515
selector:
1616
app.kubernetes.io/instance: {{ .Values.redisOperator.name }}

0 commit comments

Comments
 (0)