Files
claude-code/values.schema.json
T
claude cd7092be17
Helm Chart Release / release-chart (push) Successful in 7s
Build Session Image / build-push (push) Successful in 2m3s
feat: Service を LoadBalancer 対応にしローカル LB の IP で管理画面へアクセス可能に (v2.1.263-a)
- templates/service.yaml: service.type 既定を LoadBalancer に。annotations
  (kube-vip の VIP 指定等) / loadBalancerIP / loadBalancerClass /
  loadBalancerSourceRanges / externalTrafficPolicy / nodePort / labels を追加。
  Ingress 機能は変更なし(LoadBalancer と併用可)
- values.yaml / values.schema.json: service ブロックを拡張
- templates/NOTES.txt: LoadBalancer の EXTERNAL-IP 案内を追加
- examples/loadbalancer-oauth.values.yaml: Ingress 無効 + LB + source range 制限 +
  サブスクリプション認証 (authMode: oauth) の構成例を追加
- README: 「Claude 認証(API 課金なし / サブスクリプション)」「管理画面への
  アクセス(LoadBalancer / Ingress)」セクションを追加。claude setup-token →
  anthropic.authMode: oauth(CLAUDE_CODE_OAUTH_TOKEN 注入)でローカル実行と同一挙動
- helm lint / template 検証済み
2026-09-08 14:01:34 +09:00

277 lines
9.0 KiB
JSON

{
"$schema": "https://json-schema.org/draft-07/schema#",
"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"] },
"apiKey": { "type": "string" },
"oauthToken": { "type": "string" },
"existingSecret": { "type": "string" },
"existingSecretKeyApiKey": { "type": "string" },
"existingSecretKeyOauthToken": { "type": "string" },
"extraEnv": { "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"] }
}
}
}
}