标签: envoyproxy

为什么特使边车可以控制我的交通?

我跑istioKubernetes.我想知道特使边车是如何工作的.例如,在将边车注入吊舱后,原始集装箱无法进入外部网络EgressRule.它是如何工作的?

kubernetes istio envoyproxy

3
推荐指数
1
解决办法
559
查看次数

Knative Serving 的 Activator 如何拦截缩小修订版本的请求?

如上所述这里,Knative的激活接收和缓冲的要求不活跃修订。

这个路由是如何实现的?我在应用程序的命名空间中看到的只是一个 VirtualService 路由对修订版的请求,所以我看不到进入网格的流量是如何重定向到 Activator 的。

Knative 服务版本:0.9.0

kubernetes istio envoyproxy knative-serving knative

3
推荐指数
1
解决办法
661
查看次数

TLS 中的 GRPC-Web 连接问题

我有一个 GRPC Web 客户端和一个 GRPC 服务器,我正在使用从 HTTP 1.1 到 HTTP2 的转换的特使代理。

我的服务器创建逻辑使用 TLS。代码如下:

    var opts []grpc.ServerOption
    creds, err := credentials.NewServerTLSFromFile("cert/server.crt", "cert/server.key")
    if err != nil {
        log.Fatalf("Failed to generate credentials %v", err)
    }
    opts = []grpc.ServerOption{grpc.Creds(creds)}
    server := grpc.NewServer(opts...)
Run Code Online (Sandbox Code Playgroud)

我正在从我的反应客户端调用如下:

const client = new LiveClient('http://localhost:8080')
const request = new GetLiveRequest()
    request.setApi(1)
    request.setTrackkey(trackKey)

    // on success response
    const stream = client.getLive(request, {})
    stream.on('data', response => {
         console.log(response);
    }
Run Code Online (Sandbox Code Playgroud)

envoy.yaml 如下:

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 } …
Run Code Online (Sandbox Code Playgroud)

grpc grpc-web envoyproxy grpc-node

3
推荐指数
1
解决办法
1804
查看次数

如何在 Envoy 中禁用路由超时?

我正在尝试使用 http2/grpc 流媒体,但我的连接在 15 秒内中断。关于超时设置的文档说将超时设置为 0。但是,当我这样做时,Envoy 在启动时抛出错误,抱怨 0 不是 Duration 类型的有效值。

如何禁用路由超时?

这是我的 Envoy 配置 .yml

    admin:
      access_log_path: "/dev/null"
      address:
        socket_address:
          address: 0.0.0.0
          port_value: 8801
    
    static_resources:
      listeners:
      - address:
          socket_address:
            address: 0.0.0.0
            port_value: 11001
        filter_chains:
        - filters:
          - name: envoy.filters.network.http_connection_manager
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
              stat_prefix: ingress_http
              http_filters:
              - name: envoy.filters.http.router
              route_config:
                name: grpc_route
                virtual_hosts:
                - name: grpc_service
                  domains: ["*"]
                  routes:
                  - name: grpc_proxy
                    match:
                      prefix: "/"
                    route:
                      timeout: 0 # How do I disable the …
Run Code Online (Sandbox Code Playgroud)

networking http2 grpc envoyproxy

3
推荐指数
1
解决办法
638
查看次数

如何在 Envoy 代理中基于 Http 标头进行路由

我正在发送带有以下标头的 http 请求。

标头 = {"InstanceId" : "1"}

如何使用此标头值(即 1)路由到集群(端点)

我实际上想在 envoy.yaml 中做什么:

if (头.InstanceId == 1)

Route to cluster A
Run Code Online (Sandbox Code Playgroud)

Else If (标头.InstanceId == 2)

Route to cluster B
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?提前致谢。

routes http-headers envoyproxy

3
推荐指数
1
解决办法
3445
查看次数

裸金属上的庚烷轮廓外部ip

我已经使用kubespray设置了kubernetes集群,现在我正在尝试遵循本指南

root@node1 ~ # kubectl get -n heptio-contour service contour -o wide
NAME      TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE       SELECTOR
contour   LoadBalancer   10.233.55.94   <pending>     80:32414/TCP,443:30149/TCP   42m       app=contour
Run Code Online (Sandbox Code Playgroud)

EXTERNAL-IP由于我在裸机上(而不是AWS / GKE等),因此似乎正在等待

为了在那里显示外部IP,我需要做什么?

kubernetes envoyproxy heptio-contour

2
推荐指数
1
解决办法
742
查看次数

istio-proxy 访问日志是什么意思?

我试图通过查看 istio-proxy 访问日志(它记录每次访问)来对我的服务进行故障排除。但是,我找不到任何解释日志中每个条目含义的文档。

例如

[2018-12-20T11:09:42.302Z]“GET / HTTP/1.1”200-0 614 0 0“10.32.96.32”“curl/7.54.0”“17b8f245-af00-4379-9f8f-a4dcd2f38c01”“foo .com”“127.0.0.1:8080”

上面的log是什么意思?

更新

