# 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: "" # 留空 = -tls clusterIssuer: "" # 填 cert-manager ClusterIssuer 自动签发 # 大文件 push / 长 RPC proxyBodySize: "0" # 0 = 不限制 proxyReadTimeout: 3600 proxySendTimeout: 3600 proxyConnectTimeout: 60 metrics: # OTLP 推送(无 scrape 端点) otlpEndpoint: ""