ื’ืจืขืขื˜ื™ื ื’ืก! ื“ืึธืก ืื™ื– ืึท ืงื•ืจืฅ ืึทืจื˜ื™ืงืœ ื•ื•ืึธืก ืขื ื˜ืคึฟืขืจืก ื“ื™ ืคืจืื’ืขืก: "ื•ื•ืึธืก ืื™ื– ืึท ืฉืœื™ื—?", "ืคืืจื•ื•ืืก ืื™ื– ืขืก ื“ืืจืฃ?" ืื•ืŸ "ื•ื•ืื• ืฆื• ืึธื ื”ื™ื™ื‘ืŸ?".

ื•ื•ืึธืก ืื™ื– ื“ืึธืก

Envoy ืื™ื– ืึทืŸ L4-L7 ื‘ืึทืœืึทื ืกืขืจ ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ C ++, ืคืึธื•ืงื™ืกื˜ ืื•ื™ืฃ ื”ื•ื™ืš ืคืึธืจืฉื˜ืขืœื•ื ื’ ืื•ืŸ ืึทื•ื•ื™ื™ืœืึทื‘ื™ืœืึทื˜ื™. ืื•ื™ืฃ ื“ื™ ืื™ื™ืŸ ื”ืึทื ื˜, ื“ืึธืก ืื™ื– ืื™ืŸ ืขื˜ืœืขื›ืข ื•ื•ืขื’ ืึทืŸ ืึทื ืึทืœืึธื’ ืคื•ืŸ ื ื’ื™ื ืงืก ืื•ืŸ ื”ืึทืคึผืจืึธืงืกื™, ืคืึทืจื’ืœื™ื™ึทื›ืœืขืš ืื™ืŸ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืฆื• ื–ื™ื™. ืื•ื™ืฃ ื“ื™ ืื ื“ืขืจืข ื”ืึทื ื˜, ืขืก ืื™ื– ืžืขืจ ืึธืจื™ืขื ื˜ื™ื“ ืฆื• ืžื™ืงืจืึธืกืขืจื•ื•ื™ืก ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื•ืŸ ื”ืื˜ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื ื™ื˜ ืขืจื’ืขืจ ื•ื•ื™ ื“ื–ืฉืึทื•ื•ืึท ืื•ืŸ ื’ื™ื™ืŸ ื‘ืึทืœืึทื ืกืขืจื–, ืึทื–ืึท ื•ื•ื™ ืฆื•ื•ืœ ืึธื“ืขืจ ื˜ืจืึทืคื™ืง.

ืคืึทืจื’ืœื™ื™ึทืš ื˜ื™ืฉ ืคื•ืŸ ื”ืึทืคึผืจืึธืงืกื™ / ื ื’ื™ื ืงืก / ืึทื ื•ื•ื•ื™, ืขืก ื˜ื•ื˜ ื ื™ืฉื˜ ืคืึธื“ืขืจืŸ ืฆื• ื–ื™ื™ืŸ ื“ืขืจ ืึทื‘ืกืึธืœื•ื˜ ืืžืช, ืึธื‘ืขืจ ื’ื™ื˜ ืึท ื’ืขื ืขืจืึทืœ ื‘ื™ืœื“.

ื ื’ื™ื ืงืก
ื”ืึทืคึผืจืึธืงืกื™
ื’ืขืฉื™ืงื˜
traefik

ืฉื˜ืขืจืŸ ืื•ื™ืฃ ื’ื™ื˜ื”ื•ื‘
11.2 ืง / ืฉืคึผื™ื’ืœ
1.1 ืง / ืฉืคึผื™ื’ืœ
ืงืกื ื•ืžืงืกืง
ืงืกื ื•ืžืงืกืง

ื’ืขืฉืจื™ื‘ืŸ ืื™ืŸ
C
C
C ++
go

ืึทืคึผื™
ืงื™ื™ืŸ
ื›ืึธืœืขืœ ื‘ืœื•ื™ื– / ืฉื˜ื•ืคึผืŸ
ื“ืึทื˜ืึทืคึผืœืึทื ืข / ืฆื™ืขืŸ
ืฆื™ืขืŸ

ืึทืงื˜ื™ื•ื• ื’ืขื–ื•ื ื˜ ื˜ืฉืขืง
ืงื™ื™ืŸ
ื™ืึธ
ื™ืึธ
ื™ืึธ

