b453d5d
# Default values for gitdata.
nameOverride: ""
fullnameOverride: ""
image:
repository: gitdata
# 留空则用 Chart.appVersion 作为 tag
tag: ""
pullPolicy: IfNotPresent
imagePullSecrets: []
serviceAccount:
create: true
name: ""
annotations: {}
# ---------------------------------------------------------------------------
# 运行时配置。全部通过 Figment 的 APP_* 环境变量注入(见 docs/技术架构.md §12)。
# 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)。密钥生成见 config/default.toml。
APP_PUSH__ENABLED: "false"
APP_PUSH__VAPID_PUBLIC_KEY: ""
APP_PUSH__VAPID_SUBJECT: "mailto:ops@example.com"
# 事件投递:消息事件写入 event_outbox,由 apihost 内嵌 relay 投递到 RocketMQ。
APP_ROCKETMQ__ENABLED: "true"
APP_ROCKETMQ__NAME_SERVER: "rocketmq-namesrv:9876"
APP_ROCKETMQ__TOPIC_PREFIX: "gitdata"
# 认证中心:浏览器走 OIDC,服务间走 gRPC(x-rpc-key)。
APP_OAUTH__ENABLED: "true"
APP_OAUTH__ISSUER: "https://auth.gitdata.ai"
APP_OAUTH__CLIENT_ID: "gitdata-web"
APP_OAUTH__REDIRECT_URI: "https://gitdata.ai/api/v1/auth/callback"
APP_OAUTH__AUDIENCE: "gitdata.ai"
APP_OAUTH__GRPC_ENDPOINT: "http://kenoauth:18082"
RUST_LOG: "info"
# 敏感配置(渲染为 Secret)。注意 AppConfig 的 Debug 会带出密钥,
# 切勿在任何日志里 {:?} 打印配置。
secret:
# 留空则不创建 Secret,仅使用 existingSecret
create: true
existingSecret: ""
env:
APP_DATABASE__URL: "postgres://postgres:CHANGE_ME@postgres:5432/gitdata"
APP_OAUTH__RPC_KEY: "" # 与 KenOAuth auth.oauth.rpc_key 一致,>=32 字节
APP_INTERNAL__SERVICE_KEY: "" # /api/v1/internal/* 服务密钥,>=32 字节
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
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
oauth:
enabled: false
image: harbor.gitdata.me/app/kenoauth:latest
pullPolicy: IfNotPresent
replicaCount: 1
httpPort: 18081
grpcPort: 18082
# Secret containing config.yaml (mounted at /app/config). Empty = env-only config.
existingSecret: ""
extraEnv: []
resources:
requests: { cpu: 100m, memory: 128Mi }
limits: { memory: 512Mi }
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 端点,见 §13)
otlpEndpoint: ""