Contour项目本地开发与测试环境搭建指南

Contour项目本地开发与测试环境搭建指南

contour Contour is a Kubernetes ingress controller using Envoy proxy. contour 项目地址: https://gitcode.com/gh_mirrors/conto/contour

前言

Contour是一个高性能的Kubernetes Ingress控制器,使用Envoy作为数据平面。本文将详细介绍如何在本地环境中搭建Contour的开发测试环境,帮助开发者快速上手项目开发。

环境准备

基础工具安装

在开始Contour开发前,需要准备以下基础工具:

  1. Docker:用于构建和运行容器化环境

    • Mac用户可安装Docker Desktop
    • Linux用户可通过系统包管理器安装
  2. 开发工具链

    • Git:版本控制工具
    • Make:构建工具
    • GCC:用于Go的竞态检测
    • kind:本地Kubernetes集群工具
    • kubectl:Kubernetes命令行工具
    • jq/yq:JSON/YAML处理工具
  3. Go语言环境

    • 需要安装与Contour当前版本兼容的Go版本
    • 可通过查看项目Makefile中的BUILD_BASE_IMAGE变量确认具体版本要求

MacOS特有配置

Mac用户需要额外配置网络连接:

  • 安装Docker Mac Net Connect工具
  • 该工具会在主机和Docker Desktop Linux VM之间建立隧道
  • 解决MetalLB IP无法直接访问的问题

源码获取与构建

获取源代码

  1. 创建项目fork
  2. 克隆代码到本地:
    git clone git@<代码托管平台>:YOUR-USERNAME/contour.git
    

基础构建命令

  • 编译Contour二进制文件:

    go build ./cmd/contour
    
  • 运行单元测试:

    go test ./...
    
  • 运行单个包测试:

    cd internal/<package>
    go test .
    

本地开发环境搭建

使用kind集群

kind是运行本地Kubernetes集群的理想工具:

  1. 创建kind集群:

    kind create cluster --config=./examples/kind/kind-expose-port.yaml --name=contour
    
  2. 部署Contour基础组件:

    kubectl apply -f examples/contour
    

开发工作流

推荐以下高效开发流程:

  1. 在kind集群中运行Envoy

  2. 本地运行Contour控制平面

  3. 修改代码后重新构建运行:

    make install && contour serve --kubeconfig=$HOME/.kube/config --xds-address=0.0.0.0 --insecure
    
  4. 测试时使用local.projectcontour.io域名,该域名已配置指向127.0.0.1

测试策略

Contour项目采用多层次的测试体系:

单元测试(Unit Test)

  • 针对特定函数或包的测试
  • 部分测试会跨多个包

功能测试(Feature Test)

  • 位于internal/featuretests
  • 测试Kubernetes配置到Envoy配置的转换
  • 使用Contour事件处理器和xDS服务器

端到端测试(E2E Test)

  • 位于test/e2e
  • 完整测试Contour在集群中的行为
  • 验证HTTP请求在各种配置下的表现

代码规范与提交

代码风格

  • 使用gofumpt进行严格的Go代码格式化
  • 运行make format可自动格式化代码

提交信息规范

  • 使用命令式语气编写提交信息
  • 格式示例:
    internal/contour: 添加quux功能
    
    为实现#xxyyz中的quux功能,需要
    先处理greep点,再确保处理结果正确
    
    Fixes #xxyyz
    
    Signed-off-by: 姓名 <邮箱>
    

导入别名规范

  • 使用thing_version模式命名导入
  • 示例:
    contour_v1 "projectcontour/contour/apis/projectcontour/v1"
    envoy_v3 "projectcontour/contour/internal/envoy/v3"
    

构建与验证

镜像构建

  • 使用Dockerfile构建镜像:

    docker build -t <仓库>/contour:latest .
    docker push <仓库>/contour:latest
    
  • 或使用Makefile辅助:

    REGISTRY=<仓库> VERSION=latest make push
    

变更验证

  1. 修改部署清单指向新构建的镜像
  2. 部署到测试集群验证功能

结语

本文详细介绍了Contour项目的本地开发环境搭建、测试策略和代码规范。通过kind集群和本地开发模式的结合,开发者可以高效地进行功能开发和测试验证。遵循项目的代码规范和测试要求,可以确保贡献的代码质量符合项目标准。

contour Contour is a Kubernetes ingress controller using Envoy proxy. contour 项目地址: https://gitcode.com/gh_mirrors/conto/contour

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨元诚Seymour

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值