5 minute read
Envoy Gateway is built using a make-based build system. Our CI is based on Github Actions using workflows.
make
inside Docker.python3
programvenv
module; this is part of the standard
library, but some distributions (such as Debian and Ubuntu) replace
it with a stub and require you to install a python3-venv
package
separately.Run make help
to see all the available targets to build, test and run Envoy Gateway. Below are the other make directives
make build
to build all the binaries.make build BINS="envoy-gateway"
to build the Envoy Gateway binary.make build BINS="egctl"
to build the egctl binary.Note: The binaries get generated in the bin/$OS/$ARCH
directory, for example, bin/linux/amd64/
.
Run make test
to run the golang tests.
Run make e2e
to perform end-to-end testing.
Run make testdata
to generate the golden YAML testdata files.
make lint
to make sure your code passes all the linter checks.Note: The golangci-lint
configuration resides here.
IMAGE=docker.io/you/gateway-dev make image
to build the docker image.IMAGE=docker.io/you/gateway-dev make push-multiarch
to build and push the multi-arch docker image.Note: Replace IMAGE
with your registry’s image name.
make generate
and push the generated files along with your commit, if your PR contains any API changes (changes in /api
folder), you’ve added some unit tests or you’ve updated the modules used in the project.make create-cluster
to create a Kind cluster.TAG=latest make kube-deploy
to deploy Envoy Gateway in the Kind cluster using the latest image. Replace latest
to use a different image tag.make kube-install-image
to build an image from the tip of your current branch and load it in the Kind cluster.IMAGE_PULL_POLICY=IfNotPresent make kube-deploy
to install Envoy Gateway into the Kind cluster using your custom image.TAG=latest make kube-deploy
to deploy Envoy Gateway using the latest image into a Kubernetes cluster (linked to
the current kube context). Preface the command with IMAGE
or replace TAG
to use a different Envoy Gateway image or
tag.make kube-undeploy
to uninstall Envoy Gateway from the cluster.Note: Envoy Gateway is tested against Kubernetes v1.24.0.
make kube-demo
to deploy a demo backend service, gatewayclass, gateway and httproute resource
(similar to steps outlined in the Quickstart docs) and test the configuration.make kube-demo-undeploy
to delete the resources created by the make kube-demo
command.The commands below deploy Envoy Gateway to a Kubernetes cluster and run the Gateway API conformance tests. Refer to the
Gateway API conformance homepage to learn more about the tests. If Envoy Gateway is already installed, run
TAG=latest make run-conformance
to run the conformance tests.
TAG=latest make conformance
to create a Kind cluster, install Envoy Gateway using the latest gateway-dev
image, and run Gateway API conformance tests.Since Mac doesn’t support directly exposing the Docker network to the Mac host, use one of the following workarounds to run conformance tests:
TAG=latest make kube-deploy run-conformance
. This will install Envoy Gateway using the latest gateway-dev image
to the Kubernetes cluster using the current kubectl context and run the conformance tests. Use make kube-undeploy
to
uninstall Envoy Gateway.TAG=latest make conformance
.Note: Preface commands with IMAGE
or replace TAG
to use a different Envoy Gateway image or tag. If TAG
is unspecified, the short SHA of your current branch is used.
An example JSON Web Token (JWT) and JSON Web Key Set (JWKS) are used for the request authentication
task. The JWT was created by the JWT Debugger, using the RS256
algorithm. The public key from the JWTs
verify signature was copied to JWK Creator for generating the JWK. The JWK Creator was configured with matching
settings, i.e. Signing
public key use and the RS256
algorithm. The generated JWK was wrapped in a JWKS structure
and is hosted in the repo.
Envoy Gateway uses nighthawk for benchmarking, and mainly concerned with its performance and scalability as a control-plane.
The performance and scalability concerns come from several aspects for control-plane:
The benchmark test is running on a Kind cluster, you can start a Kind cluster and
run benchmark test on it by executing make benchmark
.
The benchmark report will be included in the release artifacts, you can learn more by downloading
the detailed benchmark report, namely benchmark_report.zip
.
Here are some brief benchmark reports about Envoy Gateway:
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.