◼ Envoy通常用於以容器編排系統為底層環境的服務網格中,並以sidecar的形式與主程序容 器運行為單個Pod。
◼ 非編排系統環境中測試時,可以將主程序與Envoy運行於同一容器,或手動組織主程序 容器與Envoy容器共享同一網絡名稱空間。
Envoy項目為多種平台(例如amd64和arm64等)維護有相應的Docker Image,我們可按需獵 取相應鏡像后以容器形式運行Envoy,而且它們存在以下幾種變化形式
◼ envoy:基於Ubuntu Bionic制作的Docker Image ◼ envoy-alpine和envoy-alpine-dev:基於alpine制作的Docker Image ◼ envoy-debug和envoy-debug-dev:基於Ubuntu制作的帶有debug環境的Docker Image ◼ envoy-windows 和envoy-windows-dev :基於Windows 1809 制作的Docker Image
Get Envoy項目為多個主流的Linux發行版(例如Ubuntu、CentOS和RHEL等)維護了二進制 的發行版,配置相應的倉庫后,即可使用系統的包管理器進行安裝;
◼ Ubuntu ◆https://dl.bintray.com/tetrate/getenvoy-deb ◼ CentOS ◆https://tetrate.bintray.com/getenvoy-rpm/centos/ ◼ RHEL ◆https://tetrate.bintray.com/getenvoy-rpm/rhel/
部署文檔(建議使用穩定版)
◼ https://www.envoyproxy.io/docs/envoy/latest/start/install
部署Envoy,以Ubuntu Linux發行版為例
$ sudo apt update $ sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common $ curl -sL 'https://getenvoy.io/gpg' | sudo apt-key add - # 檢查密鑰 $ apt-key fingerprint 6FF974DB | grep "5270 CEAC" $ sudo add-apt-repository "deb [arch=amd64] https://dl.bintray.com/tetrate/getenvoy-deb $(lsb_release -cs) stable" $ sudo apt update $ sudo apt install getenvoy-envoy
運行Envoy
◼ 檢查envoy的版本 ◆envoy --version ◼ 獲取幫助 ◆envoy --help ◼ 檢查配置文件語法 ◆envoy --mode validate -c /path/to/my-envoy-config.yaml ◼ 運行Envoy,並指定自定義的日志路徑 ◆envoy -c envoy-demo.yaml --log-path logs/custom.log ◆示例配置文件(提示:被代理的服務是Google,建議修改為其他可用地址) https://www.envoyproxy.io/docs/envoy/latest/_downloads/92dcb9714fb6bc288d042029b34c0de4/envoy-demo.yaml
啟動Envoy時,需要通過“-c”選項為其指定初始配置文件以提供引導配置(Bootstrap configuration),這也是使用v3 API的必然要求:
~]$ envoy -c <path to config>.{json,yaml,pb,pb_text} ◆擴展名代表了配置信息的組織格式; 引導配置是Envoy配置信息的基點,用於承載Envoy的初始配置,它可能 包括靜態資源和動態資源的定義 ◆靜態資源(static_resources)於啟動直接加載 ◆動態資源(dynamic_resources)則需要通過配置的xDS服務獲取並生成 通常,Listener和Cluster是Envoy得以運行的基礎,而二者的配置可以全部為靜態格式,也 可以混合 使 用動態及靜態方式提供,或者全部配置為動態; ◆例如,一個yaml格式純靜態的基礎配置框架: static_resources listeners: - name: ... address: {} filter_chains: [] clusters: - name: ... type: ... connect_timeout: {} dns_lookup_family: V4_ONLY load_assignment: {}