Files
claude-code/values.schema.json
T
claude 528a48b667
Helm Chart Release / release-chart (push) Successful in 9s
Build Session Image / build-push (push) Successful in 2m8s
feat: credentials 認証モードとトークン自動リフレッシュ CronJob を追加 (v2.1.263-b)
トークンが定期的に失効・ローテーションしても再デプロイ不要にする。

- anthropic.authMode: credentials(新既定)
  ~/.claude/.credentials.json 全体(refreshToken 込み)を Secret に格納。
  セッション Pod にはファイルとしてマウントし $HOME/.claude へコピー(書き込み可)、
  セッション内 claude が refreshToken で自己更新
- anthropic.refresher CronJob(credentials 時・既定有効, files/token-refresher.py)
  Secret 内 refreshToken で OAuth トークンを更新し Secret を書き戻す。
  専用 SA + resourceNames 限定 Role で該当 Secret の get/patch のみ。
  tokenUrl/clientId は Claude Code CLI の非公式値(values 上書き可)
- manager.py build_pod: credentials は envFrom を使わずファイルマウント +
  SEED_CREDENTIALS_FILE。apiKey/oauth は従来どおり envFrom
- Secret に helm.sh/resource-policy: keep(credentials 時)で refresher の書込を保持
- fix: values.schema.json の $schema 行を削除(一部の Helm で
  "no schema with key or ref https://json-schema.org/draft-07/schema#" エラー)
- helm lint / template(credentials/apiKey/oauth)検証済み
2026-09-08 15:18:21 +09:00

290 lines
9.5 KiB
JSON

