Pixie项目开发环境搭建与组件开发指南
项目概述
Pixie是一个开源的Kubernetes原生观测平台,主要由三个核心组件构成:
- Pixie Cloud:作为控制平面,负责管理Vizier实例和托管用户界面
- Vizier:作为数据平面,包含部署在K8s集群中的代理组件
- CLI:命令行工具,用于部署和查询Vizier实例
本文将详细介绍如何搭建Pixie的开发环境以及各组件开发的具体流程。
开发环境准备
基础环境配置
Pixie提供了便捷的Docker开发环境,通过以下步骤即可快速搭建:
- 确保系统已安装Docker引擎
- 安装coreutils工具包(包含realpath命令)
- Ubuntu系统:
sudo apt-get install coreutils
- macOS系统:
brew install coreutils
- Ubuntu系统:
- 执行启动脚本进入开发容器:
./scripts/run_docker.sh
该容器内已预置所有必要的开发工具链,包括Bazel构建系统和Skaffold部署工具等。
Pixie Cloud开发指南
Pixie Cloud是Pixie的控制中枢,开发者可按以下步骤搭建开发版本:
1. 创建命名空间
kubectl create namespace plc
2. 加载配置
./scripts/create_cloud_secrets.sh
3. 部署依赖服务
kustomize build k8s/cloud_deps/base/elastic/operator | kubectl apply -f -
kustomize build k8s/cloud_deps/public | kubectl apply -f -
4. 修改Kustomize配置
perl -pi -e "s|newTag: latest|newTag: \"\"|g" k8s/cloud/public/kustomization.yaml
perl -pi -e "s|pixie-prod|pixie-dev|g" k8s/cloud/public/kustomization.yaml
5. 配置镜像仓库
skaffold config set default-repo <your-registry>
6. 部署开发版本
skaffold run -f skaffold/skaffold_cloud.yaml -p public
7. 配置本地DNS
bazel run //src/utils/dev_dns_updater:dev_dns_updater -- --domain-name "dev.withpixie.dev"
连接Vizier到开发环境
export PL_CLOUD_ADDR=dev.withpixie.dev:443
export PL_TESTING_ENV=dev
Vizier组件开发
Vizier是运行在集群中的数据处理器,负责查询执行和PEM管理。
开发测试流程
- 构建并运行单元测试:
bazel test //src/<path_to_test> --test_output=errors -j $(nproc)
- 部署开发版本:
skaffold run -f skaffold/skaffold_vizier.yaml --default-repo=<your-registry>
注意:需要为pl命名空间配置imagePullSecrets以使用私有镜像仓库。
CLI工具开发
开发版本的CLI可以通过Bazel直接运行:
bazel run //src/pixie_cli:px -- <command>
例如:
- 部署命令:
bazel run //src/pixie_cli:px -- deploy
- 运行查询:
bazel run //src/pixie_cli:px -- run px/cluster
开发注意事项
- 当同时开发Cloud和Vizier时,务必设置正确的环境变量指向开发环境
- 每次代码变更后需要重新运行skaffold命令以构建和部署新版本
- 开发过程中建议使用独立的Kubernetes命名空间和镜像仓库
- 测试前确保清理旧版本资源(如使用
px delete --clobber
)
通过以上步骤,开发者可以快速搭建完整的Pixie开发环境,并针对各组件进行定制开发和测试。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考