# ============================================================ # 本地化环境变量模板 # cp .env.example .env 然后按需修改 # # 关键:所有组件都在本地/私有网络运行,不依赖任何云服务 # ============================================================ # ---------- LLM API(本地 Ollama/vLLM/LocalAI) ---------- LLM_API_BASE=http://localhost:11434/v1 LLM_API_KEY= LLM_MODEL=qwen2.5:7b LLM_AUTH_TYPE=none # ---------- Embedding ---------- EMBEDDING_API_BASE=http://localhost:11434/v1 EMBEDDING_API_KEY= EMBEDDING_MODEL=nomic-embed-text KNOWLEDGE_RUNTIME_WRITE_ENABLED=true KNOWLEDGE_EMBEDDING_ENABLED=false KNOWLEDGE_STORE_PATH=/tmp/flawless-knowledge-base.json # ---------- LangFuse(自托管) ---------- LANGFUSE_ENABLED=false LANGFUSE_PUBLIC_KEY= LANGFUSE_SECRET_KEY= LANGFUSE_HOST= # ---------- 统一可观测(可选,支持组织现有服务) ---------- PROMETHEUS_URL= GRAY_RELEASE_ENABLED=true GRAY_RELEASE_ANALYSIS_URL=http://k8s-agent-api.k8s-agent.svc.cluster.local:8080 GRAY_RELEASE_BASELINE_TIMEOUT_SECONDS=180 GRAY_RELEASE_CHANGE_TIMEOUT_SECONDS=240 GRAY_RELEASE_REQUIRE_PROMETHEUS=true GRAY_RELEASE_VERIFY_TIMEOUT_SECONDS=3600 GRAY_RELEASE_DEFAULT_ERROR_RATE_PROMQL= GRAY_RELEASE_DEFAULT_P99_LATENCY_PROMQL= LOKI_URL= TEMPO_URL= GRAFANA_URL= # ---------- 多集群与 CMDB ---------- CMDB_URL= RANCHER_URL= RANCHER_TOKEN= RANCHER_CLUSTER_IDS=all # Web 上传的 kubeconfig 会使用 Fernet 加密后持久化。生产环境请把密钥放入 # Kubernetes Secret;留空时单实例会在数据库旁生成 chmod 0600 的本地密钥。 CLUSTER_REGISTRY_PATH=/var/lib/flawless/clusters.db CLUSTER_REGISTRY_FALLBACK_PATH=/tmp/flawless-clusters.db CLUSTER_CREDENTIAL_ENCRYPTION_KEY= # ---------- 云与基础设施适配器 ---------- # 只在这里放非敏感信息;CSI_STORAGE_AK/SK、VIRTUALIZATION_PLATFORM_TOKEN 等密钥应放 Kubernetes Secret。 CLOUD_ADAPTERS_JSON=[{"id":"generic-storage","provider":"csi-storage","display_name":"Generic CSI Storage","enabled":false,"capabilities":["storage","csi","pv-pvc","capacity","latency","topology"],"auth_mode":"secret-ref","regions":["example-region"],"inventory_scope":"storage-pool/cluster","safety_boundary":"read-only discovery + PVC/PV change approval"},{"id":"virtualization-platform","provider":"virtualization","display_name":"Virtualization Platform","enabled":false,"capabilities":["hci","virtualization","network","storage","security","topology"],"auth_mode":"secret-ref","regions":["example-dc"],"inventory_scope":"tenant/resource-pool","safety_boundary":"tenant token + high-risk approval"}] CSI_STORAGE_ENDPOINT= VIRTUALIZATION_PLATFORM_ENDPOINT= # ---------- 协作通道(密钥应放 Kubernetes Secret,不要放 ConfigMap) ---------- SLACK_BOT_TOKEN= SLACK_CHANNEL= SLACK_WEBHOOK_URL= TELEGRAM_BOT_TOKEN= TELEGRAM_CHAT_ID= LARK_WEBHOOK_URL= DINGTALK_WEBHOOK_URL= WECOM_WEBHOOK_URL= OUTBOUND_WEBHOOK_URL= # ---------- K8s 权限 ---------- # "all" = 全集群监控;指定 namespace 用逗号分隔如 "default,prod" ALLOWED_NAMESPACES=all # ---------- Healing Agent ---------- # 服务端总开关。false 时即使前端打开自动修复,也只做 dry-run。 AUTO_HEALING_ENABLED=false HEALING_SCALE_DELTA=1 OPS_MUTATION_ENABLED=false OPS_CONTINUATION_INTERVAL_SECONDS=30 OPS_STEP_APPROVAL_TIMEOUT_SECONDS=0 AUTONOMOUS_OPS_ENABLED=false SKILL_EXECUTION_REQUIRED=true NODE_EXEC_NAMESPACE=flawless-node-exec NODE_EXEC_IMAGE=busybox:1.36 # 先在这一较短窗口内固定保存目标 Pod YAML 与 current/previous logs。 OPS_PRIORITY_EVIDENCE_TIMEOUT_SECONDS=30 OPS_PRIORITY_LOG_REQUEST_TIMEOUT_SECONDS=12 OPS_EVIDENCE_TIMEOUT_SECONDS=70 OPS_LLM_PLANNER_TIMEOUT_SECONDS=60 OPS_LLM_PLANNER_MAX_TOKENS=4096 # LLM 返回后的 Skill 匹配/指标持久化独立熔断,不能占用根因诊断主阶段。 OPS_SKILL_ROUTER_TIMEOUT_SECONDS=18 # 模型异常时的无 LLM 确定性重规划也必须在有限时间内收尾。 OPS_DETERMINISTIC_REPLAN_TIMEOUT_SECONDS=20 OPS_STEP_TIMEOUT_SECONDS=35 OPS_CHANGE_TIMEOUT_SECONDS=45 OPS_HEARTBEAT_SECONDS=5 OPS_VERIFY_INITIAL_GRACE_SECONDS=15 OPS_VERIFY_TIMEOUT_SECONDS=45 OPS_VERIFY_INTERVAL_SECONDS=5 # 新 Pod 通过 Ready、rollout 与当前日志判定后,短暂复检即可闭环。 OPS_RECOVERY_STABILITY_SECONDS=15 # 防止遗留的过长观察窗让已恢复任务一直显示验证中;需要时可显式调大。 OPS_RECOVERY_MAX_STABILITY_SECONDS=15 OPS_RECOVERY_EVIDENCE_TIMEOUT_SECONDS=10 # 运维 records 和 Skill 调用统计持久化保留策略。 OPS_JOB_STORE_PATH=/tmp/flawless-ops-jobs.json OPS_RECORD_RETENTION_DAYS=365 OPS_JOB_STORE_LIMIT=5000 # 静态 PV 仅能使用管理员批准模板;动态 CSI PVC 不会走此分支。 AUTO_OPS_STATIC_PV_TEMPLATES_JSON={} # local/hostPath 按集群设置目录白名单;空对象表示默认禁止。 AUTO_OPS_HOSTPATH_BASE_PATHS_JSON={} AUTO_OPS_ALLOW_LOCAL_STATIC_PV=false # ---------- SLO / 错误预算 / 发布治理 ---------- SLO_DEFAULT_TARGET_PERCENT=99.9 SLO_DEFAULT_WINDOW_DAYS=30 RELIABILITY_STORE_PATH=/tmp/flawless-reliability-state.json EFFECTIVENESS_STORE_PATH=/tmp/flawless-effectiveness-state.json EFFECTIVENESS_STORE_FALLBACK_PATH=/tmp/flawless-effectiveness-state.json # ---------- Agent 内部通信 ---------- HEALING_AGENT_URL=http://localhost:8101/a2a/tasks INCIDENT_AGENT_URL=http://localhost:8102/a2a/tasks POSTMORTEM_AGENT_URL=http://localhost:8103/a2a/tasks OBSERVABILITY_AGENT_URL=http://localhost:8100 # ---------- MCP Server ---------- MCP_SERVER_URL=http://localhost:8105/mcp # ---------- 日志 ---------- LOG_LEVEL=INFO # ---------- 控制台管理员(密码不得写入本文件或 ConfigMap) ---------- CONSOLE_AUTH_REQUIRED=false CONSOLE_ADMIN_MODE=false CONSOLE_ADMIN_USERS=admin CONSOLE_ADMIN_TRUSTED_IDENTITY=false # CONSOLE_BASIC_AUTH_USERNAME / CONSOLE_BASIC_AUTH_PASSWORD 必须由 Kubernetes Secret 注入。