2026-05-26 06:05:33 +00:00
|
|
|
|
# k6 測試專用設定(搭配 make k6-up + make k6-gateway)
|
|
|
|
|
|
#
|
|
|
|
|
|
# 與 dev 差異:
|
|
|
|
|
|
# - Email: SMTP → MailHog(localhost:1025);OTP 由 k6 透過 MailHog HTTP API 撈
|
|
|
|
|
|
# - SMS : provider=mock,並由 mock_sender 寫到 Redis(key: dev:notification:last:sms:<phone>)
|
|
|
|
|
|
# - Permission.Casbin.Enabled: true(rbac journey)
|
|
|
|
|
|
# - Zitadel: 用環境變數帶 PAT / OAuth secret
|
|
|
|
|
|
#
|
|
|
|
|
|
# 啟動:
|
|
|
|
|
|
# export ZITADEL_SERVICE_TOKEN=$(cat deploy/zitadel/machinekey/zitadel-admin-sa.token)
|
|
|
|
|
|
# ./gateway -f etc/gateway.k6.yaml
|
|
|
|
|
|
# (或直接 make k6-gateway)
|
|
|
|
|
|
|
|
|
|
|
|
Name: gateway
|
|
|
|
|
|
Host: 0.0.0.0
|
|
|
|
|
|
Port: 8888
|
|
|
|
|
|
|
|
|
|
|
|
Mongo:
|
|
|
|
|
|
Schema: mongodb
|
|
|
|
|
|
Host: 127.0.0.1
|
|
|
|
|
|
Port: 27017
|
|
|
|
|
|
Database: gateway_k6
|
|
|
|
|
|
TLS: false
|
|
|
|
|
|
MaxPoolSize: 30
|
|
|
|
|
|
MinPoolSize: 5
|
|
|
|
|
|
MaxConnIdleTime: 30m
|
|
|
|
|
|
|
|
|
|
|
|
Redis:
|
|
|
|
|
|
Host: localhost:6379
|
|
|
|
|
|
Type: node
|
|
|
|
|
|
|
|
|
|
|
|
Notification:
|
|
|
|
|
|
DefaultLocale: zh-tw
|
|
|
|
|
|
Email:
|
|
|
|
|
|
Provider: smtp
|
|
|
|
|
|
From: noreply@k6.local
|
|
|
|
|
|
SMTP:
|
|
|
|
|
|
Enable: true
|
|
|
|
|
|
Sort: 1
|
|
|
|
|
|
Host: localhost
|
|
|
|
|
|
Port: 1025
|
|
|
|
|
|
Username: ""
|
|
|
|
|
|
Password: ""
|
|
|
|
|
|
SES:
|
|
|
|
|
|
Enable: false
|
|
|
|
|
|
SMS:
|
|
|
|
|
|
Provider: mock
|
|
|
|
|
|
Mitake:
|
|
|
|
|
|
Enable: false
|
|
|
|
|
|
Async:
|
|
|
|
|
|
QueueRedisKey: notification:queue:k6
|
|
|
|
|
|
Worker: 1
|
|
|
|
|
|
MaxRetry: 2
|
|
|
|
|
|
BackoffSeconds: [1, 3]
|
|
|
|
|
|
RatePerTenant:
|
|
|
|
|
|
Email: 1000
|
|
|
|
|
|
SMS: 1000
|
|
|
|
|
|
|
|
|
|
|
|
Member:
|
|
|
|
|
|
OTP:
|
|
|
|
|
|
Length: 6
|
|
|
|
|
|
TTLSeconds: 300
|
|
|
|
|
|
MaxAttempts: 10
|
2026-05-26 16:55:37 +00:00
|
|
|
|
ResendCooldownSeconds: 60
|
2026-05-26 06:05:33 +00:00
|
|
|
|
DailyVerifyLimit: 200
|
|
|
|
|
|
TOTP:
|
|
|
|
|
|
Issuer: CloudEP-k6
|
|
|
|
|
|
Algorithm: SHA1
|
|
|
|
|
|
Digits: 6
|
|
|
|
|
|
PeriodSeconds: 30
|
|
|
|
|
|
Window: 1
|
|
|
|
|
|
BackupCodeCount: 10
|
|
|
|
|
|
BackupCodeLength: 12
|
|
|
|
|
|
EnrollTTLSeconds: 600
|
|
|
|
|
|
ReplayTTLSeconds: 90
|
|
|
|
|
|
SecretKEK: "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"
|
|
|
|
|
|
Registration:
|
|
|
|
|
|
RequireInviteCode: true
|
|
|
|
|
|
TrustSocialEmailVerified: true
|
|
|
|
|
|
|
|
|
|
|
|
Auth:
|
|
|
|
|
|
AccessExpire: 900
|
|
|
|
|
|
RefreshExpire: 604800
|
|
|
|
|
|
ActiveKID: v1
|
|
|
|
|
|
AccessSecret: "k6-access-secret-32-bytes-min!!!"
|
|
|
|
|
|
RefreshSecret: "k6-refresh-secret-32-bytes-min!!"
|
|
|
|
|
|
RegistrationSessionTTLSeconds: 600
|
|
|
|
|
|
|
|
|
|
|
|
Permission:
|
|
|
|
|
|
Casbin:
|
|
|
|
|
|
Enabled: true
|
|
|
|
|
|
ModelPath: etc/rbac.conf
|
|
|
|
|
|
PolicyAdapter: auto
|
|
|
|
|
|
Cache:
|
|
|
|
|
|
UserRolesTTLSeconds: 10
|
|
|
|
|
|
RolePermsTTLSeconds: 10
|
|
|
|
|
|
CatalogTTLSeconds: 60
|
|
|
|
|
|
Reload:
|
|
|
|
|
|
Channel: casbin:reload:k6
|
|
|
|
|
|
DebounceMilliseconds: 50
|
|
|
|
|
|
HeartbeatSeconds: 60
|
|
|
|
|
|
|
|
|
|
|
|
# ServiceUserToken / OAuthClientSecret 由環境變數注入:
|
|
|
|
|
|
# ZITADEL_SERVICE_TOKEN, ZITADEL_OAUTH_CLIENT_SECRET, ZITADEL_GOOGLE_CLIENT_SECRET
|
|
|
|
|
|
Zitadel:
|
|
|
|
|
|
Issuer: http://localhost:8080
|
|
|
|
|
|
APIBase: http://localhost:8080
|
|
|
|
|
|
ServiceUserToken: ""
|
|
|
|
|
|
DefaultOrgID: ""
|
|
|
|
|
|
OAuthClientID: ""
|
|
|
|
|
|
OAuthClientSecret: ""
|
|
|
|
|
|
GoogleClientID: ""
|
|
|
|
|
|
GoogleClientSecret: ""
|
|
|
|
|
|
GoogleIdPID: ""
|
|
|
|
|
|
JWKSUrl: ""
|
|
|
|
|
|
TimeoutSeconds: 15
|