Envoy proxy là một proxy dịch vụ miễn phí và mã nguồn mở được thiết kế cho các ứng dụng đám mây gốc. Nó tương đương với Nginx và haproxy có thể được sử dụng như một proxy ngược, nhưng Envoy proxy được thiết kế cho các dịch vụ và cơ sở hạ tầng hiện đại.
Envoy là một proxy dịch vụ hiệu suất cao hoạt động với bất kỳ ngôn ngữ ứng dụng nào. Nó sử dụng các tệp cấu hình YAML để cấu hình tĩnh và cũng sử dụng một bộ API dựa trên gRPC.
Envoy proxy tốt nghiệp từ Cloud Native Computing Foundation (CNCF). Nó được sử dụng trong hầu hết các cơ sở hạ tầng hiện đại và công nghệ container.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình proxy Envoy trên máy chủ Debian 11.
Trước khi thêm và cài đặt Envoy, bạn phải cài đặt gói sau. gnupg2 sẽ được sử dụng để thêm khóa GPG vào máy chủ Debian của bạn và apt-transport-https cho phép bạn cài đặt các gói từ kết nối https an toàn.
Tiếp theo, thêm và xác minh khóa GPG Envoy bằng lệnh sau.
Nếu khóa hợp lệ, bạn sẽ thấy thông báo đầu ra như OK.
Bây giờ hãy thêm kho lưu trữ Envoy vào hệ thống của bạn bằng lệnh bên dưới.
Cuối cùng, hãy cập nhật và làm mới kho lưu trữ Debian của bạn.
Trong ảnh chụp màn hình bên dưới, bạn sẽ thấy kho lưu trữ Envoy được thêm vào hệ thống Debian.
Chạy lệnh apt bên dưới để cài đặt gói Envoy vào hệ thống Debian 11 của bạn.
Dưới đây, bạn có thể thấy quá trình cài đặt Envoy đang diễn ra.
Sau khi quá trình cài đặt Envoy hoàn tất, hãy xác minh phiên bản Envoy bằng lệnh sau.
Dưới đây, bạn có thể thấy Envoy v1.18 được cài đặt trên Debian 11. Đây là phiên bản mới nhất của proxy Envoy do kho lưu trữ Envoy cung cấp. Nếu bạn muốn có phiên bản mới nhất, bạn có thể sử dụng tệp nhị phân dựng sẵn từ trang web Envoy.
Ngoài ra, bạn cũng có thể kiểm tra tất cả các tùy chọn có sẵn trên lệnh envoy bằng lệnh sau.
Bạn sẽ thấy rất nhiều tùy chọn có thể sử dụng để thiết lập Envoy.
Đầu tiên, tạo một thư mục mới /etc/envoy/ bằng lệnh sau.
Bây giờ hãy tạo một tệp mới /etc/envoy/demo.yaml bằng trình soạn thảo nano.
Thêm cấu hình sau vào tệp. Trong ví dụ này, bạn sẽ sử dụng cấu hình static_resources cho Envoy, cấu hình này phải bao gồm listeners, clusters và static_resources.
Các listeners xác định địa chỉ IP và cổng nào sẽ được sử dụng cho Envoy. Trong ví dụ này, Envoy sẽ chạy trên địa chỉ IP công khai 0.0.0.0 với cổng 80.
Cụm service_envoyproxy_io ở đây sẽ được sử dụng làm điểm cuối của dịch vụ, đó là tên miền www.envoyproxy.io.
Lưu và đóng tệp khi bạn hoàn tất.
Tiếp theo, chạy lệnh dispatch bên dưới để xác minh tệp cấu hình demo.yaml.
Nếu cấu hình YAML của bạn chính xác, bạn sẽ thấy đầu ra như "configuration /etc/envoy/demo.yaml OK".
Bây giờ hãy chạy Envoy với tệp cấu hình demo.yml bằng lệnh sau.
Bạn sẽ thấy đầu ra nhật ký bên dưới. Ngoài ra, hãy đảm bảo bạn không nhận được thông báo lỗi.
Bây giờ hãy di chuyển đến máy cục bộ của bạn và chỉnh sửa tệp cấu hình /etc/hosts bằng trình soạn thảo nano.
Thêm tên miền www.envoyproxy.io với địa chỉ IP máy chủ của bạn như bên dưới.
Lưu và đóng tệp khi bạn hoàn tất.
Cuối cùng, hãy mở trình duyệt web của bạn và truy cập tên miền www.envoyproxy.io và bạn sẽ nhận được trang chủ của tên miền www.envoyproxy.io.
Envoy là một proxy dịch vụ hiệu suất cao hoạt động với bất kỳ ngôn ngữ ứng dụng nào. Nó sử dụng các tệp cấu hình YAML để cấu hình tĩnh và cũng sử dụng một bộ API dựa trên gRPC.
Envoy proxy tốt nghiệp từ Cloud Native Computing Foundation (CNCF). Nó được sử dụng trong hầu hết các cơ sở hạ tầng hiện đại và công nghệ container.
Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách cài đặt và cấu hình proxy Envoy trên máy chủ Debian 11.
Điều kiện tiên quyết
Để cài đặt Envoy, chúng tôi sẽ sử dụng những điều sau:- Máy chủ Linux Debian 11 Bullseye
- Người dùng không phải root có quyền sudo
Thêm kho lưu trữ Envoy
Envoy có thể được cài đặt theo nhiều cách, bao gồm cả với các gói nhị phân do kho lưu trữ Envoy hoặc sử dụng Docker. Trong ví dụ này, chúng tôi sẽ cài đặt Envoy bằng gói nhị phân từ kho lưu trữ Envoy.Trước khi thêm và cài đặt Envoy, bạn phải cài đặt gói sau. gnupg2 sẽ được sử dụng để thêm khóa GPG vào máy chủ Debian của bạn và apt-transport-https cho phép bạn cài đặt các gói từ kết nối https an toàn.
Mã:
sudo apt install gnupg2 apt-transport-https -y
Mã:
curl -sL 'https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key' | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
Bây giờ hãy thêm kho lưu trữ Envoy vào hệ thống của bạn bằng lệnh bên dưới.
Mã:
echo "deb [arch=amd64 \
signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] \
https://deb.dl.getenvoy.io/public/deb/debian \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
Mã:
sudo apt update
Cài đặt Envoy Proxy
Bây giờ bạn đã thêm khóa GPG và kho lưu trữ Envoy, bây giờ bạn sẽ cài đặt gói Envoy vào hệ thống của mình.Chạy lệnh apt bên dưới để cài đặt gói Envoy vào hệ thống Debian 11 của bạn.
Mã:
sudo apt install getenvoy-envoy
Sau khi quá trình cài đặt Envoy hoàn tất, hãy xác minh phiên bản Envoy bằng lệnh sau.
Mã:
envoy --version
Ngoài ra, bạn cũng có thể kiểm tra tất cả các tùy chọn có sẵn trên lệnh envoy bằng lệnh sau.
Mã:
envoy --help
Cấu hình Proxy Envoy
Sau khi cài đặt Envoy, giờ bạn sẽ học cách thiết lập Envoy.Đầu tiên, tạo một thư mục mới /etc/envoy/ bằng lệnh sau.
Mã:
mkdir -p /etc/envoy/
Mã:
sudo nano /etc/envoy/demo.yaml
Các listeners xác định địa chỉ IP và cổng nào sẽ được sử dụng cho Envoy. Trong ví dụ này, Envoy sẽ chạy trên địa chỉ IP công khai 0.0.0.0 với cổng 80.
Cụm service_envoyproxy_io ở đây sẽ được sử dụng làm điểm cuối của dịch vụ, đó là tên miền www.envoyproxy.io.
Mã:
static_resources:
listeners:
- name: listener_0
address:
socket_address:
address: 0.0.0.0
port_value: 80
filter_chains:
- filters:
- name: dispatch.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
access_log:
- name: dispatch.access_loggers.stdout
typed_config:
"@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
http_filters:
- name: envoy.filters.http.router
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
host_rewrite_literal: www.envoyproxy.io
cluster: service_envoyproxy_io
clusters:
- name: service_envoyproxy_io
type: LOGICAL_DNS
connect_timeout: 5s
# Bình luận dòng sau để kiểm tra trên mạng v6
dns_lookup_family: V4_ONLY
load_assignment:
cluster_name: service_envoyproxy_io
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: www.envoyproxy.io
port_value: 443
transport_socket:
name: dispatch.transport_sockets.tls
typed_config:
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
sni: www.envoyproxy.io
Tiếp theo, chạy lệnh dispatch bên dưới để xác minh tệp cấu hình demo.yaml.
Mã:
envoy --mode validate -c /etc/envoy/demo.yaml
Bây giờ hãy chạy Envoy với tệp cấu hình demo.yml bằng lệnh sau.
Mã:
envoy -c /etc/envoy/demo.yaml
Bây giờ hãy di chuyển đến máy cục bộ của bạn và chỉnh sửa tệp cấu hình /etc/hosts bằng trình soạn thảo nano.
Mã:
sudo nano /etc/hosts
Mã:
192.168.5.10 www.envoyproxy.io
Cuối cùng, hãy mở trình duyệt web của bạn và truy cập tên miền www.envoyproxy.io và bạn sẽ nhận được trang chủ của tên miền www.envoyproxy.io.