190 lines
5.9 KiB
YAML
190 lines
5.9 KiB
YAML
version: 1
|
|
kind: platform-infra-sub2api-codex-pool
|
|
|
|
metadata:
|
|
id: sub2api-codex-pool
|
|
owner: unidesk
|
|
relatedIssues:
|
|
- 339
|
|
- 340
|
|
|
|
runtime:
|
|
templates:
|
|
- id: codex-upstream-failover
|
|
kind: temp-unschedulable
|
|
description: Reusable Sub2API request-path cooling and failover policy for Codex-compatible API-key accounts.
|
|
spec:
|
|
enabled: true
|
|
rules:
|
|
- statusCode: 502
|
|
keywords: [upstream service temporarily unavailable, upstream request failed, context window, stream usage incomplete, missing terminal event]
|
|
durationMinutes: 1
|
|
description: Observed 502 upstream availability, context-window, and incomplete-stream failures briefly cool down the selected account.
|
|
- statusCode: 503
|
|
keywords: [upstream service temporarily unavailable, upstream request failed, temporarily unavailable]
|
|
durationMinutes: 1
|
|
description: Observed 503 temporary upstream availability failures briefly cool down the selected account.
|
|
- statusCode: 524
|
|
keywords: [upstream request failed, missing_required_parameter, encrypted_content]
|
|
durationMinutes: 1
|
|
description: Observed 524 upstream request and encrypted-content failures briefly cool down the selected account.
|
|
|
|
pool:
|
|
groupName: unidesk-codex-pool
|
|
groupDescription: UniDesk-managed Codex API-key pool for YAML-selected Sub2API clients.
|
|
apiKeyName: unidesk-codex-pool-api-key
|
|
apiKeySecretName: sub2api-codex-pool-api-key
|
|
apiKeySecretKey: API_KEY
|
|
adminEmailDefault: admin@sub2api.platform-infra.local
|
|
minOwnerBalanceUsd: 1000
|
|
defaultAccountPriority: 10
|
|
defaultAccountCapacity: 10
|
|
defaultAccountLoadFactor: 10
|
|
defaultSentinelProtect:
|
|
enabled: true
|
|
consecutiveFailures: 3
|
|
initialRetryDelaySeconds: 2
|
|
maxRetryDelaySeconds: 60
|
|
backoffMultiplier: 2
|
|
defaultTempUnschedulableTemplate: codex-upstream-failover
|
|
profiles:
|
|
entries:
|
|
- profile: yjxm1221
|
|
accountName: unidesk-codex-yjxm1221
|
|
configFile: config.toml.yjxm1221
|
|
authFile: auth.json.yjxm1221
|
|
trustUpstream: true
|
|
proxyId: 3
|
|
- profile: yjxm1221-pro
|
|
accountName: unidesk-codex-yjxm1221-pro
|
|
configFile: config.toml.yjxm1221-pro
|
|
authFile: auth.json.yjxm1221-pro
|
|
priority: 50
|
|
trustUpstream: true
|
|
proxyId: 3
|
|
manualAccounts:
|
|
bindingSources:
|
|
active-target-egress-proxy:
|
|
enabled: true
|
|
kind: proxy
|
|
provider: target-egress-proxy
|
|
description: Bind a protected manual account to the selected target's YAML-declared egress proxy.
|
|
pk01-host-proxy:
|
|
enabled: true
|
|
kind: proxy
|
|
provider: fixed-http-proxy
|
|
description: Bind protected/manual PK01 Sub2API accounts to the PK01 host proxy HTTP endpoint.
|
|
hostProxyRef: config/platform-infra/host-proxy.yaml#targets.PK01
|
|
fixedProxy:
|
|
protocol: http
|
|
host: 127.0.0.1
|
|
port: 10809
|
|
unified-pool-group:
|
|
enabled: true
|
|
kind: group
|
|
provider: pool-group
|
|
description: Attach a protected manual account to the unified Codex pool group.
|
|
protected:
|
|
- accountName: unidesk-codex-gptclub-sub2api
|
|
reason: Manually configured in Sub2API as protected; keep outside pool auto-management and sentinel control.
|
|
proxyBinding:
|
|
enabled: true
|
|
source: pk01-host-proxy
|
|
proxyName: platform-infra-sub2api-pk01-local-egress-proxy
|
|
groupBinding:
|
|
enabled: true
|
|
source: unified-pool-group
|
|
publicExposure:
|
|
enabled: false
|
|
proxyName: platform-infra-sub2api
|
|
configMapName: sub2api-frpc-config
|
|
deploymentName: sub2api-frpc
|
|
frpcImage: fatedier/frpc:v0.68.1
|
|
serverAddr: 74.48.78.17
|
|
serverPort: 7000
|
|
remotePort: 21880
|
|
localIP: sub2api.platform-infra.svc.cluster.local
|
|
localPort: 8080
|
|
publicBaseUrl: https://sub2api.74-48-78-17.nip.io
|
|
masterBaseUrl: http://127.0.0.1:21880
|
|
masterFrps:
|
|
configPath: /opt/hwlab-frp/frps.dev.toml
|
|
containerName: hwlab-frps-dev
|
|
masterCaddy:
|
|
enabled: true
|
|
domain: sub2api.74-48-78-17.nip.io
|
|
configPath: /etc/caddy/Caddyfile
|
|
serviceName: caddy
|
|
upstreamBaseUrl: http://127.0.0.1:21880
|
|
responseHeaderTimeoutSeconds: 600
|
|
edgeRetry:
|
|
enabled: true
|
|
tryDurationSeconds: 10
|
|
tryIntervalMilliseconds: 250
|
|
retryMatch:
|
|
methods: [POST]
|
|
paths: [/responses/compact]
|
|
localCodex:
|
|
backupSuffix: pre-sub2api
|
|
providerName: OpenAI
|
|
wireApi: responses
|
|
modelContextWindow: 272000
|
|
modelAutoCompactTokenLimit: 240000
|
|
supportsWebSockets: false
|
|
responsesWebSocketsV2: false
|
|
responsesSmokeModel: gpt-5.5
|
|
sentinel:
|
|
monitor:
|
|
enabled: true
|
|
actions:
|
|
enabled: true
|
|
schedule: "*/1 * * * *"
|
|
image: python:3.12-alpine
|
|
sdk:
|
|
openaiPythonVersion: "2.41.1"
|
|
serviceAccountName: sub2api-account-sentinel
|
|
configMapName: sub2api-account-sentinel-config
|
|
credentialsSecretName: sub2api-account-sentinel-profiles
|
|
stateConfigMapName: sub2api-account-sentinel-state
|
|
cronJobName: sub2api-account-sentinel
|
|
roleName: sub2api-account-sentinel
|
|
roleBindingName: sub2api-account-sentinel
|
|
model: gpt-5.5
|
|
endpoint: responses
|
|
marker:
|
|
prefix: UDSG_OK
|
|
exact: true
|
|
probe:
|
|
timeoutSeconds: 30
|
|
maxOutputTokens: 16
|
|
transportRetryMinutes: 5
|
|
userAgent: Go-http-client/1.1
|
|
gatewayFailureMonitor:
|
|
enabled: true
|
|
lookbackSeconds: 900
|
|
tailLines: 4000
|
|
initialTtlMinutes: 5
|
|
maxTtlMinutes: 30
|
|
backoffMultiplier: 2
|
|
paths:
|
|
- /responses
|
|
- /v1/responses
|
|
- /responses/compact
|
|
- /v1/responses/compact
|
|
cadence:
|
|
successInitialIntervalMinutes: 1
|
|
successMaxIntervalMinutes: 20
|
|
trustedSuccessMaxIntervalMinutes: 20
|
|
untrustedSuccessMaxIntervalMinutes: 2
|
|
successBackoffMultiplier: 2
|
|
jitterPercent: 10
|
|
freeze:
|
|
initialTtlMinutes: 1
|
|
maxTtlMinutes: 10
|
|
backoffMultiplier: 2
|
|
jitterPercent: 10
|
|
pricing:
|
|
usdPer1MInputTokens: 1.25
|
|
usdPer1MOutputTokens: 10
|
|
historyLimit: 200
|