特征标志管理Skill runtime-config-flagd

该技能用于通过flagd进行特征标志管理,在OpenTelemetry演示环境中实现故障注入和修复,适用于运行时配置和DevOps实践。关键词包括特征标志管理、flagd、OpenFeature、Kubernetes、DevOps、故障注入、运行时配置。

DevOps 0 次安装 2 次浏览 更新于 3/15/2026

name: runtime-config-flagd description: 通过flagd(OpenFeature)进行特征标志管理。用于在OTel演示环境中列出、检查和切换特征标志。标志控制故障注入场景(支付失败、CPU峰值、内存泄漏等),并可以切换以进行修复。 category: runtime-config required_integrations:

  • kubernetes

特征标志管理 (flagd)

工作原理

OpenTelemetry演示使用flagd作为其特征标志提供者。标志存储在Kubernetes ConfigMap中,并由flagd服务加载。服务通过OpenFeature SDK在运行时检查标志,以决定是否注入故障。

标志生命周期:

  1. 标志定义存在于ConfigMap中(otel-demo命名空间中的flagd-config
  2. flagd监视ConfigMap并在更改时热重载
  3. 服务通过gRPC评估标志并相应行为
  4. 要修复故障,将标志的默认变体设置为off

可用脚本

所有脚本位于.claude/skills/runtime-config-flagd/scripts/

list_scenarios.py - 列出故障场景(从此开始)

显示所有可用的故障场景及其当前状态。

python .claude/skills/runtime-config-flagd/scripts/list_scenarios.py

# 仅显示当前活跃的场景
python .claude/skills/runtime-config-flagd/scripts/list_scenarios.py --active-only

# JSON输出
python .claude/skills/runtime-config-flagd/scripts/list_scenarios.py --json

输出包括:标志名称、当前状态(活跃/非活跃)、受影响的服务、效果描述、检测方法和修复步骤。

list_flags.py - 列出所有特征标志

python .claude/skills/runtime-config-flagd/scripts/list_flags.py

# 显示完整的变体详情
python .claude/skills/runtime-config-flagd/scripts/list_flags.py --verbose

# 仅限故障相关标志
python .claude/skills/runtime-config-flagd/scripts/list_flags.py --incidents-only

get_flag.py - 检查特定标志

python .claude/skills/runtime-config-flagd/scripts/get_flag.py <flag_key>

# 示例:
python .claude/skills/runtime-config-flagd/scripts/get_flag.py paymentFailure
python .claude/skills/runtime-config-flagd/scripts/get_flag.py adHighCpu --json

set_flag.py - 切换标志(修复)

# 始终先进行干运行
python .claude/skills/runtime-config-flagd/scripts/set_flag.py <flag_key> <variant> --dry-run

# 然后应用
python .claude/skills/runtime-config-flagd/scripts/set_flag.py <flag_key> <variant>

# 示例:
python .claude/skills/runtime-config-flagd/scripts/set_flag.py paymentFailure off --dry-run
python .claude/skills/runtime-config-flagd/scripts/set_flag.py paymentFailure off
python .claude/skills/runtime-config-flagd/scripts/set_flag.py adHighCpu off
python .claude/skills/runtime-config-flagd/scripts/set_flag.py emailMemoryLeak off

故障场景参考

场景 标志 服务 效果 修复
支付失败 paymentFailure payment (Node.js) 可配置百分比请求失败 设置为off
支付不可达 paymentUnreachable payment 完全不可用 设置为off
高CPU adHighCpu ad (Java) CPU峰值80-100% 设置为off
GC压力 adManualGc ad (Java) 频繁全GC暂停 设置为off
Ad故障 adFailure ad (Java) Ad服务错误 设置为off
内存泄漏 emailMemoryLeak email (Ruby) 几分钟后OOM 设置为off + 重启pod
延迟峰值 imageSlowLoad image-provider 5-10秒延迟 设置为off
Kafka延迟 kafkaQueueProblems checkout/accounting 消费者延迟 设置为off
缓存故障 recommendationCacheFailure recommendation 缓存未命中风暴 设置为off
目录故障 productCatalogFailure product-catalog 产品查询错误 设置为off
购物车故障 cartFailure cart (.NET) 购物车操作失败 设置为off
流量峰值 loadGeneratorFloodHomepage all services 请求洪流 设置为off
LLM不准确 llmInaccurateResponse product-reviews 错误AI内容 设置为off
LLM速率限制 llmRateLimitError product-reviews 429错误 设置为off

标志变体参考

标志有不同的变体类型:

布尔标志 (开/关):

  • adHighCpu, adManualGc, adFailure, paymentUnreachable, cartFailure
  • recommendationCacheFailure, productCatalogFailure
  • llmInaccurateResponse, llmRateLimitError
  • 变体: on (真), off (假)

百分比标志 (分级故障率):

  • paymentFailure: off (0), 10% (0.1), 25% (0.25), 50% (0.5), 75% (0.75), 90% (0.95), 100% (1)

强度标志 (分级效果):

  • emailMemoryLeak: off (0), 1x (1), 10x (10), 100x (100), 1000x (1000), 10000x (10000)
  • imageSlowLoad: off (0), 5sec (5000ms), 10sec (10000ms)

数字标志:

  • kafkaQueueProblems: off (0), on (100)
  • loadGeneratorFloodHomepage: off (0), on (100)

修复工作流程

  1. 识别场景 - 使用list_scenarios.py --active-only查看活跃故障
  2. 确认标志 - 使用get_flag.py <flag_key>验证当前状态
  3. 干运行 - 使用set_flag.py <flag_key> off --dry-run预览更改
  4. 应用 - 使用set_flag.py <flag_key> off禁用故障
  5. 验证 - 检查指标/日志以确认问题正在解决
  6. 修复后 - 一些场景(内存泄漏)可能还需要重启pod

安全

  • 始终先进行干运行再设置标志
  • 将标志设置为off总是安全的——它恢复正常行为
  • 将标志设置为on或非零变体会注入故障——仅在有意识时进行
  • 标志更改在几秒钟内生效(flagd热重载)
  • 对于emailMemoryLeak,在设置为off后,您可能还需要重启email pod以回收泄漏的内存

快速命令

目标 命令
查看活跃故障 list_scenarios.py --active-only
检查特定标志 get_flag.py paymentFailure
禁用支付失败 set_flag.py paymentFailure off
启用50%支付失败 set_flag.py paymentFailure 50%
禁用所有CPU峰值 set_flag.py adHighCpu off
查看所有标志详细 list_flags.py --verbose