
weaveworks/policy-agentWeaveworks Policy Agent 是一款由Weaveworks开发的策略执行工具,主要用于在容器编排环境(如Kubernetes)中通过执行Rego策略(Open Policy Agent的策略语言)控制资源准入流程。该工具通过拦截并检查资源创建/更新请求,确保只有符合策略的资源能够进入集群,从而提升系统安全性与合规性。
bashdocker run -d \ --name weave-policy-agent \ -v /local/policy/dir:/policies \ # 挂载本地策略目录 -e POLICY_DIR=/policies \ # 指定容器内策略目录 -e LOG_LEVEL=info \ # 设置日志级别 -e KUBE_API_URL=[***] \ # Kubernetes API地址 -p 8080:8080 \ # 暴露策略检查API端口 weaveworks/policy-agent:latest
创建包含Rego策略的ConfigMap:
yamlapiVersion: v1 kind: ConfigMap metadata: name: rego-policies namespace: weave-system data: allow-only-approved-images.rego: | package kubernetes.admission default allow = false allow { input.request.kind.kind == "Pod" [_, image] := split(input.request.object.spec.containers[0].image, ":") image == "approved-registry.example.com/app" }
yamlapiVersion: apps/v1 kind: Deployment metadata: name: weave-policy-agent namespace: weave-system spec: replicas: 1 selector: matchLabels: app: policy-agent template: metadata: labels: app: policy-agent spec: containers: - name: policy-agent image: weaveworks/policy-agent:latest volumeMounts: - name: policy-volume mountPath: /policies env: - name: POLICY_DIR value: "/policies" - name: LOG_LEVEL value: "info" - name: SERVER_PORT value: "8080" ports: - containerPort: 8080 volumes: - name: policy-volume configMap: name: rego-policies
通过Kubernetes Admission Webhook将策略检查集成到资源准入流程:
yamlapiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: name: weave-policy-agent-webhook webhooks: - name: policy-agent.weaveworks.com clientConfig: service: name: policy-agent-service namespace: weave-system path: /validate caBundle: <CA_BUNDLE> # 替换为实际CA证书 rules: - apiGroups: [""] apiVersions: ["v1"] resources: ["pods"] operations: ["CREATE", "UPDATE"] scope: "Namespaced" admissionReviewVersions: ["v1"] sideEffects: None timeoutSeconds: 5
| 参数名 | 环境变量名 | 描述 | 默认值 |
|---|---|---|---|
| 策略文件目录 | POLICY_DIR | 容器内Rego策略文件存放路径 | /policies |
| 日志级别 | LOG_LEVEL | 日志输出级别(debug/info/warn/error) | info |
| 服务端口 | SERVER_PORT | 策略检查API服务端口 | 8080 |
| Kubernetes API地址 | KUBE_API_URL | 集群API服务器地址 | [***] |
| 审计日志路径 | AUDIT_LOG_PATH | 策略检查审计日志存放路径 | /var/log/weave/policy-agent.log |
| TLS证书路径 | TLS_CERT_PATH | 服务端TLS证书路径 | /etc/tls/cert.pem |
| TLS私钥路径 | TLS_KEY_PATH | 服务端TLS私钥路径 | /etc/tls/key.pem |
opa eval命令预先验证Rego策略语法正确性,避免因策略错误导致服务异常

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务