ืขืคืขื ืขืŸ ื˜ืจื™ื™ืกื™ื ื’
ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืคึผืœื•ื’ื™ืŸ
ืงื™ื™ืŸ
ื™ืึธ
ื™ืึธ

ื“ื–ืฉ.ื•ื•.ื˜.
ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ืคึผืœื•ื’ื™ืŸ
ืงื™ื™ืŸ
ื™ืึธ
ืงื™ื™ืŸ

ืขืงืกืคึผืึทื ืกื™ืึธืŸ
ืœื•ืึท / ืกื™
ืœื•ืึท / ืกื™
ืœื•ืึท/C++
ืงื™ื™ืŸ

ืคืืจื•ื•ืืก

ื“ืึธืก ืื™ื– ืึท ื™ื•ื ื’ ืคึผืจื•ื™ืขืงื˜, ืขืก ืื™ื– ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื–ืื›ืŸ ืคืขืœื ื“ื™ืง, ืขื˜ืœืขื›ืข ืื™ืŸ ืคืจื™ ืึทืœืฃ. ืื‘ืขืจ ื’ืขืฉื™ืงื˜, ืื•ื™ืš ืจืขื›ื˜ ืฆื• ื–ื™ื™ืŸ ื™ื•ื’ื ื˜, ืื™ื– ืจืึทืคึผืึทื“ืœื™ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืื•ืŸ ื”ืื˜ ืฉื•ื™ืŸ ืคื™ืœืข ื˜ืฉื™ืงืึทื•ื•ืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ: ื“ื™ื ืึทืžื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืคื™ืœืข ืคืึทืจื˜ื™ืง ืคื™ืœื˜ืขืจืก, ืึท ืคึผืฉื•ื˜ ืฆื•ื‘ื™ื ื“ ืคึฟืึทืจ ืฉืจื™ื™ื‘ืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืคื™ืœื˜ืขืจืก.
ืึทืจืขืึทืก ืคื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื ืึธื›ืคืึธืœื’ืŸ ืคื•ืŸ ื“ืขื, ืึธื‘ืขืจ ืขืจืฉื˜ืขืจ ืขืก ื–ืขื ืขืŸ 2 ืึทื ื˜ื™-ืคึผืึทื˜ื˜ืขืจื ืก:

  • ืกื˜ืึทื˜ื™ืง ืึธืคึผืคืึทืœ.

ื“ืขืจ ืคืึทืงื˜ ืื™ื– ืึทื– ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ืื™ืŸ ื’ืขืฉื™ืงื˜ ืงื™ื™ืŸ ืงืึทื˜ืฉื™ื ื’ ืฉื˜ื™ืฆืŸ. ื“ื™ ื’ื•ื’ืœ ื’ื™ื™ื– ื–ืขื ืขืŸ ื˜ืจื™ื™ื ื’ ื“ืขื ืคืึทืจืจื™ื›ื˜ืŸ. ื“ืขืจ ื’ืขื“ืึทื ืง ื•ื•ืขื˜ ื–ื™ื™ืŸ ื™ืžืคึผืœืึทืžืขื ืึทื“ ืึทืžืึธืœ ืื™ืŸ ื’ืขืฉื™ืงื˜ ืึทืœืข ื“ื™ ืกืึทื˜ืึทืœื˜ื™ื– (ื–ืึธืึธืœืึธื’ื™ืฉืขืจ ื’ืึธืจื˜ืŸ ื›ืขื“ืขืจื–) ืคื•ืŸ ืจืคืง ื”ืขืกืงืขื, ืื•ืŸ ืคึฟืึทืจ ืกืคึผืขืฆื™ืคื™ืฉ ื™ืžืคึผืœืึทืžืึทื ืฅ ืžืึทื›ืŸ ืึท ืฆื•ื‘ื™ื ื“. ืึธื‘ืขืจ ืื™ืฆื˜ ืขืก ืื™ื– ื ื™ืฉื˜ ืืคื™ืœื• ืึทืœืฃ, ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื™ื– ืื•ื ื˜ืขืจ ื“ื™ืกืงื•ืกื™ืข, PR ืขืคืขื ืขืŸ (ื‘ืฉืขืช ืื™ืš ื”ืื‘ ื’ืขืฉืจื™ื‘ืŸ ื“ืขื ืคึผืจ ืึทืจื˜ื™ืงืœ, ื“ื™ ืคึผืจ ืคืจืึธื–ืข, ืึธื‘ืขืจ ื“ื™ ืคื•ื ื˜ ืื™ื– ื ืึธืš ื‘ืึทื˜ื™ื™ึทื˜ื™ืง).

