This article is going to teach you how to Install Envoy Proxy on Ubuntu 22.04. Envoy Proxy is a modern edge and service proxy with a small footprint and outstanding performance. Software load balancers like NGINX and HAProxy are most equivalent to Envoy. Envoy, which was developed and implemented at Lyft, currently has a large community of contributors and is an official Cloud Native Computing Foundation project.
How to Install Envoy Proxy on Ubuntu 22.04
- To Install Envoy Proxy on Ubuntu 22.04, start by updating and upgrading your system using the following command.
sudo apt -y update && sudo apt -y upgrade
- Next Install the dependencies for Envoy proxy server which are required for it to work properly.
sudo apt install apt-transport-https gnupg2 curl lsb-release
- Then import the GPG key used for signing APT packages.
curl -sL 'https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key' | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
- Use the echo command below to check if the key is signed, if everything went well it should respond with OK.
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
- Update the changes by running system updates once more.
sudo apt update
- After updating your system, add the key to your system using the following command.
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] https://deb.dl.getenvoy.io/public/deb/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
Install Envoy Proxy on Ubuntu 22.04
- Finally, use the command below to install Envoy Proxy on Ubuntu 22.04.
sudo apt install getenvoy-envoy -y
Sample output
Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: galera-4 libaio1 libconfig-inifiles-perl libdbd-mariadb-perl libfprint-2-tod1 libhtml-template-perl libmariadb3 libpmem1 libreadline5 libterm-readkey-perl mariadb-client-10.7 mariadb-client-core-10.7 mariadb-common mariadb-server-10.7 mariadb-server-core-10.7 mongodb-database-tools mongodb-mongosh socat Use 'sudo apt autoremove' to remove them. The following NEW packages will be installed: getenvoy-envoy 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 16.5 MB of archives. After this operation, 0 B of additional disk space will be used. Get:1 https://deb.dl.getenvoy.io/public/deb/ubuntu focal/main amd64 getenvoy-envoy amd64 1.18.2.p0.gd362e79-1p75.g76c310e [16.5 MB] Fetched 16.5 MB in 13s (1,317 kB/s) Selecting previously unselected package getenvoy-envoy . (Reading database ... 218982 files and directories cur rently installed.) Preparing to unpack .../getenvoy-envoy_1.18.2.p0.gd362 e79-1p75.g76c310e_amd64.deb ... Unpacking getenvoy-envoy (1.18.2.p0.gd362e79-1p75.g76c 310e) ... Setting up getenvoy-envoy (1.18.2.p0.gd362e79-1p75.g76 c310e) ...
- You can check the version you installed using the command below.
envoy --version
- List some of Envoy commands.
envoy --help
Sample output
USAGE: envoy [--enable-core-dump] [--socket-mode ] [--socket-path ] [--disable-extensions ] [--cpuset-threads] [--enable-mutex-tracing] [--disable-hot-restart] [--mode ] [--parent-shutdown-time-s ] [--drain-strategy ] [--drain-time-s ] [--file-flush-interval-msec ] [--service-zone ] [--service-node ] [--service-cluster ] [--hot-restart-version] [--restart-epoch ] [--log-path ] [--enable-fine-grain-logging] [--log-format-escaped] [--log-format ] [--component-log-level ] [-l ] [--local-address-ip-version ] [--admin-address-path ] [--ignore-unknown-dynamic-fields] [--reject-unknown-dynamic-fields] [--allow-unknown-static-fields] [--allow-unknown-fields] [--bootstrap-version ] [--config-yaml ] [-c ] [--concurrency ] [--base-id-path ] [--use-dynamic-base-id] [--base-id ] [--] [--version] [-h] Where: --enable-core-dump Enable core dumps --socket-mode Socket file permission --socket-path Path to hot restart socket file --disable-extensions Comma-separated list of extensions to disable --cpuset-threads Get the default # of worker threads from cpuset size --enable-mutex-tracing Enable mutex contention tracing functionality --disable-hot-restart Disable hot restart functionality --mode One of 'serve' (default; validate configs and then serve traffic normally) or 'validate' (validate configs and exit). --parent-shutdown-time-s Hot restart parent shutdown time in seconds --drain-strategy Hot restart drain sequence behaviour, one of 'gradual' (default) or 'immediate'. --drain-time-s Hot restart and LDS removal drain time in seconds --file-flush-interval-msec Interval for log flushing in msec --service-zone Zone name --service-node Node name --service-cluster Cluster name --hot-restart-version hot restart compatibility version --restart-epoch hot restart epoch # --log-path Path to logfile --enable-fine-grain-logging Logger mode: enable file level log control(Fancy Logger)or not --log-format-escaped Escape c-style escape sequences in the application logs --log-format Log message format in spdlog syntax (see https://github.com/gabime/spdlog/wiki/3.-Custom-formatting) Default is "[%Y-%m-%d %T.%e][%t][%l][%n] [%g:%#] %v" --component-log-level Comma separated list of component log levels. For example upstream:debug,config:trace -l , --log-level Log levels: [trace][debug][info][warning |warn][error][critical][off] Default is [info] --local-address-ip-version The local IP address version (v4 or v6). --admin-address-path Admin address path --ignore-unknown-dynamic-fields ignore unknown fields in dynamic configuration --reject-unknown-dynamic-fields reject unknown fields in dynamic configuration --allow-unknown-static-fields allow unknown fields in static configuration --allow-unknown-fields allow unknown fields in static configuration (DEPRECATED) --bootstrap-version API version to parse the bootstrap config as (e.g. 3). If unset, all known versions will be attempted --config-yaml Inline YAML configuration, merges with the contents of --config-path -c , --config-path Path to configuration file --concurrency # of worker threads to run --base-id-path path to which the base ID is written --use-dynamic-base-id the server chooses a base ID dynamically. Supersedes a static base ID. May not be used when the restart epoch is non-zero. --base-id base ID so that multiple envoys can run on the same host if needed --, --ignore_rest Ignores the rest of the labeled arguments following this flag. --version Displays version information and exits. -h, --help Displays usage information and exits. envoy
- You have reached the end of the article, Congratulations. You have learned how to install Envoy Proxy on Ubuntu 22.04.
Getting Started with Envoy Proxy
Check the documentation page on how to get started with Envoy proxy.
Other Tutorials
Install Squid Proxy on Ubuntu 22.04