{
"title": "claude-code Helm chart values",
"type": "object",
"additionalProperties": true,
"properties": {
"nameOverride": { "type": "string" },
"fullnameOverride": { "type": "string" },
"image": {
"type": "object",
"additionalProperties": false,
"required": ["gateway", "manager", "session"],
"properties": {
"gateway": { "$ref": "#/definitions/image" },
"manager": { "$ref": "#/definitions/image" },
"session": { "$ref": "#/definitions/image" }
}
},
"imagePullSecrets": {
"type": "array",
"items": { "type": "object", "required": ["name"], "properties": { "name": { "type": "string" } } }
},
"gateway": {
"type": "object",
"additionalProperties": false,
"properties": {
"replicaCount": { "type": "integer", "minimum": 1 },
"port": { "type": "integer", "minimum": 1, "maximum": 65535 },
"resources": { "type": "object" }
}
},
"manager": {
"type": "object",
"additionalProperties": false,
"properties": {
"logLevel": { "type": "string", "enum": ["debug", "info", "warning", "error"] },
"resources": { "type": "object" }
}
},
"sessionsNamespace": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": { "type": "string" },
"create": { "type": "boolean" },
"podSecurityLevel": { "type": "string", "enum": ["privileged", "baseline", "restricted"] },
"resourceQuota": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"hard": { "type": "object" }
}
},
"limitRange": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"max": { "type": "object" },
"default": { "type": "object" },
"defaultRequest": { "type": "object" }
}
}
}
},
"auth": {
"type": "object",
"additionalProperties": false,
"required": ["mode"],
"properties": {
"mode": { "type": "string", "enum": ["token", "basic", "forward", "none"] },
"token": {
"type": "object",
"additionalProperties": false,
"properties": {
"value": { "type": "string" },
"existingSecret": { "type": "string" },
"existingSecretKey": { "type": "string" }
}
},
"basic": {
"type": "object",
"additionalProperties": false,
"properties": {
"users": { "type": "array", "items": { "type": "string" } },
"existingSecret": { "type": "string" },
"existingSecretKey": { "type": "string" }
}
},
"forward": {
"type": "object",
"additionalProperties": false,
"properties": {
"url": { "type": "string" },
"signInUrl": { "type": "string" }
}
}
}
},
"anthropic": {
"type": "object",
"additionalProperties": false,
"required": ["authMode"],
"properties": {
"authMode": { "type": "string", "enum": ["apiKey", "oauth", "credentials"] },
"apiKey": { "type": "string" },
"oauthToken": { "type": "string" },
"credentialsJson": { "type": "string" },
"existingSecret": { "type": "string" },
"existingSecretKeyApiKey": { "type": "string" },
"existingSecretKeyOauthToken": { "type": "string" },
"existingSecretKeyCredentials": { "type": "string" },
"extraEnv": { "type": "object" },
"refresher": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"schedule": { "type": "string" },
"refreshIfExpiresInSeconds": { "type": "integer", "minimum": 60 },
"tokenUrl": { "type": "string" },
"clientId": { "type": "string" },
"resources": { "type": "object" }
}
}
}
},
"git": {
"type": "object",
"additionalProperties": false,
"required": ["allowedHosts"],
"properties": {
"allowedHosts": { "type": "array", "items": { "type": "string" } },
"allowArbitraryRepos": { "type": "boolean" },
"defaultAuthorName": { "type": "string" },
"defaultAuthorEmail": { "type": "string" },
"identities": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": false,
"required": ["type"],
"properties": {
"type": { "type": "string", "enum": ["ssh", "https-token"] },
"sshPrivateKey": { "type": "string" },
"knownHosts": { "type": "string" },
"username": { "type": "string" },
"token": { "type": "string" },
"existingSecret": { "type": "string" },
"existingSecretKeyPrivateKey": { "type": "string" },
"existingSecretKeyKnownHosts": { "type": "string" },
"existingSecretKeyToken": { "type": "string" }
}
}
}
}
},
"session": {
"type": "object",
"additionalProperties": false,
"properties": {
"autoStartClaude": { "type": "boolean" },
"workspaceDir": { "type": "string" },
"ttydPort": { "type": "integer", "minimum": 1, "maximum": 65535 },
"extraApkPackages": { "type": "array", "items": { "type": "string" } },
"claudeCodeVersion": { "type": "string" },
"resources": { "type": "object" },
"idleTimeoutSeconds": { "type": "integer", "minimum": 60 },
"maxLifetimeSeconds": { "type": "integer", "minimum": 300 },
"reaper": {
"type": "object",
"additionalProperties": false,
"properties": {
"intervalSeconds": { "type": "integer", "minimum": 10 },
"cronjob": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"schedule": { "type": "string" }
}
}
}
},
"maxSessions": { "type": "integer", "minimum": 1 },
"verifyCommand": { "type": "string" },
"autoPush": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"branchPrefix": { "type": "string" },
"protectedBranches": { "type": "array", "items": { "type": "string" } }
}
},
"podLabels": { "type": "object" },
"podAnnotations": { "type": "object" },
"nodeSelector": { "type": "object" },
"tolerations": { "type": "array" },
"priorityClassName": { "type": "string" }
}
},
"networkPolicy": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"dnsNamespaceSelector": { "type": "object" },
"allowInternetHttps": { "type": "boolean" },
"allowSshGit": { "type": "boolean" },
"blockedEgressCIDRs": { "type": "array", "items": { "type": "string" } },
"sessionEgressExtra": {
"type": "array",
"items": {
"type": "object",
"required": ["cidr", "ports"],
"properties": {
"cidr": { "type": "string" },
"ports": { "type": "array" }
}
}
}
}
},
"ingress": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"className": { "type": "string" },
"annotations": { "type": "object" },
"hosts": { "type": "array" },
"tls": { "type": "array" }
}
},
"service": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": { "type": "string", "enum": ["ClusterIP", "NodePort", "LoadBalancer"] },
"port": { "type": "integer", "minimum": 1, "maximum": 65535 },
"nodePort": { "type": ["integer", "null"], "minimum": 1, "maximum": 65535 },
"annotations": { "type": "object" },
"loadBalancerIP": { "type": "string" },
"loadBalancerClass": { "type": "string" },
"loadBalancerSourceRanges": { "type": "array", "items": { "type": "string" } },
"externalTrafficPolicy": { "type": "string", "enum": ["", "Cluster", "Local"] },
"labels": { "type": "object" }
}
},
"podSecurityContext": { "type": "object" },
"containerSecurityContext": { "type": "object" },
"commonLabels": { "type": "object" },
"commonAnnotations": { "type": "object" },
"podDisruptionBudget": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"minAvailable": { "type": ["integer", "string"] }
}
}
},
"definitions": {
"image": {
"type": "object",
"additionalProperties": false,
"required": ["registry", "repository", "tag"],
"properties": {
"registry": { "type": "string" },
"repository": { "type": "string" },
"tag": { "type": "string" },
"pullPolicy": { "type": "string", "enum": ["Always", "IfNotPresent", "Never"] }
}
}
}
}