ืื™ืฆื˜, ื ื•ืฆืŸ nginx ืคึฟืึทืจ ืกื˜ืึทื˜ื™ืง.

  • ืกื˜ืึทื˜ื™ืง ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ.

ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ืขืก, ืึธื‘ืขืจ ื’ืขืฉื™ืงื˜ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื•ื•ืึธืก ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ืืฉืืคืŸ ืคึฟืึทืจ. ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืื™ืŸ ืึท ืกื˜ืึทื˜ื™ืง ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื™ืงืกืคึผืึธื•ื–ื“. ืขืก ื–ืขื ืขืŸ ืคื™ืœืข ืžืึธื•ืžืึทื ืฅ:

ื•ื•ืขืŸ ืื™ืจ ืจืขื“ืึทื’ื™ืจืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ืŸ ื™ืึทืžืœ, ืื™ืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื˜ืขื•ืช, ืึธื ืฉืจืขืงืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ืคึฟืึทืจ ื•ื•ืขืจื‘ืึธืกื™ื˜ื™ ืื•ืŸ ื˜ืจืึทื›ื˜ืŸ ืึทื– ื“ื™ nginx / haproxy ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื–, ื›ืึธื˜ืฉ ื•ื•ื™ื™ื ื™ืงืขืจ ืกื˜ืจืึทืงื˜ืฉืขืจื“, ื–ืขื ืขืŸ ืžืขืจ ืงืึทื ืกื™ื™ืก. ืึทื– ืก ื“ื™ ืคื•ื ื˜. ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ Nginx ืื•ืŸ Haproxy ืื™ื– ื‘ืืฉืืคืŸ ืคึฟืึทืจ ืขื“ื™ื˜ื™ื ื’ ื“ื•ืจืš ื”ืึทื ื˜, ืื•ืŸ ื’ืขืฉื™ืงื˜ ืคึฟืึทืจ ื“ื•ืจ ืคื•ืŸ ืงืึธื“. ื“ื™ ื’ืื ืฆืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ื– ื“ื™ืกืงืจื™ื™ื‘ื“ ืื™ืŸ protobuf, ื“ื–ืฉืขื ืขืจื™ื™ื˜ื™ื ื’ ืขืก ืคึฟื•ืŸ ืคึผืจืึธื˜ืึธ ื˜ืขืงืขืก ืื™ื– ืคื™ืœ ืžืขืจ ืฉื•ื•ืขืจ ืฆื• ืžืึทื›ืŸ ืึท ื’ืจื™ื™ึทื–.

ืงืึทื ืึทืจื™, ื‘ / ื’ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืกื™ื ืขืจื™ืึธื•ื– ืื•ืŸ ืคื™ืœ ืžืขืจ ื–ืขื ืขืŸ ื ืึธืจืžืึทืœื™ ื™ืžืคึผืœืึทืžืขื ืึทื“ ื‘ืœื•ื™ื– ืื™ืŸ ืึท ื“ื™ื ืึทืžื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ. ืื™ืš ื–ืื’ ื ื™ืฉื˜ ืื– ื“ืืก ืงืขืŸ ืžืขืŸ ื ื™ืฉื˜ ืžืื›ืŸ ืกื˜ืื˜ื™ืฉ, ืžื™ืจ ืืœืข ื˜ื•ืขืŸ ืขืก. ืื‘ืขืจ ืคึฟืึทืจ ื“ืขื ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉื˜ืขืœืŸ ืื•ื™ืฃ ืงืจืึทื˜ืฉื™ื–, ืื™ืŸ ืงื™ื™ืŸ ืคื•ืŸ ื“ื™ ื‘ืึทืœืึทื ืกืขืจื–, ืื™ืŸ ื’ืขืฉื™ืงื˜ ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜.

