Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes IstIO入口网关上Nginx入口注释的等价物_Kubernetes_Istio_Nginx Ingress - Fatal编程技术网

Kubernetes IstIO入口网关上Nginx入口注释的等价物

Kubernetes IstIO入口网关上Nginx入口注释的等价物,kubernetes,istio,nginx-ingress,Kubernetes,Istio,Nginx Ingress,我目前正在将IT环境从Nginx Ingress Gateway迁移到Kubernetes上的IstIO Ingress Gateway 我需要迁移以下Nginx注释: nginx.ingress.kubernetes.io/proxy-buffer-size nginx.ingress.kubernetes.io/proxy-read-timeout nginx.ingress.kubernetes.io/proxy-send-timeout nginx.ingress.kubernetes.

我目前正在将IT环境从Nginx Ingress Gateway迁移到Kubernetes上的IstIO Ingress Gateway

我需要迁移以下Nginx注释:

nginx.ingress.kubernetes.io/proxy-buffer-size
nginx.ingress.kubernetes.io/proxy-read-timeout
nginx.ingress.kubernetes.io/proxy-send-timeout
nginx.ingress.kubernetes.io/proxy-body-size
nginx.ingress.kubernetes.io/upstream-vhost
对于Nginx,注释记录如下:

在针对Nginx注释的IstIO文档中,我没有找到IstIO入口网关的使用方法

有人知道如何在IstIO入口网关中实现上述注释吗

提前谢谢

致以最良好的祝愿,
rforberger

Nginx入口注释等价物可以在Istio中使用实现

更具体地说,通过使用

具有HTTP Lua筛选器的特使筛选器示例:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: reviews-lua
  namespace: bookinfo
spec:
  workloadSelector:
    labels:
      app: reviews
  configPatches:
    # The first patch adds the lua filter to the listener/http connection manager
  - applyTo: HTTP_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        portNumber: 8080
        filterChain:
          filter:
            name: "envoy.http_connection_manager"
            subFilter:
              name: "envoy.router"
    patch:
      operation: INSERT_BEFORE
      value: # lua filter specification
       name: envoy.lua
       config:
         inlineCode: |
           function envoy_on_request(request_handle)
             -- Make an HTTP call to an upstream host with the following headers, body, and timeout.
             local headers, body = request_handle:httpCall(
              "lua_cluster",
              {
               [":method"] = "POST",
               [":path"] = "/acl",
               [":authority"] = "internal.org.net"
              },
             "authorize call",
             5000)
           end
  # The second patch adds the cluster that is referenced by the lua code
  # cds match is omitted as a new cluster is being added
  - applyTo: CLUSTER
    match:
      context: SIDECAR_OUTBOUND
    patch:
      operation: ADD
      value: # cluster specification
        name: "lua_cluster"
        type: STRICT_DNS
        connect_timeout: 0.5s
        lb_policy: ROUND_ROBIN
        hosts:
        - socket_address:
            protocol: TCP
            address: "internal.org.net"
            port_value: 8888
例如:

nginx.ingres.kubernetes.io/代理正文大小可以通过
size=buffer:length()
实现

nginx.ingres.kubernetes.io/代理读取超时
nginx.ingres.kubernetes.io/proxy send timeout
是自定义超时,可以通过
httpCall(5000)
实现

可以找到完整的方法列表

希望这有帮助


更新:

在重新阅读nginx注释后,
getBytes()
对于
nginx.ingres.kubernetes.io/proxy buffer size
buffer:lenght()
看起来更好

getBytes()

缓冲区:getBytes(索引,长度)

从缓冲区获取字节。默认情况下,特使不会复制所有缓冲区 字节到Lua。这将导致复制缓冲区段。指数 是一个整数,提供要复制的缓冲区开始索引。长度 是一个整数,提供要复制的缓冲区长度。索引+ 长度必须小于缓冲区长度


因此
buffer:getBytes(08000)
应该从缓冲区加载8k字节,类似于
nginx.ingres.kubernetes.io/proxy-buffer-size:“8k”

我想我找到了如何在Istio中设置nginx.ingres.kubernetes.io/proxy body size

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: reviews-lua
  namespace: bookinfo
spec:
  workloadSelector:
    labels:
      app: reviews
  configPatches:
    # The first patch adds the lua filter to the listener/http connection manager
  - applyTo: HTTP_FILTER
    match:
      context: SIDECAR_INBOUND
      listener:
        portNumber: 8080
        filterChain:
          filter:
            name: "envoy.http_connection_manager"
            subFilter:
              name: "envoy.router"
    patch:
      operation: INSERT_BEFORE
      value: # lua filter specification
       name: envoy.lua
       config:
         inlineCode: |
           function envoy_on_request(request_handle)
             request_handle:headers():add("request_body_size", request_handle:body():length())
           end
以及TLS密码:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-tls-ingress
spec:
  selector:
    app: my-tls-ingress-gateway
  servers:
  - port:
      number: 443
      name: https
      protocol: HTTPS
    hosts:
    - "*"
    tls:
      mode: SIMPLE
      serverCertificate: /etc/certs/server.pem
      privateKey: /etc/certs/privatekey.pem
      cipherSuites: "<tls-ciphers>"
apiVersion:networking.istio.io/v1alpha3 种类:网关 元数据: 名称:我的tls入口 规格: 选择器: 应用程序:我的tls入口网关 服务器: -端口: 电话:443 名称:https 协议:HTTPS 主持人: - "*" tls: 模式:简单 服务器证书:/etc/certs/server.pem privateKey:/etc/certs/privateKey.pem 密码套件:“
如果您收到的413实体作为响应太大,这种情况的主要问题是链中的一个特使过滤器具有缓冲

关于这一点的讨论可以在这里找到:

特使上该缓冲的初始值由属性设置:

  http2_protocol_options:
    initial_stream_window_size: 65536 # 64 KiB
    initial_connection_window_size: 1048576 # 1 MiB
资料来源:

您可以覆盖给定工作负载(或全局)的缓冲区,但您必须记住,如果增加太多,则存在内存不足攻击的风险

重新配置它的示例过滤器:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: my-service
spec:
  workloadSelector:
    labels:
      app: my-service
  configPatches:
    - applyTo: NETWORK_FILTER
      match:
        listener:
          filterChain:
            filter:
              name: "envoy.http_connection_manager"
      patch:
        operation: MERGE
        value:
          typed_config:
            "@type": "type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager"
            http2_protocol_options:
              initial_stream_window_size: 65536
              initial_connection_window_size: 10485760 # 10 MB
您将在Istio文档中找到关于特使文件管理者的更多信息:


其他示例:

谢谢,这非常有用,尽管与Nginx注释相比非常复杂。您能举一个如何使用
size=buffer:length()
的示例吗?我不是从文档中得到的。我想设置代理服务器的缓冲区大小。我已经编辑了回答您其他问题的答案。还修复了第一个示例。我的例子只是一些建议,我无法验证它们是否有效。好的,谢谢。以及如何在IstIO中实现
nginx.ingres.kubernetes.io/代理体大小
,以及如何在IstIO中实现注释
nginx.ingres.kubernetes.io/ssl密码
?这对您有用吗?对我来说,它在请求时提供了“``[string”函数(请求句柄)…”:3:尝试在get请求时索引一个nil值,post请求时没有显示头,返回http错误413