我已经尝试过Vadim 的答案,但找不到日志格式数据。这是输出 json 文件。有什么我想念的吗?我正在使用 istio-1.0.0

kubernetes istio envoyproxy

2
推荐指数
1
解决办法
8712
查看次数

ISTIO sidecar 导致 Java grpc 客户端在高并发负载下抛出“UNAVAILABLE:上游连接错误或在 headers 之前断开/重置”

我有两个 gRPC 服务,一个将通过正常的 gRPC 方法调用另一个服务(两边都没有流),我使用 istio 作为服务网格,并将 sidecar 注入到这两个服务的 kubernetes pod 中。

正常负载下gRPC调用正常,但在高并发负载情况下,gRPC客户端一直抛出以下异常:

<#bef7313d> i.g.StatusRuntimeException: UNAVAILABLE: upstream connect error or disconnect/reset before headers
    at io.grpc.Status.asRuntimeException(Status.java:526)
    at i.g.s.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:434)
    at i.g.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
    at i.g.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
    at i.g.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
    at i.g.i.CensusStatsModule$StatsClientInterceptor$1$1.onClose(CensusStatsModule.java:678)
    at i.g.PartialForwardingClientCallListener.onClose(PartialForwardingClientCallListener.java:39)
    at i.g.ForwardingClientCallListener.onClose(ForwardingClientCallListener.java:23)
    at i.g.ForwardingClientCallListener$SimpleForwardingClientCallListener.onClose(ForwardingClientCallListener.java:40)
    at i.g.i.CensusTracingModule$TracingClientInterceptor$1$1.onClose(CensusTracingModule.java:397)
    at i.g.i.ClientCallImpl.closeObserver(ClientCallImpl.java:459)
    at i.g.i.ClientCallImpl.access$300(ClientCallImpl.java:63)
    at i.g.i.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:546)
    at i.g.i.ClientCallImpl$ClientStreamListenerImpl.access$600(ClientCallImpl.java:467)
    at i.g.i.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:584)
    at i.g.i.ContextRunnable.run(ContextRunnable.java:37)
    at i.g.i.SerializingExecutor.run(SerializingExecutor.java:123)
    at j.u.c.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at j.u.c.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Run Code Online (Sandbox Code Playgroud)

同时,服务端没有异常,istio-proxy客户端Pod的容器也没有错误。但是,如果我禁用 istio sidecar 注入,以便这两个服务直接相互通信,则不会出现此类错误。

有人可以告诉我为什么以及如何解决这个问题吗?

多谢。

java grpc grpc-java istio envoyproxy

2
推荐指数
1
解决办法
2921
查看次数

如何让 lua envoy 过滤器在 istio 集群上工作?

我正在尝试让 lua envoy 过滤器与 istio 网关一起使用,但我添加到集群中,它的工作方式就好像过滤器不存在一样。

我已经使用本指南https://istio.io/docs/setup/kubernetes/install/kubernetes/在 GKE 上配置了我的 istio 集群。

有人遇到过同样的问题吗?

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: edge-lua-filter
spec:
  workloadLabels:
    app: httpbin-gateway
  filters:
  - listenerMatch:
      listenerType: GATEWAY
    filterName: envoy.lua
    filterType: HTTP
    filterConfig:
      inlineCode: |
        -- Called on the request path.
        function envoy_on_request(request_handle)
            request_handle:headers():add("foo", "bar")
        end
        -- Called on the response path.
        function envoy_on_response(response_handle)
            body_size = response_handle:body():length()
            response_handle:headers():add("response-body-size", tostring(body_size))
        end
Run Code Online (Sandbox Code Playgroud)
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: httpbin-gateway
  namespace: foo
spec:
  selector:
    istio: ingressgateway # use Istio default gateway …
Run Code Online (Sandbox Code Playgroud)

istio envoyproxy

2
推荐指数
1
解决办法
6080
查看次数

是否可以在没有 ssl 的情况下在 NGINX 端口 443 上运行 HTTP/2?

我有 Envoy 代理处理 SSL 终止。Nginx(docker 容器中的 1.17.0,已编译--with-http_v2_module)是几个上游服务之一。结果,Nginx 在端口 443 上接收流量但不使用该ssl模块:

server {
    listen 443;
    server_name example.com www.example.com;
    root /var/www/html;

...
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我尝试添加http2到监听行的末尾,我会收到:

curl: (1) Received HTTP/0.9 when not allowed
Run Code Online (Sandbox Code Playgroud)

...不仅仅是有问题的example.com,而是所有服务器。

出于明显的性能原因,我希望 Envoy 通过 HTTP/2 与 Nginx 对话。

是否有一些技巧可以让 nginx 在端口 443 上使用 http2 而无需 SSL 终止?


编辑:

核心nginx.conf

user  nginx;
worker_processes  2;

pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    client_max_body_size 64M;

    sendfile        on;

    keepalive_timeout  65; …
Run Code Online (Sandbox Code Playgroud)

ssl nginx http2 envoyproxy

2
推荐指数
1
解决办法
3901
查看次数