2. 环境准备:Kubernetes集群搭建、Fluent Bit Helm Chart安装、测试工具链准备
本章聚焦于搭建一套可复用的测试环境,为后续的准入控制校验与接口调用测试提供基础设施。环境包含三个核心层:Kubernetes 集群(运行 Fluent Bit 工作负载)、Fluent Bit Helm Chart(管理版本与配置)、测试工具链(发起与验证 API 请求)。
环境版本对齐建议: 本课程测试环境使用 Kubernetes v1.28、Helm v3.14、Fluent Bit v2.2.x。若使用其他版本,请确认 Admission Webhook API 版本(admission.k8s.io/v1)与 Fluent Bit 配置字段兼容性。
2.1 Kubernetes 集群搭建(本地测试环境)
推荐使用 kind(Kubernetes in Docker)或 minikube 搭建单节点集群,便于快速重置与版本切换。以下以 kind 为例:
# 创建 kind 集群配置文件
cat <<EOF > kind-cluster.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
apiServer:
extraArgs:
enable-admission-plugins: "ValidatingAdmissionWebhook,MutatingAdmissionWebhook"
EOF
# 创建集群
kind create cluster --config kind-cluster.yaml --name fluentbit-test
# 验证集群状态
kubectl cluster-info --context kind-fluentbit-test
kubectl get nodes
关键检查点: 确保 API Server 已启用
ValidatingAdmissionWebhook 与 MutatingAdmissionWebhook 准入插件。若使用云托管集群(如 EKS、AKS),默认已开启,无需额外配置。
集群搭建完成后,核心组件关系如下图所示:
2.2 Fluent Bit Helm Chart 安装
使用官方 Helm Chart 部署 Fluent Bit,便于版本管理与配置注入。安装步骤:
- 添加 Helm 仓库
helm repo add fluent https://fluent.github.io/helm-charts
helm repo update
- 创建命名空间与配置
kubectl create namespace fluentbit-system
# 创建 values.yaml 用于后续版本漂移测试
cat <<EOF > fluentbit-values.yaml
image:
repository: cr.fluentbit.io/fluent/fluent-bit
tag: "2.2.2"
pullPolicy: IfNotPresent
config:
service: |
[SERVICE]
Daemon Off
Log_Level info
Parsers_File parsers.conf
Parsers_File custom_parsers.conf
inputs: |
[INPUT]
Name tail
Path /var/log/containers/*.log
Tag kube.*
Mem_Buf_Limit 5MB
Skip_Long_Lines On
filters: |
[FILTER]
Name kubernetes
Match kube.*
Merge_Log On
Keep_Log Off
outputs: |
[OUTPUT]
Name stdout
Match *
Format json_lines
tolerations:
- operator: Exists
resources:
limits:
memory: 128Mi
requests:
cpu: 100m
memory: 64Mi
EOF
- 安装 Fluent Bit
helm install fluent-bit fluent/fluent-bit \
--namespace fluentbit-system \
--values fluentbit-values.yaml \
--version 0.30.0
- 验证安装
kubectl get pods -n fluentbit-system -o wide
kubectl get daemonset -n fluentbit-system
kubectl logs -n fluentbit-system -l app.kubernetes.io/name=fluent-bit --tail=20
版本漂移测试准备: 后续章节将通过修改
fluentbit-values.yaml 中的 image.tag 字段(如从 2.2.2 改为 2.1.9 或 2.3.0),模拟版本漂移场景,触发准入控制校验。
2.3 测试工具链准备
测试工具链用于发起 AdmissionReview 请求、验证 Webhook 响应、检查集群状态。以下为各工具的安装与验证方法:
| 工具 | 版本要求 | 安装方式 | 验证命令 |
|---|---|---|---|
| kubectl | ≥ v1.28 | 包管理器 / 二进制下载 | kubectl version --client |
| curl | ≥ 7.68 | 系统预装 / apt/yum | curl --version |
| Postman | ≥ v10.x | 官网下载 / Snap | 启动后创建测试请求 |
| Helm | ≥ v3.14 | 脚本安装 / 二进制 | helm version |
| jq | ≥ 1.6 | 包管理器 | jq --version |
各工具在测试流程中的角色如下:
- kubectl:创建/更新 Fluent Bit 资源、查看 Webhook 配置、检查 Pod 状态。
- curl:直接向 API Server 发送 AdmissionReview JSON 请求,绕过 kubectl 进行底层验证。
- Postman:构建可视化测试集合,保存请求模板,批量执行版本漂移测试用例。
- jq:解析 AdmissionReview 响应 JSON,提取 allowed 字段与 status.message。
Postman 环境变量建议: 创建集合级变量
api_server_url(如 https://127.0.0.1:6443)、webhook_、fluentbit_namespace,便于切换测试环境。
测试工具链与集群的交互流程如下图所示:
2.4 环境验证清单
完成上述步骤后,执行以下验证项,确保环境就绪:
| 验证项 | 预期结果 | 验证命令 |
|---|---|---|
| 集群节点状态 | Ready | kubectl get nodes |
| Fluent Bit Pod 运行 | Running (每个节点一个) | kubectl get pods -n fluentbit-system |
| Helm Release 状态 | deployed | helm list -n fluentbit-system |
| Admission Webhook 配置 | ValidatingWebhookConfiguration 存在 | kubectl get validatingwebhookconfigurations |
| curl 访问 API Server | 返回 401 或 200(取决于认证) | curl -k https://localhost:6443/livez |
| Postman 连通性 | 发送 GET 请求返回集群版本 | Postman → GET /version |
常见问题:
- 若 Fluent Bit Pod 处于 CrashLoopBackOff,检查
kubectl logs确认配置语法错误。 - 若 Admission Webhook 未生效,确认 API Server 启动参数包含
--enable-admission-plugins。 - Postman 访问 API Server 需配置 TLS 证书或使用
--insecure跳过验证(仅限本地测试)。