{{/* RCoder chart 公共 helper */}} {{/* 应用全名 (Release + chart) */}} {{- define "rcoder.fullname" -}} {{- if .Values.fullnameOverride -}} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} {{- else -}} {{- $name := default .Chart.Name .Values.nameOverride -}} {{- if contains $name .Release.Name -}} {{- .Release.Name | trunc 63 | trimSuffix "-" -}} {{- else -}} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} {{- end -}} {{- end -}} {{- end -}} {{/* Chart 标识 */}} {{- define "rcoder.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} {{- end -}} {{/* 通用标签 (所有资源都带) */}} {{- define "rcoder.labels" -}} helm.sh/chart: {{ include "rcoder.chart" . }} app.kubernetes.io/name: rcoder app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} environment: {{ .Values.environment | quote }} {{- end -}} {{/* 应用层的 selector label (app=rcoder 与 Kustomize 完全一致, 保证 Service 选得到 pod) */}} {{- define "rcoder.selectorLabels" -}} app: rcoder component: rcoder-main {{- end -}} {{/* ============================================================ 镜像地址拼装 rcoder-own image -> {{ .Values.global.imageRegistry }}/{repo}:{tag} third-party image -> {{ .Values.global.thirdPartyRegistry }}/{repo}:{tag} (若 thirdPartyRegistry 为空, 保留原始 repo) ============================================================ */}} {{/* 自有镜像: 入参 dict {repository, tag, chartContext} */}} {{- define "rcoder.ownImage" -}} {{- $repo := .repository -}} {{- $tag := .tag -}} {{- $registry := .ctx.Values.global.imageRegistry -}} {{- if empty $tag -}}{{- $tag = .ctx.Chart.AppVersion -}}{{- end -}} {{- if $registry -}} {{- printf "%s/%s:%s" $registry $repo $tag -}} {{- else -}} {{- printf "%s:%s" $repo $tag -}} {{- end -}} {{- end -}} {{/* 第三方镜像: 入参 dict {repository, tag, ctx} */}} {{- define "rcoder.thirdPartyImage" -}} {{- $repo := .repository -}} {{- $tag := .tag -}} {{- $registry := .ctx.Values.global.thirdPartyRegistry -}} {{- if $registry -}} {{- printf "%s/%s:%s" $registry $repo $tag -}} {{- else -}} {{- printf "%s:%s" $repo $tag -}} {{- end -}} {{- end -}} {{/* 快捷: rcoder 主服务 image */}} {{- define "rcoder.image" -}} {{- include "rcoder.ownImage" (dict "repository" .Values.rcoder.image.repository "tag" .Values.rcoder.image.tag "ctx" .) -}} {{- end -}} {{/* 快捷: agent-runner image (供 rcoder env var 使用) */}} {{- define "rcoder.agentRunnerImage" -}} {{- include "rcoder.ownImage" (dict "repository" .Values.agentRunner.image.repository "tag" .Values.agentRunner.image.tag "ctx" .) -}} {{- end -}} {{/* 镜像仓库前缀 (config.yml 里 docker_config.multi_image_config.global_defaults.registry_prefix 使用) */}} {{- define "rcoder.registryPrefix" -}} {{- default "" .Values.global.imageRegistry -}} {{- end -}} {{/* ============================================================ StorageClass 名 (集群级资源, Release 之间必须独立) - 用户显式指定 juicefs.storageClass.name -> 照用 - 否则回退到 "juicefs-sc-{release}" ============================================================ */}} {{- define "rcoder.storageClassName" -}} {{- if .Values.juicefs.storageClass.name -}} {{- .Values.juicefs.storageClass.name -}} {{- else -}} {{- printf "juicefs-sc-%s" .Release.Name -}} {{- end -}} {{- end -}} {{/* ============================================================ ClusterRoleBinding 名 (集群级资源, 同上) ============================================================ */}} {{- define "rcoder.clusterRoleBindingName" -}} {{- printf "%s-pods-crb" .Release.Name -}} {{- end -}} {{/* ClusterRole 共享名 —— 多个 release 绑到同一个 ClusterRole, 规则相同故无冲突 */}} {{- define "rcoder.clusterRoleName" -}} rcoder-pods-clusterrole {{- end -}} {{/* imagePullSecrets 渲染块 */}} {{- define "rcoder.imagePullSecrets" -}} {{- if .Values.global.imagePullSecrets }} imagePullSecrets: {{- range .Values.global.imagePullSecrets }} - name: {{ .name }} {{- end }} {{- end -}} {{- end -}} {{/* PostgreSQL service 主机名 (namespace 内) */}} {{- define "rcoder.postgresqlHost" -}} {{- printf "postgresql.%s.svc.cluster.local" .Release.Namespace -}} {{- end -}} {{/* MinIO service 主机名 */}} {{- define "rcoder.minioHost" -}} {{- printf "minio-service.%s.svc.cluster.local" .Release.Namespace -}} {{- end -}} {{/* JuiceFS metaurl */}} {{- define "rcoder.juicefsMetaurl" -}} {{- printf "postgres://%s:%s@postgresql.%s:5432/juicefs" .Values.credentials.postgresql.user .Values.credentials.postgresql.password .Release.Namespace -}} {{- end -}} {{/* JuiceFS bucket URL */}} {{- define "rcoder.juicefsBucketUrl" -}} {{- printf "http://minio-service.%s:9000/%s" .Release.Namespace .Values.juicefs.bucket -}} {{- end -}}