https://github.com/percona/percona-helm-charts/tree/main/charts/pxc-db
s3-secret.yaml
### Values.backup.storages 의 Array 값중 value 값이 s3 일때 설치
### AWS 의 Acesskey 와 Secretkey 가 Kubernetes 의 secret key 방식으로 설치
{{- range $key, $value := .Values.backup.storages }}
{{- if and (hasKey $value "type") (eq $value.type "s3") (hasKey $value "s3") (hasKey (index $value "s3") "credentialsAccessKey") (hasKey (index $value "s3") "credentialsSecretKey") }}
---
apiVersion: v1
kind: Secret
metadata:
name: {{ include "pxc-database.fullname" $ }}-s3-{{ $key }}
labels:
{{ include "pxc-database.labels" $ | indent 4 }}
type: Opaque
data:
AWS_ACCESS_KEY_ID: {{ index $value "s3" "credentialsAccessKey" | b64enc }}
AWS_SECRET_ACCESS_KEY: {{ index $value "s3" "credentialsSecretKey" | b64enc }}
{{- end }}
{{- end }}
cluster-ssl-secret.yaml
### values 의 pxc 의 disableTLS 값이 true 가 아닐시
### values 의 pxc 의 certManager 값이 true 가 아닐시
### 위의 2가지 조건이 전부다 충족할때 Secret 생성 (내부 인증서)
### .Values 의 secrets 의 tls 가 cluster 가 아닐시
### Values 의 secrets 의 tls 값이 "internal" 이 아닐경우
### Secret 생성되는 값 분기처리됨
### pxc-database.labels 에 해당되는 label 값 추가
{{- if not .Values.pxc.disableTLS }}
{{- if not .Values.pxc.certManager }}
{{- $nameDB := printf "%s" (include "pxc-database.fullname" .) }}
{{ $ca := genCA (printf "%s-ca" $nameDB ) 365 }}
{{- if not (hasKey .Values.secrets.tls "cluster") }}
---
{{- $name := printf "%s-proxysql" $nameDB }}
{{- $altNames := list ( printf "%s-pxc" $nameDB ) ( printf "*.%s-pxc" $nameDB ) ( printf "*.%s-proxysql" $nameDB ) -}}
{{ $cert := genSignedCert $name nil $altNames 365 $ca }}
apiVersion: v1
kind: Secret
metadata:
name: {{ $nameDB }}-ssl
labels:
{{ include "pxc-database.labels" . | indent 4 }}
type: kubernetes.io/tls
data:
ca.crt: {{ $ca.Cert | b64enc }}
tls.crt: {{ $cert.Cert | b64enc }}
tls.key: {{ $cert.Key | b64enc }}
{{- end }}
{{- if not (hasKey .Values.secrets.tls "internal") }}
---
{{- $name := printf "%s-pxc" $nameDB }}
{{- $altNames := list ( printf "%s" $name ) ( printf "*.%s" $name ) ( printf "%s-haproxy-replicas.%s.svc.cluster.local" $nameDB .Release.Namespace ) ( printf "%s-haproxy-replicas.%s" $nameDB .Release.Namespace ) ( printf "%s-haproxy-replicas" $nameDB ) ( printf "%s-haproxy.%s.svc.cluster.local" $nameDB .Release.Namespace ) ( printf "%s-haproxy.%s" $nameDB .Release.Namespace ) ( printf "%s-haproxy" $nameDB ) -}}
{{ $cert := genSignedCert $name nil $altNames 365 $ca }}
apiVersion: v1
kind: Secret
metadata:
name: {{ $nameDB }}-ssl-internal
labels:
{{ include "pxc-database.labels" . | indent 4 }}
type: kubernetes.io/tls
data:
ca.crt: {{ $ca.Cert | b64enc }}
tls.crt: {{ $cert.Cert | b64enc }}
tls.key: {{ $cert.Key | b64enc }}
{{- end }}
{{- end }}
{{- end }}
cluster-secret.yaml
### values 의 pxc 의 clusterSecretName 값이 없으면, Secret 값 생성
### Secret 값에 들어갈 값은 Values.yaml 의 secrets.passwords 값을 base64 encode 해서 적용
{{- if not (hasKey .Values.pxc "clusterSecretName") }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "pxc-database.fullname" . }}
labels:
{{ include "pxc-database.labels" . | indent 4 }}
type: Opaque
data:
root: {{ .Values.secrets.passwords.root | b64enc }}
xtrabackup: {{ .Values.secrets.passwords.xtrabackup | b64enc }}
monitor: {{ .Values.secrets.passwords.monitor | b64enc }}
clustercheck: {{ .Values.secrets.passwords.clustercheck | b64enc }}
proxyadmin: {{ .Values.secrets.passwords.proxyadmin | b64enc }}
pmmserver: {{ .Values.secrets.passwords.pmmserver | b64enc }}
operator: {{ .Values.secrets.passwords.operator | b64enc }}
replication: {{ .Values.secrets.passwords.replication | b64enc }}
{{- end }}
cluster.yaml 값은 내용이 많아서 다음 포스팅에서 정리