开发者指南
2 minute read
Envoy Gateway 使用基于 make 的构建系统构建。我们的 CI 基于 Github Actions,使用 workflows。
前置条件
go
- 版本:1.22
- 安装指南:https://go.dev/doc/install
make
- 推荐版本:4.0 or later
- 安装指南:https://www.gnu.org/software/make
docker
- 如果您想构建一个 Docker 镜像或者在 Docker 内部运行
make
- 推荐版本:20.10.16
- 安装指南:https://docs.docker.com/engine/install
python3
- 需要
python3
程序 - 一个可正常执行的
venv
module 是必要的;这是标准的一部分, 但某些发行版(例如 Debian 和 Ubuntu)使用 stub 来替代它,并要求您单独安装python3-venv
包。
快速开始
- 运行
make help
来查看所有可构建,可测试,可运行的的目标,并运行 Envoy Gateway。
构建
- 运行
make build
来构建所有的二进制文件。 - 运行
make build BINS="envoy-gateway"
来构建 Envoy Gateway 库。 - 运行
make build BINS="egctl"
来构建 egctl 库。
注意: 上述二进制文件会在 bin/$OS/$ARCH
目录下生成,例如, bin/linux/amd64/
。
测试
运行
make test
来运行 golang 测试。运行
make testdata
来生成 golden YAML 测试数据文件。
运行代码检查器(Linters)
- 运行
make lint
来确保您的代码可以通过所有的代码检查工具检查。 注意:golangci-lint
在这里。
构建和推送镜像
- 运行
IMAGE=docker.io/you/gateway-dev make image
来构建 Docker 镜像。 - 运行
IMAGE=docker.io/you/gateway-dev make push-multiarch
来构建和推送支持多架构的 Docker 镜像。
注意: 使用您注册的镜像名称来替代 IMAGE
。
为测试或开发部署 Envoy Gateway
- 运行
make create-cluster
来创建一个 Kind 集群。
可选 1:使用最新的 gateway-dev 镜像
- 运行
TAG=latest make kube-deploy
来使用最新的镜像在 Kind 集群中部署 Envoy Gateway。 替换latest
来使用不同的镜像标签。
可选 2:使用定制的镜像
- 运行
make kube-install-image
来从当前分支来构建一个镜像,然后将镜像载入 Kind 集群中。 - 运行
IMAGE_PULL_POLICY=IfNotPresent make kube-deploy
来使用定制化镜像将 Envoy Gateway 安装到 Kind 集群中。
在 Kubernetes 中部署 Envoy Gateway
- 运行
TAG=latest make kube-deploy
使用最新镜像将 Envoy Gateway 部署到 Kubernetes 集群中(当前 kube 上下文指向的集群)。 在命令前面加上IMAGE
或替换TAG
以使用不同的 Envoy Gateway 镜像或标签。 - 运行
make kube-undeploy
在集群中卸载 Envoy Gateway。
注意: Envoy Gateway 针对 Kubernetes v1.24.0 进行了测试。
创建示例
- 运行
make kube-demo
来部署一个示例后端服务, GatewayClass,Gateway 和 HTTPRoute 资源(类似于快速开始文档中概述的步骤)并且测试配置。 - 运行
make kube-demo-undeploy
来删除由make kube-demo
命令创建的资源。
运行 Gateway API 一致性测试
以下命令将 Envoy Gateway 部署到 Kubernetes 集群并运行 Gateway API 一致性测试。
请参阅 Gateway API 一致性主页了解有关测试的更多信息。如果 Envoy Gateway 已安装,
请运行 TAG=latest make run-conformance
运行一致性测试。
在 Linux 主机中
- 运行
TAG=latest make conformance
来创建一个 Kind 集群, 使用最新的 gateway-dev 镜像安装 Envoy Gateway, 然后运行 Gateway API 一致性测试。
在 Mac 主机中
由于 Mac 不支持将 Docker 网络直接暴露到 Mac 主机,因此请使用以下方法之一来运行一致性测试:
- 在 Kubernetes 支持下部署 Kubernetes 集群或使用 Docker Desktop 然后运行
TAG=latest make kube-deploy run-conformance
。 这将使用最新的 gateway-dev 镜像安装 Envoy Gateway 到当前 kubectl 上下文连接到的 Kubernetes 集群中,并运行一致性测试。 使用make kube-undeploy
来卸载 Envoy Gateway。 - 安装并执行 Docker Mac Net Connect 然后运行
TAG=latest make conformance
。
注意: 在命令前加上 IMAGE
或替换 TAG
以使用不同的 Envoy Gateway 镜像或标签。
如果未指定 TAG
,则会默认使用当前分支的短 SHA。
调试 Envoy 配置
查看 Envoy Gateway 正在使用的 Envoy 配置的一种简单方法是将 Envoy 的管理端口(当前为 19000
)转发到一个本地端口上,这样就可以直接在本地进行访问。
获取 Envoy 部署的名称。下面是 Gateway eg
在 default
命名空间中的例子:
export ENVOY_DEPLOYMENT=$(kubectl get deploy -n envoy-gateway-system --selector=gateway.envoyproxy.io/owning-gateway-namespace=default,gateway.envoyproxy.io/owning-gateway-name=eg -o jsonpath='{.items[0].metadata.name}')
对其管理端口进行端口转发:
kubectl port-forward deploy/${ENVOY_DEPLOYMENT} -n envoy-gateway-system 19000:19000
现在您可以访问 127.0.0.1:19000/config_dump
来查看 Envoy 正在使用的配置。
Envoy 管理接口上还有许多其他端点,这些端点在调试时可能会有所帮助。
JWT 测试
示例 JSON Web Token(JWT) 和 JSON Web Key Set(JWKS) 用于请求认证任务。
JWT 由 JWT 调试器使用 RS256
算法创建。来自 JWT 的公钥验证签名已复制到 JWK Creator 以生成 JWK。
JWK Creator 配置了匹配的设置,即 Signing
公钥使用和 RS256
算法。
生成的 JWK 包装在 JWKS 结构中并被托管在仓库中。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.