ื˜ืึทืกืงืก ืคึฟืึทืจ ื•ื•ืึธืก ืขื ื•ื•ื•ื™ ืื™ื– ื™ื ื“ื™ืกืคึผืขื ืกืึทื‘ืึทืœ:

  • ืคืึทืจืงืขืจ ื‘ืึทืœืึทื ืกื™ื ื’ ืื™ืŸ ืงืึธืžืคึผืœืขืงืก ืื•ืŸ ื“ื™ื ืึทืžื™ืฉ ืกื™ืกื˜ืขืžืขืŸ. ื“ืึธืก ื›ื•ืœืœ ื“ื™ ืกืขืจื•ื•ื™ืก ื™ื™ื’ืœ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื“ืึทื•ื•ืงืข ื“ืขืจ ื‘ืœื•ื™ื– ืื™ื™ื ืขืจ.
  • ื“ื™ ื ื•ื™ื˜ ืคึฟืึทืจ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ื˜ืจื™ื™ืกื™ื ื’ ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™, ืงืึธืžืคึผืœืขืงืก ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ ืึธื“ืขืจ ืื ื“ืขืจืข ืคืึทื ื’ืงืฉืึทื ืึทืœื™ื˜ื™ ื•ื•ืึธืก ืื™ื– ื‘ื ื™ืžืฆื ืื™ืŸ ื’ืขืฉื™ืงื˜ ืื•ื™ืก ืคื•ืŸ ื“ื™ ืงืขืกื˜ืœ ืึธื“ืขืจ ืงืึทื ื•ื•ื™ื ื™ืึทื ื˜ืœื™ ื™ืžืคึผืœืึทืžืขื ืึทื“, ืึธื‘ืขืจ ืื™ืŸ 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

ื“ื™ื ืึทืžื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ

ื•ื•ืึธืก ืคึผืจืึธื‘ืœืขื ื–ืขื ืขืŸ ืžื™ืจ ืงื•ืงืŸ ืคึฟืึทืจ ืึท ืœื™ื™ื–ื•ื ื’? ืื™ืจ ืงืขื ืขืŸ ื ื™ื˜ ื ืึธืจ ืจื™ืœืึธื•ื“ ื“ื™ ืžืึทืกืข ื‘ืึทืœืึทื ืกืขืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ื ื˜ืขืจ ืžืึทืกืข; "ืงืœื™ื™ืŸ" ืคึผืจืึธื‘ืœืขืžืก ื•ื•ืขื˜ ืื•ื™ืคืฉื˜ื™ื™ืŸ:

  • ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื•ื•ืึทืœืึทื“ื™ื™ืฉืึทืŸ.

ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืงืขืŸ ื–ื™ื™ืŸ ื’ืจื•ื™ืก, ืขืก ืงืขืŸ ื–ื™ื™ืŸ ื–ื™ื™ืขืจ ื’ืจื•ื™ืก, ืื•ื™ื‘ ืžื™ืจ ืึธื•ื•ืขืจืœืึธืึทื“ ืขืก ืึทืœืข ืื™ืŸ ืึทืžืึธืœ, ื“ื™ ื’ื™ื›ืขืจ ืคื•ืŸ ืึท ื˜ืขื•ืช ืขืจื’ืขืฅ ืคืึทืจื’ืจืขืกืขืจืŸ.

  • ืœืึทื ื’-ื’ืขืœืขื‘ื˜ ืงืึทื ืขืงืฉืึทื ื–.

ื•ื•ืขืŸ ืื™ืจ ื™ื ื™ืฉืึทืœื™ื–ื™ื ื’ ืึท ื ื™ื™ึทืข ืœื™ืกื ืขืจ, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื ืขืžืขืŸ ืงืขื™ืจ ืคื•ืŸ ื“ื™ ืงืึทื ืขืงืฉืึทื ื– ื•ื•ืึธืก ืœื•ื™ืคืŸ ืื•ื™ืฃ ื“ื™ ืึทืœื˜ ืื™ื™ื ืขืจ; ืื•ื™ื‘ ืขื ื“ืขืจื•ื ื’ืขืŸ ืคืึทืœืŸ ืึธืคื˜ ืื•ืŸ ืขืก ื–ืขื ืขืŸ ืœืึทื ื’-ื’ืขืœืขื‘ื˜ ืงืึทื ืขืงืฉืึทื ื–, ืื™ืจ ื•ื•ืขื˜ ื”ืึธื‘ืŸ ืฆื• ืงื•ืงืŸ ืคึฟืึทืจ ืึท ืงืึธืžืคึผืจืึธืžื™ืก. ื”ืขืœื, ืงื•ื‘ืขืจื ืขืฅ ืึทืจื™ื™ึทื ื˜ืจืขื˜ืŸ ืื•ื™ืฃ nginx.

  • ืึทืงื˜ื™ื•ื• ื’ืขื–ื•ื ื˜ ื˜ืฉืขืงืก.

