рдЕрднрд┐рд╡рд╛рджрди! рдпреЛ рдПрдЙрдЯрд╛ рдЫреЛрдЯреЛ рд▓реЗрдЦ рд╣реЛ рдЬрд╕рд▓реЗ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рдиреНрдЫ: "рд░рд╛рдЬрджреВрдд рдХреЗ рд╣реЛ?", "рдпреЛ рдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЫ?" рд░ "рдХрд╣рд╛рдБ рд╕реБрд░реБ рдЧрд░реНрдиреЗ?"ред
рдпреЛ рдХреЗ рд╣реЛ
Envoy C++ рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ L4-L7 рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рд╣реЛ, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рд░ рдЙрдкрд▓рдмреНрдзрддрд╛рдорд╛ рдХреЗрдиреНрджреНрд░рд┐рддред рдПрдХрд╛рддрд┐рд░, рдпреЛ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ nginx рд░ haproxy рдХреЛ рдПрдХ рдПрдирд╛рд▓рдЧ рд╣реЛ, рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдкреНрд░рджрд░реНрд╢рдирдорд╛ рддреБрд▓рдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЕрд░реНрдХреЛрддрд░реНрдл, рдпреЛ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрднрд┐рд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рддрд░реНрдл рдмрдвреА рдЙрдиреНрдореБрдЦ рдЫ рд░ рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬрд╛рднрд╛ рд░ рдЧреЛ рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рд╣рд░реВ рднрдиреНрджрд╛ рдЦрд░рд╛рдм рдЫреИрди, рдЬрд╕реНрддреИ рдЬреБрдЙрд▓ рд╡рд╛ рдЯреНрд░рд╛рдлрд┐рдХред
haproxy/nginx/envoy рдХреЛ рддреБрд▓рдирд╛ рддрд╛рд▓рд┐рдХрд╛, рдпрд╕рд▓реЗ рдкреВрд░реНрдг рд╕рддреНрдп рднрдПрдХреЛ рджрд╛рдмреА рдЧрд░реНрджреИрди, рддрд░ рд╕рд╛рдорд╛рдиреНрдп рдЪрд┐рддреНрд░ рджрд┐рдиреНрдЫред
nginx
haproxy
рдкрдард╛рдЗрдпреЛ
рдЯреНрд░рд╛рдлрд┐рдХ
github рдорд╛ рддрд╛рд░рд╛рд╣рд░реВ
11.2k/рдорд┐рд░рд░
1.1k/рдорд┐рд░рд░
12.4k
27.6k
рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ
C
C
рд╕реА ++
go
рдПрдкреАрдЖрдИ
рдХреБрдиреИ
рд╕рдХреЗрдЯ рдорд╛рддреНрд░ / рдзрдХреНрдХрд╛
рдбрд╛рдЯрд╛рдкреНрд▓реЗрди/рдкреБрд▓
рдЦреАрдВрдЪреЛ
рд╕рдХреНрд░рд┐рдп рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ
рдХреБрдиреИ
рд╣реЛ
рд╣реЛ
рд╣реЛ
рдЦреБрд▓рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ
рдмрд╛рд╣реНрдп рдкреНрд▓рдЧрдЗрди
рдХреБрдиреИ
рд╣реЛ
рд╣реЛ
J.W.T.
рдмрд╛рд╣реНрдп рдкреНрд▓рдЧрдЗрди
рдХреБрдиреИ
рд╣реЛ
рдХреБрдиреИ
рд╡рд┐рд╕реНрддрд╛рд░
рд▓реБрдЖ/рд╕реА
рд▓реБрдЖ/рд╕реА
рд▓реБрдЖ/рд╕реА++
рдХреБрдиреИ
рдХрд┐рди
рдпреЛ рдПрдХ рдпреБрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛ, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЪреАрдЬрд╣рд░реВ рд╣рд░рд╛рдЗрд░рд╣реЗрдХрд╛ рдЫрдиреН, рдХреЗрд╣реА рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЕрд▓реНрдлрд╛рдорд╛ред рддрд░ рдкрдард╛рдЗрдпреЛ, рдпрд╕рдХреЛ рдпреБрд╡рд╛рд╡рд╕реНрдерд╛рдХреЛ рдХрд╛рд░рдг рдкрдирд┐, рджреНрд░реБрдд рд░реВрдкрдорд╛ рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рд░ рдкрд╣рд┐рд▓реЗ рдиреИ рдзреЗрд░реИ рд░реЛрдЪрдХ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН: рдЧрддрд┐рд╢реАрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди, рдзреЗрд░реИ рддрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ, рддрдкрд╛рдИрдВрдХреЛ рдЖрдлреНрдиреИ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕рд░рд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕ред
рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдпрд╕рдмрд╛рдЯ рдкрдЫреНрдпрд╛рдЙрдБрдЫрдиреН, рддрд░ рдкрд╣рд┐рд▓реЗ рддреНрдпрд╣рд╛рдБ 2 рдПрдиреНрдЯрд┐рдкреНрдпрд╛рдЯрд░реНрдирд╣рд░реВ рдЫрдиреН:
- рд╕реНрдерд┐рд░ рд░рд┐рдХреЛрдЗрд▓ред
рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рдпрддрд┐рдмреЗрд▓рд╛ рдорд╛ рдкрдард╛рдЗрдпреЛ рдХреБрдиреИ рдХреНрдпрд╛рд╕рд┐рдЩ рд╕рдорд░реНрдерди рдЫреИрдиред рдЧреБрдЧрд▓ рдХреЗрдЯрд╛рд╣рд░реВ рдпреЛ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИрдЫрдиреН
рдЕрд╣рд┐рд▓реЗрдХреЛ рд▓рд╛рдЧрд┐, рд╕реНрдЯреНрдпрд╛рдЯрд┐рдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ nginx рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
- рд╕реНрдерд┐рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдиред
рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддрд░ рдкрдард╛рдЗрдпреЛ рддреНрдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╣реЛрдЗрди ред рд╕реНрдерд┐рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рд░рд╣реЗрдХрд╛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЦреБрд▓рд╛рд╕рд╛ рд╣реБрдиреЗ рдЫреИрдирдиреНред рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдХреНрд╖рдгрд╣рд░реВ рдЫрдиреН:
yaml рдорд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдореНрдкрд╛рджрди рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВ рдЧрд▓реНрддреА рд╣реБрдиреБрд╣реБрдиреЗрдЫ, рд╢рдмреНрджрд╛рд╡рд▓реАрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рд╣рдкреНрдХрд╛рдЙрдиреБрд╣реБрдиреНрдЫ рд░ рд╕реЛрдЪреНрдиреБрд╣реЛрд╕реН рдХрд┐ nginx/haproxy рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВ, рдХрдо рд╕рдВрд░рдЪрд┐рдд рднрдП рдкрдирд┐, рдердк рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЫрдиреНред рдХреБрд░реЛ рдпрд╣реА рд╣реЛред Nginx рд░ Haproxy рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╣рд╛рддрд▓реЗ рд╕рдореНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд░ рдкрдард╛рдЗрдпреЛ рдХреЛрдбрдмрд╛рдЯ рдЙрддреНрдкрд╛рджрдирдХреЛ рд▓рд╛рдЧрд┐ред рд╕рдореНрдкреВрд░реНрдг рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ
рдХреНрдпрд╛рдирд░реА, b/g рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рд░ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рдХреЗрд╡рд▓ рдЧрддрд┐рд╢реАрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреНрдЫред рдореИрд▓реЗ рднрдиреЗрдХреЛ рдЫреИрди рдХрд┐ рдпреЛ рд╕реНрдерд┐рд░ рд░реВрдкрдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрди, рд╣рд╛рдореА рд╕рдмреИрд▓реЗ рдЧрд░реНрдЫреМрдВред рддрд░ рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░рдорд╛, рдмреИрд╕рд╛рдЦреА рд▓рдЧрд╛рдЙрдиреБ рдкрд░реНрдЫ рдкрдард╛рдЗрдпреЛ рд╕рд╣рд┐рдд
рд░рд╛рдЬрджреВрдд рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рдХрд╛рд░реНрдпрд╣рд░реВ:
- рдЬрдЯрд┐рд▓ рд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рд╕рдиреНрддреБрд▓рдиред рдпрд╕рдорд╛ рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫ, рддрд░ рдпреЛ рдПрдХ рдорд╛рддреНрд░ рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред
- рд╡рд┐рддрд░рд┐рдд рдЯреНрд░реЗрд╕рд┐рдЩ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛, рдЬрдЯрд┐рд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд╛ рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд╛ рдЙрдкрд▓рдмреНрдз рдЫ рдкрдард╛рдЗрдпреЛ рдмрд╛рдХрд╕ рдмрд╛рд╣рд┐рд░ рд╡рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ, рддрд░ nginx/haproxy рдорд╛ рддрдкрд╛рдИрдВ рд▓реБрдЖ рд░ рд╢рдВрдХрд╛рд╕реНрдкрдж рдкреНрд▓рдЧрдЗрдирд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдШреЗрд░рд┐рдПрдХреЛ рд╣реБрдиреБрдкрд░реНрдЫред
рджреБрд╡реИ, рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛, рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
рдпреЛ рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ
рджреВрддрд▓рд╛рдИ рдмрд╛рдЗрдирд░реАрд╣рд░реВрдорд╛ рдбрдХрд░ рдЫрд╡рд┐рдХреЛ рд░реВрдкрдорд╛ рдорд╛рддреНрд░ рд╡рд┐рддрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред рдЫрд╡рд┐рдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдерд┐рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рдЙрджрд╛рд╣рд░рдг рд╕рдорд╛рд╡реЗрд╢ рдЫред рддрд░, рд╣рд╛рдореА рд╕рдВрд░рдЪрдирд╛ рдмреБрдЭреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдпрд╕рдорд╛ рдЪрд╛рд╕реЛ рд░рд╛рдЦреНрдЫреМрдВред
envoy.yaml рд╕реНрдерд┐рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди
static_resources:
listeners:
- name: listener_0
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 10000
filter_chains:
- filters:
- name: envoy.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match:
prefix: "/"
route:
host_rewrite: www.google.com
cluster: service_google
http_filters:
- name: envoy.router
clusters:
- name: service_google
connect_timeout: 0.25s
type: LOGICAL_DNS
# Comment out the following line to test on v6 networks
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: service_google
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: www.google.com
port_value: 443
transport_socket:
name: envoy.transport_sockets.tls
typed_config:
"@type": type.googleapis.com/envoy.api.v2.auth.UpstreamTlsContext
sni: www.google.com
рдЧрддрд┐рд╢реАрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди
рд╣рд╛рдореА рдХреБрди рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ? рддрдкрд╛рдИрд▓реЗ рд▓реЛрдб рдЕрдиреНрддрд░реНрдЧрдд рд▓реЛрдб рдмреНрдпрд╛рд▓реЗрдиреНрд╕рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдорд╛рддреНрд░ рдкреБрди: рд▓реЛрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди; "рд╕рд╛рдирд╛" рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЙрддреНрдкрдиреНрди рд╣реБрдиреЗрдЫрдиреН:
- рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рдорд╛рдгреАрдХрд░рдгред
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдареВрд▓реЛ рд╣реБрди рд╕рдХреНрдЫ, рдпреЛ рдзреЗрд░реИ рдареВрд▓реЛ рд╣реБрди рд╕рдХреНрдЫ, рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдПрдХреИ рдкрдЯрдХ рдУрднрд░рд▓реЛрдб рдЧрд░реНрдпреМрдВ рднрдиреЗ, рддреНрд░реБрдЯрд┐рдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛ рдХрддреИ рдмрдвреНрдЫред
- рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдЬрдбрд╛рдирд╣рд░реВред
рдирдпрд╛рдБ рд╢реНрд░реЛрддрд╛ рд╕реБрд░реБ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рдкреБрд░рд╛рдиреЛрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рдЦреНрдпрд╛рд▓ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ; рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рдмрд╛рд░рдореНрдмрд╛рд░ рд╣реБрдиреНрдЫрдиреН рд░ рддреНрдпрд╣рд╛рдБ рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо рдЬрдбрд╛рдирд╣рд░реВ рдЫрдиреН рднрдиреЗ, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдореНрдЭреМрддрд╛рдХреЛ рдЦреЛрдЬреА рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рдирдорд╕реНрддреЗ, kubernetes nginx рдорд╛ рдкреНрд░рд╡реЗрд╢ рдЧрд░реНрджрдЫред
- рд╕рдХреНрд░рд┐рдп рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪред
рдпрджрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рд╕рдХреНрд░рд┐рдп рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪрд╣рд░реВ рдЫрдиреН рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ рдЯреНрд░рд╛рдлрд┐рдХ рдкрдард╛рдЙрдиреБ рдЕрдШрд┐ рддреА рд╕рдмреИрд▓рд╛рдИ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдбрдмрд▓-рдЬрд╛рдБрдЪ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЕрдкрд╕реНрдЯреНрд░рд┐рдорд╣рд░реВ рдЫрдиреН рднрдиреЗ, рдпрд╕рд▓реЗ рд╕рдордп рд▓рд┐рдиреНрдЫред рдирдорд╕реНрддреЗ haproxyред
рдпреЛ рдорд╛ рдХрд╕рд░реА рд╕рдорд╛рдзрд╛рди рд╣реБрдиреНрдЫ рдкрдард╛рдЗрдпреЛрдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рд▓реЛрдб рдЧрд░реЗрд░, рдкреВрд▓ рдореЛрдбреЗрд▓ рдЕрдиреБрд╕рд╛рд░, рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рдЧрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдкрд░рд┐рд╡рд░реНрддрди рдирднрдПрдХреЛ рднрд╛рдЧрд▓рд╛рдИ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдПрдХ рд╢реНрд░реЛрддрд╛, рдЬреБрди рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рдорд╣рдБрдЧреЛ рдЫ рд░ рд╡рд┐рд░рд▓реИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫред
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкрдард╛рдЗрдпреЛ (рдорд╛рдерд┐рдХреЛ рдлрд╛рдЗрд▓рдмрд╛рдЯ) рдирд┐рдореНрди рдирд┐рдХрд╛рдпрд╣рд░реВ рдЫрдиреН:
- рд╢реНрд░реЛрддрд╛ - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдИрдкреА / рдкреЛрд░реНрдЯрдорд╛ рдЭреБрдгреНрдбрд┐рдПрдХреЛ рд╢реНрд░реЛрддрд╛
- рднрд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ - рдбреЛрдореЗрди рдирд╛рдо рджреНрд╡рд╛рд░рд╛ рднрд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ
- рдорд╛рд░реНрдЧ - рд╕рдиреНрддреБрд▓рди рдирд┐рдпрдо
- рдХреНрд▓рд╕реНрдЯрд░ - рд╕рдиреНрддреБрд▓рди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд╕рд╛рде рдЕрдкрд╕реНрдЯреНрд░реАрдорд╣рд░реВрдХреЛ рд╕рдореВрд╣
- рдЕрдиреНрддрдмрд┐рдиреНрджреБ - рдЕрдкрд╕реНрдЯреНрд░реАрдо рдЙрджрд╛рд╣рд░рдг рдареЗрдЧрд╛рдирд╛
рдпреА рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдерд╛рд╣рд░реВ рд░ рдХреЗрд╣реА рдЕрдиреНрдпрд╣рд░реВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдкрдорд╛ рднрд░реНрди рд╕рдХрд┐рдиреНрдЫ; рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐, рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рд╕реЗрд╡рд╛рдХреЛ рдареЗрдЧрд╛рдирд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрджрдЫ рдЬрд╣рд╛рдБрдмрд╛рдЯ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рд╛рдкреНрдд рд╣реБрдиреЗрдЫред рд╕реЗрд╡рд╛ REST рд╡рд╛ gRPC рд╣реБрди рд╕рдХреНрдЫ, gRPC рд░рд╛рдореНрд░реЛ рдЫред
рд╕реЗрд╡рд╛рд╣рд░реВрд▓рд╛рдИ рдХреНрд░рдорд╢рдГ рдирд╛рдо рджрд┐рдЗрдПрдХреЛ рдЫ: LDS, VHDS, RDS, CDS рд░ EDSред рддрдкрд╛рдИрдВ рд╕реНрдерд┐рд░ рд░ рдЧрддрд┐рд╢реАрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдВрдпреЛрдЬрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд╕реНрд░реЛрдд рд╕реНрдерд┐рд░ рдПрдХрдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред
рдзреЗрд░реИ рдЬрд╕реЛ рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдЕрдиреНрддрд┐рдо рддреАрди рд╕реЗрд╡рд╛рд╣рд░реВ рд▓рд╛рдЧреВ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдПрдбреАрдПрд╕ (рдПрдХрддреНрд░рд┐рдд рдЦреЛрдЬ рд╕реЗрд╡рд╛) рднрдирд┐рдиреНрдЫред
рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рдирд┐рдореНрди рдлрд╛рд░рдо рд▓рд┐рдиреНрдЫ:
envoy.yaml рдЧрддрд┐рд╢реАрд▓ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди
dynamic_resources:
ads_config:
api_type: GRPC
grpc_services:
envoy_grpc:
cluster_name: xds_clr
cds_config:
ads: {}
static_resources:
listeners:
- name: listener_0
address:
socket_address:
protocol: TCP
address: 0.0.0.0
port_value: 10000
filter_chains:
- filters:
- name: envoy.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager
stat_prefix: ingress_http
rds:
route_config_name: local_route
config_source:
ads: {}
http_filters:
- name: envoy.router
clusters:
- name: xds_clr
connect_timeout: 0.25s
type: LOGICAL_DNS
dns_lookup_family: V4_ONLY
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: xds_clr
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: xds
port_value: 6565
рд╕реБрд░реБрдорд╛ рдкрдард╛рдЗрдпреЛ рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рд╕рд╛рде, рдпреЛ рдХрдиреНрдЯреНрд░реЛрд▓-рдкреНрд▓реЗрдирдорд╛ рдЬрдбрд╛рди рд╣реБрдиреЗрдЫ рд░ RDS, CDS рд░ EDS рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗрдЫред рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╕рд░реА рд╣реБрдиреНрдЫ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рдЫ
рдЫреЛрдЯрдХрд░реАрдорд╛, рдкрдард╛рдЗрдпреЛ рдЕрдиреБрд░реЛрдз рдЧрд░рд┐рдПрдХреЛ рд╕реНрд░реЛрддрдХреЛ рдкреНрд░рдХрд╛рд░, рдиреЛрдбрдХреЛ рд╕рдВрд╕реНрдХрд░рдг рд░ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╕рдЩреНрдХреЗрдд рдЧрд░реНрдиреЗ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдБрдЫред рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛, рдпрд╕рд▓реЗ рд╕реНрд░реЛрдд рд░ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ; рдпрджрд┐ рдирд┐рдпрдиреНрддреНрд░рдг-рд╡рд┐рдорд╛рдирдорд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдЫреИрди рднрдиреЗ, рдпрд╕рд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрджреИрдиред
рддреНрдпрд╣рд╛рдБ 4 рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН:
- рд╕рдмреИ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ gRPC рд╕реНрдЯреНрд░рд┐рдо, рд╕реНрд░реЛрддрдХреЛ рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдкрдард╛рдЗрдиреНрдЫред
- рдЕрд▓рдЧ рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВ, рдкреВрд░реНрдг рдЕрд╡рд╕реНрдерд╛ред
- рдПрдХ рдзрд╛рд░рд╛, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрд╡рд╕реНрдерд╛ред
- рдЕрд▓рдЧ рд╕реНрдЯреНрд░рд┐рдорд╣рд░реВ, рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдЕрд╡рд╕реНрдерд╛ред
рд╡реГрджреНрдзрд┐рд╢реАрд▓ xDS рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирд┐рдпрдиреНрддреНрд░рдг-рдкреНрд▓реЗрди рд░ рдмреАрдЪрдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ рдХрдо рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдкрдард╛рдЗрдпреЛ, рдпреЛ рдареВрд▓рд╛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЫред рддрд░ рдпрд╕рд▓реЗ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЬрдЯрд┐рд▓ рдмрдирд╛рдЙрдБрдЫ; рдЕрдиреБрд░реЛрдзрдорд╛ рд╕рджрд╕реНрдпрддрд╛ рд░рджреНрдж рд░ рд╕рджрд╕реНрдпрддрд╛ рд▓рд┐рдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕реВрдЪреА рд╕рдорд╛рд╡реЗрд╢ рдЫред
рд╣рд╛рдореНрд░реЛ рдЙрджрд╛рд╣рд░рдгрд▓реЗ ADS рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ - RDS, CDS, EDS рд░ рдЧреИрд░-рд╡реГрджреНрдзрд┐ рдореЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рд╕реНрдЯреНрд░рд┐рдоред рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдореЛрдб рд╕рдХреНрд╖рдо рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ api_type: DELTA_GRPC
рдЕрдиреБрд░реЛрдзрд▓реЗ рдиреЛрдб рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реЗрдХреЛ рд╣реБрдирд╛рд▓реЗ, рд╣рд╛рдореА рд╡рд┐рднрд┐рдиреНрди рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдиреНрддреНрд░рдг-рдкреНрд▓реЗрдирдорд╛ рд╡рд┐рднрд┐рдиреНрди рд╕реНрд░реЛрддрд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреНрдЫреМрдВ рдкрдард╛рдЗрдпреЛ, рдпреЛ рд╕реЗрд╡рд╛ рдЬрд╛рд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред
рд╡рд╛рд░реНрдордЕрдк
рдорд╛ рдкрдард╛рдЗрдпреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдкрдорд╛ рд╡рд╛ рдирд┐рдпрдиреНрддреНрд░рдг-рдкреНрд▓реЗрдирдмрд╛рдЯ рдирдпрд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрд╛, рд╕реНрд░реЛрдд рд╡рд╛рд░реНрдордЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рдпрд╕рд▓рд╛рдИ рд╢реНрд░реЛрддрд╛ рд╡рд╛рд░реНрдордЕрдк рд░ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рд░реНрдордЕрдкрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдкрд╣рд┐рд▓реЛ рдЖрд░рдбреАрдПрд╕/рдПрд▓рдбреАрдПрд╕рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдБрджрд╛, рджреЛрд╕реНрд░реЛ рд╕реАрдбреАрдПрд╕/рдИрдбреАрдПрд╕ рд╣реБрдБрджрд╛ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рдпрджрд┐ рдХреЗрд╡рд▓ рдЕрдкрд╕реНрдЯреНрд░реАрдорд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫ рднрдиреЗ, рд╢реНрд░реЛрддрд╛ рдкреБрди: рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдБрджреИрдиред
рд╡рд╛рд░реНрдо-рдЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдмрдЦрдд, рдЯрд╛рдЗрдордЖрдЙрдЯрдХреЛ рд╕рдордпрдорд╛ рдирд┐рдпрдиреНрддреНрд░рдг-рдкреНрд▓реЗрдирдмрд╛рдЯ рдирд┐рд░реНрднрд░ рд╕реНрд░реЛрддрд╣рд░реВ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рднрдпреЛ рднрдиреЗ, рдкреНрд░рд╛рд░рдореНрднрд┐рдХрд░рдг рд╕рдлрд▓ рд╣реБрдиреЗ рдЫреИрди рд░ рдирдпрд╛рдБ рд╢реНрд░реЛрддрд╛рд▓реЗ рдкреЛрд░реНрдЯрдорд╛ рд╕реБрдиреНрди рд╕реБрд░реБ рдЧрд░реНрджреИрдиред
рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдЖрджреЗрд╢: EDS, CDS, рд╕рдХреНрд░рд┐рдп рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ, RDS, LDSред рд╕рдХреНрд░рд┐рдп рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪрд╣рд░реВ рд╕рдХреНрд╖рдо рднрдПрдкрдЫрд┐, рдЯреНрд░рд╛рдлрд┐рдХ рдПрдХ рд╕рдлрд▓ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдБрдЪ рдкрдЫрд┐ рдорд╛рддреНрд░ рдорд╛рдерд┐ рдЬрд╛рдиреНрдЫред
рдпрджрд┐ рд╢реНрд░реЛрддрд╛ рдкреБрди: рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗ, рдкреБрд░рд╛рдиреЛ DRAIN рд╕реНрдерд┐рддрд┐рдорд╛ рдЬрд╛рдиреНрдЫ рд░ рд╕рдмреИ рдЬрдбрд╛рдирд╣рд░реВ рдмрдиреНрдж рднрдПрдкрдЫрд┐ рд╡рд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рднрдПрдкрдЫрд┐ рдореЗрдЯрд┐рдиреЗрдЫред --drain-time-s
, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд 10 рдорд┐рдиреЗрдЯред
рдлреЗрд░рд┐ рдЬрд╛рд░реА рд░рд╛рдЦреМрдВрд▓рд╛ред
рд╕реНрд░реЛрдд: www.habr.com