weaveworks/flagger-loadtesterFlagger是一个开源的渐进式交付工具,专为Kubernetes设计。它提供自动化的金丝雀发布、蓝绿部署和A/B测试能力,帮助团队安全地将应用程序更新部署到生产环境。通过与服务网格和监控系统集成,Flagger能够监控关键指标并在检测到问题时自动回滚,从而降低发布风险。
bashdocker run -d \ --name flagger \ --restart always \ -e "FLAGGER_METRICS_SERVER=[***]" \ -e "FLAGGER_KUBECONFIG=/etc/kubeconfig" \ -v /path/to/kubeconfig:/etc/kubeconfig \ flagger/flagger:latest
yamlversion: '3' services: flagger: image: flagger/flagger:latest container_name: flagger restart: always environment: - FLAGGER_METRICS_SERVER=[***] - FLAGGER_LOG_LEVEL=info - FLAGGER_KUBECONFIG=/etc/kubeconfig volumes: - /path/to/kubeconfig:/etc/kubeconfig
推荐通过Helm chart部署到Kubernetes集群:
bashhelm repo add flagger [***] helm repo update helm install flagger flagger/flagger \ --namespace flagger-system \ --create-namespace \ --set meshProvider=istio \ --set metricsServer=[***]
| 环境变量 | 描述 | 默认值 |
|---|---|---|
FLAGGER_METRICS_SERVER | 监控指标服务器地址 | [***] |
FLAGGER_LOG_LEVEL | 日志级别 (debug, info, warn, error) | info |
FLAGGER_KUBECONFIG | Kubernetes配置文件路径 | /root/.kube/config |
FLAGGER_NAMESPACE | 监控的命名空间 | 所有命名空间 |
FLAGGER_MESH_PROVIDER | 服务网格提供商 (istio, linkerd, contour等) | istio |
FLAGGER_ANNOTATION_PREFIX | 自定义注解前缀 | flagger.app |
Flagger使用Kubernetes CRDs定义部署策略:
yamlapiVersion: flagger.app/v1beta1 kind: Canary metadata: name: my-app namespace: default spec: targetRef: apiVersion: apps/v1 kind: Deployment name: my-app progressDeadlineSeconds: 60 service: port: 80 targetPort: 8080 analysis: interval: 30s threshold: 10 maxWeight: 50 stepWeight: 5 metrics: - name: request-success-rate thresholdRange: min: 99 interval: 1m webhooks: - name: load-test url: [***] timeout: 15s metadata: cmd: "hey -z 1m -q 10 -c 2 [***]"
Flagger可以与以下工具生态系统集成:
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务