跟我学EnvoyGateway:启用HTTP3协议支持

引言

这篇指南将帮助你开始使用Envoy Gateway来使用HTTP/3。本指南使用自签名CA,因此仅应用于测试和演示目的。

安装

按照快速入门任务的步骤安装Envoy Gateway和示例清单。在继续之前,你应该能够使用HTTP查询示例后端。

验证网关状态:

kubectl get gateway/eg -o yaml

TLS证书

生成网关用于终止客户端TLS连接的证书和密钥。

创建一个根证书和私钥来签署证书:

openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=example Inc./CN=example.com' -keyout example.com.key -out example.com.crt

www.example.com创建一个证书和一个私钥:

openssl req -out www.example.com.csr -newkey rsa:2048 -nodes -keyout www.example.com.key -subj "/CN=www.example.com/O=example organization"
openssl x509 -req -days 365 -CA example.com.crt -CAkey example.com.key -set_serial 0 -in www.example.com.csr -out www.example.com.crt

将证书/密钥存储在Secret中:

kubectl create secret tls example-cert --key=www.example.com.key --cert=www.example.com.crt

更新快速入门中的网关,以包含一个监听端口443的HTTPS监听器,并引用example-cert Secret:

kubectl patch gateway eg --type=json --patch '
  - op: add
    path: /spec/listeners/-
    value:
      name: https
      protocol: HTTPS
      port: 443
      tls:
        mode: Terminate
        certificateRefs:
        - kind: Secret
          group: ""
          name: example-cert
  '

应用以下ClientTrafficPolicy以启用HTTP/3:

cat <<EOF | kubectl apply -f -
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
  name: enable-http3
spec:
  http3: {}
  targetRefs:
    - group: gateway.networking.k8s.io
      kind: Gateway
      name: eg
EOF

保存并应用以下资源到你的集群:

---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: ClientTrafficPolicy
metadata:
  name: enable-http3
spec:
  http3: {}
  targetRefs:
    - group: gateway.networking.k8s.io
      kind: Gateway
      name: eg

验证网关状态:

kubectl get gateway/eg -o yaml

测试

获取网关的外部IP:

export GATEWAY_HOST=$(kubectl get gateway/eg -o jsonpath='{.status.addresses[0].value}')

通过网关查询示例应用:

以下示例使用带有内置http3的自定义curl二进制文件的自定义docker镜像。

docker run --net=host --rm ghcr.io/macbre/curl-http3 curl -kv --http3 -HHost:www.example.com --resolve "www.example.com:443:${GATEWAY_HOST}" https://www.example.com/get

目前无法在kubernetes服务中端口转发UDP协议,查看这个问题。因此,我们需要外部负载均衡器来测试此功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值