ืื•ื™ื‘ ืžื™ืจ ื”ืึธื‘ืŸ ืึทืงื˜ื™ื•ื• ื’ืขื–ื•ื ื˜ ื˜ืฉืขืงืก, ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื˜ืึธืคึผืœ ื˜ืฉืขืง ื–ื™ื™ ืึทืœืข ืื™ืŸ ื“ื™ ื ื™ื™ึทืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ื™ื“ืขืจ ืฉื™ืงืŸ ืคืึทืจืงืขืจ. ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืึทืคึผืกื˜ืจื™ื, ื“ืึธืก ื ืขืžื˜ ืฆื™ื™ื˜. ื”ืขืœื ื”ืืคึผืจืึธืงืกื™.

ื•ื•ื™ ืื™ื– ื“ืึธืก ืกืึทืœื•ื•ื“ ืื™ืŸ ื’ืขืฉื™ืงื˜ื“ื•ืจืš ืœืึธื•ื“ื™ื ื’ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื“ื™ื ืึทืžื™ืงืึทืœืœื™, ืœื•ื™ื˜ ื“ื™ ื‘ืขืงืŸ ืžืึธื“ืขืœ, ืื™ืจ ืงืขื ืขืŸ ื˜ื™ื™ืœืŸ ืขืก ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ ืคึผืึทืจืฅ ืื•ืŸ ื ื™ืฉื˜ ืฉื™ื™ึทืขืš-ื™ื ื™ื˜ื™ืึทืœื™ื–ื™ืจืŸ ื“ืขื ื˜ื™ื™ืœ ื•ื•ืึธืก ืื™ื– ื ื™ืฉื˜ ืคืืจืขื ื“ืขืจื˜. ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืึท ืœื™ืกื ืขืจ, ื•ื•ืึธืก ืื™ื– ื˜ื™ื™ึทืขืจ ืฆื• ืจื™ื™ื ื™ื˜ื™ืึทืœื™ื™ื– ืื•ืŸ ืจืึทืจืขืœื™ ืขื ื“ืขืจื•ื ื’ืขืŸ.

ืงืึธื ืคื™ื’ื•ืจืึทื˜ื™ืึธืŸ ื’ืขืฉื™ืงื˜ (ืคึฟื•ืŸ ื“ืขืจ ื˜ืขืงืข ืื•ื™ื‘ืŸ) ื”ืื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืขื ื˜ื™ื˜ื™ื–:

  • ืœื™ืกื ืขืจ - ืœื™ืกื ืขืจ ื›ืึทื ื’ื’ื™ื ื’ ืื•ื™ืฃ ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื™ืคึผ / ืคึผืึธืจื˜
  • ื•ื•ื™ืจื˜ื•ืขืœ ื‘ืึทืœืขื‘ืึธืก - ื•ื•ื™ืจื˜ื•ืึทืœ ื‘ืึทืœืขื‘ืึธืก ื“ื•ืจืš ืคืขืœื“ ื ืึธืžืขืŸ
  • ืžืึทืจืฉืจื•ื˜ - ื‘ืึทืœืึทื ืกื™ื ื’ ื”ืขืจืฉืŸ
  • ืงื ื•ื™ืœ - ืึท ื’ืจื•ืคึผืข ืคื•ืŸ โ€‹โ€‹ืึทืคึผืกื˜ืจื™ื ืžื™ื˜ ื‘ืึทืœืึทื ืกื™ื ื’ ืคึผืึทืจืึทืžืขื˜ืขืจืก
  • ืขื ื“ืคึผื•ื™ื ื˜ - ืึทืคึผืกื˜ืจื™ื ื‘ื™ื™ึทืฉืคึผื™ืœ ืึทื“ืจืขืก

ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืขื ื˜ื™ื˜ื™ื– ืคึผืœื•ืก ืขื˜ืœืขื›ืข ืื ื“ืขืจืข ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึธื ื’ืขืคื™ืœื˜ ื“ื™ื ืึทืžื™ืงืึทืœืœื™; ืคึฟืึทืจ ื“ืขื, ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ืคื•ืŸ ื•ื•ื• ื“ื™ ืงืึธื ืคื™ื’ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื‘ืืงื•ืžืขืŸ. ื“ื™ ื“ื™ื ืกื˜ ืงืขื ืขืŸ ื–ื™ื™ืŸ REST ืึธื“ืขืจ gRPC, gRPC ืื™ื– ื‘ื™ืœื›ืขืจ.

