eeff292
# Default values for gitdata.
nameOverride: ""
fullnameOverride: ""
image:
repository: gitdata
# 留空则用 Chart.appVersion 作为 tag
tag: ""
pullPolicy: IfNotPresent
imagePullSecrets: []
serviceAccount:
create: true
name: ""
annotations: {}
# ---------------------------------------------------------------------------
# 运行时配置。全部通过 Figment 的 APP_* 环境变量注入。
# config.env -> ConfigMap(非敏感)
# secret.env -> Secret(敏感);生产建议改用 existingSecret + 外部密钥管理
# ---------------------------------------------------------------------------
# 非敏感配置(string->string,值会被转成 APP_* 环境变量)
config:
env:
APP_REDIS__URL: "redis://redis-master:6379"
APP_S3__ENDPOINT: ""
APP_S3__BUCKET: ""
APP_S3__REGION: "us-east-1"
APP_S3__PATH_STYLE: "true"
# 读写库/副本、配额等其余段均可在此覆盖,例如:
# APP_DATABASE__REPLICAS: '[{url="postgres://readonly@pg:5432/gitdata"}]'
# Web Push:默认关闭;开启前必须同时提供 APP_PUSH__VAPID_PUBLIC_KEY(此处)
# 与 APP_PUSH__VAPID_PRIVATE_KEY(secret.env)。
APP_PUSH__ENABLED: "false"
APP_PUSH__VAPID_PUBLIC_KEY: ""
APP_PUSH__VAPID_SUBJECT: "mailto:ops@example.com"
# 事件投递:消息事件写入 event_outbox,由 apihost 内嵌 relay 投递到 RocketMQ。
APP_ROCKETMQ__NAME_SERVER: "rocketmq-namesrv:9876"
APP_ROCKETMQ__TOPIC_PREFIX: "gitdata"
# 事件系统(app event):消费 RocketMQ 并通过 socket.io 推送。
APP_EVENT__CONSUMER__NAME_SERVER: "rocketmq-namesrv:9876"
APP_EVENT__CONSUMER__TOPIC_PREFIXES: '["gitdata","kenshell"]'
APP_EVENT__CONSUMER__CONSUMER_GROUP: "gitdata-event"
APP_EVENT__REDIS__URL: "redis://redis-master:6379"
APP_EVENT__SOCKET__SESSION_COOKIE: "session"
RUST_LOG: "info"
# 敏感配置(渲染为 Secret)。注意 AppConfig 的 Debug 会带出密钥,
# 切勿在任何日志里 {:?} 打印配置。
secret:
# 留空则不创建 Secret,仅使用 existingSecret
create: true
existingSecret: ""
env:
APP_DATABASE__URL: "postgres://postgres:CHANGE_ME@postgres:5432/gitdata"
APP_INTERNAL__SERVICE_KEY: "" # /api/v1/internal/* 服务密钥,>=32 字节
# 内部 RPC 共享门禁密钥(event 与 apihost 两侧必须同名同值,>=32 字符)
APP_INTERNAL__RPC__RPC_KEY: ""
APP_EVENT__RPC__RPC_KEY: ""
APP_EVENT__PLATFORM__RPC_KEY: ""
APP_INTERNAL__EVENT_CLIENT__RPC_KEY: ""
# 身份信封完整性密钥(平台签名/event 验签,两侧必须一致)
APP_EVENT__RPC__PLATFORM_MAC_KEY: ""
APP_INTERNAL__EVENT_CLIENT__MAC_KEY: ""
APP_POW__MAC_KEY: "" # base64 >=32 字节
APP_AUTH__TOTP_ENCRYPTION_KEY: "" # base64 >=32 字节(实测必填)
APP_S3__ACCESS_KEY_ID: ""
APP_S3__SECRET_ACCESS_KEY: ""
APP_PUSH__VAPID_PRIVATE_KEY: "" # base64url 32 字节 P-256 标量,Web Push 签名私钥
podSecurityContext:
fsGroup: 10001
securityContext:
runAsNonRoot: true
runAsUser: 10001
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
nodeSelector: {}
tolerations: []
affinity: {}
podAnnotations: {}
podLabels: {}
# ---------------------------------------------------------------------------
# 组件
# ---------------------------------------------------------------------------
migrate:
enabled: true # pre-install / pre-upgrade hook Job
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { memory: 512Mi }
extraEnv: []
apihost:
enabled: true
replicaCount: 2
port: 3000
# 内部 RPC 端口(Identity/Authorization),只暴露给 event 与集群内调用方。
rpcPort: 7052
resources:
requests: { cpu: 250m, memory: 256Mi }
limits: { memory: 1Gi }
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 8
targetCPUUtilizationPercentage: 70
targetMemoryUtilizationPercentage: 0
# Empty map renders no `behavior:` block (k8s default scaling policy).
behavior: {}
maxSurge: 1
maxUnavailable: 0
podAntiAffinity: soft # soft | hard | ""
topologySpreadConstraints: []
extraEnv: []
pdb:
enabled: true
minAvailable: 1
event:
# 事件系统(app event):RocketMQ 消费 + socket.io 通道 + 内部 RPC。
enabled: true
replicaCount: 1
# single | consumer | actor:拆分布署时 consumer/actor 各起一个 Deployment。
mode: single
socketPort: 7031
rpcPort: 7032
resources:
requests: { cpu: 200m, memory: 256Mi }
limits: { memory: 1Gi }
maxSurge: 1
maxUnavailable: 0
podAntiAffinity: soft # soft | hard | ""
extraEnv: []
# 身份信封密钥(event 私钥 / apihost 公钥 + 共享 MAC key)。
# 提供一个包含 identity-private.pem 与 identity-public.pem 的 Secret 名即可启用挂载。
identityKey:
secretName: ""
mountPath: /etc/gitdata/keys
kenshell:
# KenShell 是 Git 数据面:对象库、引用、pack、LFS、smart HTTP 与 SSH 都由它提供。
endpoint: "http://kenshell:50091"
rpcKey: ""
timeoutSecs: 3600
# 对外克隆地址(展示用),指向 KenShell 的 HTTP/SSH 入口
httpCloneBaseUrl: ""
sshCloneHost: ""
sshClonePort: 22
# ---------------------------------------------------------------------------
# 存储:apihost 使用的本地仓库/对象缓存目录(bare 仓库已迁到 KenShell)
# ---------------------------------------------------------------------------
persistence:
repos:
enabled: true
size: 50Gi
storageClassName: "" # "" = 默认 StorageClass
accessModes: ["ReadWriteMany"]
existingClaim: ""
mountPath: /opt/gitdata
# ---------------------------------------------------------------------------
# Ingress:同源 TLS 终结,全部路径 -> apihost。
# git smart HTTP(*.git)由 KenShell 自己的入口接管,不在本 chart 内。
# ---------------------------------------------------------------------------
ingress:
enabled: true
controller: nginx
className: nginx
host: gitdata.example.com
annotations: {}
tls:
enabled: true
secretName: "" # 留空 = <fullname>-tls
clusterIssuer: "" # 填 cert-manager ClusterIssuer 自动签发
# 大文件 push / 长 RPC
proxyBodySize: "0" # 0 = 不限制
proxyReadTimeout: 3600
proxySendTimeout: 3600
proxyConnectTimeout: 60
metrics:
# OTLP 推送(无 scrape 端点)
otlpEndpoint: ""