ื“ื™ ืกืขืจื•ื•ื™ืกืขืก ื–ืขื ืขืŸ ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™ ืจื™ืกืคึผืขืงื˜ื™ื•ื•ืœื™: LDS, VHDS, RDS, CDS ืื•ืŸ EDS. ืื™ืจ ืงืขื ืขืŸ ืคืึทืจื‘ื™ื ื“ืŸ ืกื˜ืึทื˜ื™ืง ืื•ืŸ ื“ื™ื ืึทืžื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ, ืžื™ื˜ ื“ื™ ื‘ืึทื’ืจืขื ืขืฆื•ื ื’ ืึทื– ืึท ื“ื™ื ืึทืžื™ืฉ ืžื™ื˜ืœ ืงืขื ืขืŸ ื ื™ื˜ ื–ื™ื™ืŸ ืกืคึผืขืกื™ืคื™ืขื“ ืื™ืŸ ืึท ืกื˜ืึทื˜ื™ืง.

ืคึฟืึทืจ ืจื•ื‘ึฟ ื˜ืึทืกืงืก, ืขืก ืื™ื– ื’ืขื ื•ื’ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ื“ื™ ืœืขืฆื˜ืข ื“ืจื™ื™ ืกืขืจื•ื•ื™ืกืขืก, ื–ื™ื™ ื–ืขื ืขืŸ ื’ืขืจื•ืคืŸ ADS (Aggregated Discovery Service), ืคึฟืึทืจ ื–'ืื‘ื ืื•ืŸ ื’ื™ื™ืŸ ื“ืึธืจื˜ ืื™ื– ืึท ืคืึทืจื˜ื™ืง ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ gRPC ื“ืึทื˜ืึทืคึผืœืึทื ืข ืื™ืŸ ื•ื•ืึธืก ืื™ืจ ื ืึธืจ ื“ืึทืจืคึฟืŸ ืฆื• ืคึผืœืึธืžื‘ื™ืจืŸ ื“ื™ ืึทื‘ื“ื–ืฉืขืงืฅ ืคึฟื•ืŸ ื“ื™ื™ืŸ ืžืงื•ืจ.

ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ื ืขืžื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ืคืึธืจืขื:

ืึทื ื•ื•ื•ื™.ื™ืึทืžืœ ื“ื™ื ืึทืžื™ืฉ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ

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

ื–ื™ื ื˜ ื“ื™ ื‘ืขื˜ืŸ ื›ึผื•ืœืœ ื ืึธื“ืข ืคึผืึทืจืึทืžืขื˜ืขืจืก, ืžื™ืจ ืงืขื ืขืŸ ืฉื™ืงืŸ ืคืึทืจืฉื™ื“ืขื ืข ืจืขืกื•ืจืกืŸ ืฆื• ื“ื™ ืงืึธื ื˜ืจืึธืœ ืคืœืึทืš ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืขื ืข ื™ื ืกื˜ืึทื ืกื™ื– ื’ืขืฉื™ืงื˜, ื“ืึธืก ืื™ื– ื‘ืึทืงื•ื•ืขื ืคึฟืึทืจ ื‘ื ื™ืŸ ืึท ื“ื™ื ืกื˜ ื™ื™ื’ืœ.

ืื ื•ื•ืืจืขืžืขืŸ

ืื•ื™ืฃ ื’ืขืฉื™ืงื˜ ื‘ื™ื™ ืกื˜ืึทืจื˜ืึทืคึผ ืึธื“ืขืจ ื•ื•ืขืŸ ืื™ืจ ื‘ืึทืงื•ืžืขืŸ ืึท ื ื™ื™ึทืข ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ืงืึธื ื˜ืจืึธืœ ืคืœืึทืš, ื“ื™ ืžื™ื˜ืœ ื•ื•ืึธืจืžืึทืคึผ ืคึผืจืึธืฆืขืก ืื™ื– ืœืึธื ื˜ืฉื˜. ืขืก ืื™ื– ืฆืขื˜ื™ื™ืœื˜ ืื™ืŸ ืœื™ืกื ืขืจ ื•ื•ืึธืจืžืึทืคึผ ืื•ืŸ ืงื ื•ื™ืœ ื•ื•ืึทืจืžื•ืคึผ. ื“ืขืจ ืขืจืฉื˜ืขืจ ืื™ื– ืœืึธื ื˜ืฉื˜ ื•ื•ืขืŸ ืขืก ื–ืขื ืขืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืื™ืŸ RDS / LDS, ื“ื™ ืจื’ืข ื•ื•ืขืŸ CDS / EDS. ื“ืขื ืžื™ื˜ืœ ืึทื– ืื•ื™ื‘ ื‘ืœื•ื™ื– ืึทืคึผืกื˜ืจื™ื ื˜ื•ื™ืฉืŸ, ื“ืขืจ ืฆื•ื”ืขืจืขืจ ืื™ื– ื ื™ืฉื˜ ืจื™ืงืจื™ื™ื™ื˜ื™ื“.

ื‘ืขืฉืึทืก ื“ื™ ื•ื•ืึทืจืขื-ืึทืจื•ื™ืฃ ืคึผืจืึธืฆืขืก, ืึธืคืขื ื’ื™ืง ืจืขืกื•ืจืกืŸ ื–ืขื ืขืŸ ื“ืขืจื•ื•ืึทืจื˜ ืคื•ืŸ ื“ื™ ืงืึธื ื˜ืจืึธืœ ืคืœืึทืš ื‘ืขืฉืึทืก ื“ื™ ื˜ื™ื™ืžืึทื•ื˜. ืื•ื™ื‘ ื“ื™ ื˜ื™ื™ืžืึทื•ื˜ ืึทืงืขืจื–, ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื’ืขืจืึธื˜ืŸ ืื•ืŸ ื“ืขืจ ื ื™ื™ึท ืœื™ืกื ืขืจ ื•ื•ืขื˜ ื ื™ืฉื˜ ืึธื ื”ื™ื™ื‘ืŸ ืฆื•ื’ืขื”ืขืจื˜ ืื•ื™ืฃ ื“ื™ ืคึผืึธืจื˜.
ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ืกื“ืจ: EDS, CDS, ืึทืงื˜ื™ื•ื• ื’ืขื–ื•ื ื˜ ื˜ืฉืขืง, RDS, LDS. ืžื™ื˜ ืึทืงื˜ื™ื•ื• ื’ืขื–ื•ื ื˜ ื˜ืฉืขืงืก ืขื ื™ื™ื‘ืึทืœื“, ืคืึทืจืงืขืจ ื•ื•ืขื˜ ื’ื™ื™ืŸ ืึทืคึผืกื˜ืจื™ื ื‘ืœื•ื™ื– ื ืึธืš ืื™ื™ืŸ ื’ืขืจืึธื˜ืŸ ื’ืขื–ื•ื ื˜ ื˜ืฉืขืง.

ืื•ื™ื‘ ื“ื™ ืœื™ืกื ืขืจ ืื™ื– ืจื™ืงืจื™ื™ื™ื˜ื™ื“, ื“ืขืจ ืึทืœื˜ ื’ื™ื™ื˜ ืื™ืŸ ื“ื™ DRAIN ืฉื˜ืึทื˜ ืื•ืŸ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืื•ื™ืกื’ืขืžืขืงื˜ ื ืึธืš ืึทืœืข ืงืึทื ืขืงืฉืึทื ื– ื–ืขื ืขืŸ ืคืืจืžืื›ื˜ ืึธื“ืขืจ ื“ื™ ื˜ื™ื™ืžืึทื•ื˜ ื™ืงืกืคึผื™ื™ืขืจื– --drain-time-s, ืคืขืœื™ืงื™ื™ึทื˜ 10 ืžื™ื ื•ื˜.

ืฆื• ื–ื™ื™ืŸ ืคืืจื‘ืœื™ื‘ืŸ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’