我对 istio 的 mTLS 流程有点困惑。在bookinginfo 示例中,我看到服务通过http 而不是https 进行调用。如果服务之间有 mTLS 那么服务会进行 http 调用吗?
是否可以将来自服务的 HTTP 转到 Envoy 代理,然后将其转换为 https?但是,然后在服务器的 envoy-proxy 日志中,我在日志中看到了 http。
任何机构都可以解释这是如何工作的吗?
问候
我想禁用 istio 就绪探针在运行服务上进行运行状况检查。有没有办法禁用http就绪探针然后再启用它
我有一个 Istio 1.4.6 VirtualService,它有一个匹配项和一个 url 重写,定义如下:
match:
- authority:
prefix: example.com
uri:
prefix: /foo/bar
rewrite:
uri: /
route:
- destination:
host: some-service
port:
number: 80
Run Code Online (Sandbox Code Playgroud)
我想重写如下:
指向的流量/foo/bar或其任何子路径都应重写为/加上 上的任何子路径some-service。
i.e.
example.com/foo/bar -> some-service
example.com/foo/bar/subpath -> some-service/subpath
example.com/foo/bar/subpath/anothersubpath -> some-service/subpath/anothersubpath
Run Code Online (Sandbox Code Playgroud)
但是,当我对进入的流量进行 sysdig 时some-service,我看到 Istio 已将路径重写为:
GET //subpath/anothersubpath HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
请注意 GET 请求中的两个斜杠。在 VirtualService 规范rewrite.uri字段中,我似乎无法将该字段留空或在其中添加空字符串。这样做会导致资源无法验证。
即我不能这样做:
rewrite:
uri: ""
Run Code Online (Sandbox Code Playgroud)
并且不能这样做
rewrite:
uri:
Run Code Online (Sandbox Code Playgroud)
如何定义 VirtualService 重写以将流量发送到目标服务的根?任何帮助深表感谢。
我正在尝试将 Envoy 配置为显式代理来处理连接,尝试使用https://github.com/envoyproxy/envoy/blob/de757584e65da842dee5bddee3893a66b9a6219c/configs/terminate_connect.v3.yaml给出的配置
有没有将 Envoy 配置为显式代理的示例?
根据此处的文档https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_conn_man/headers#x-forwarded-proto
特使代理将 Header 添加X-Forwarded-Proto到请求中,由于某种原因,标头值为错误的; 它将它设置为http尽管传入请求方案会https导致我的应用程序代码中出现一些问题,因为它取决于此标头的正确值。
这是特使中的错误吗?我可以阻止特使这样做吗?
当我在 Digital Ocean K8S 集群上部署https://projectcontour.io/入口控制器时,会自动创建一个负载均衡器。
我考虑使用Ansible作为K8S的管理工具来自动化部署。
完成以下任务后:
- name: retrieve file
get_url:
url: https://projectcontour.io/quickstart/contour.yaml
dest: /testing/contour.yaml
register: download_contour
- name: create deployment
k8s:
src: /testing/deployment.yml
when: download_contour.changed
Run Code Online (Sandbox Code Playgroud)
我想等到轮廓获得分配的 EXTERNAL-IP 地址,然后继续执行其他任务。这是我本地计算机上的示例:
kubectl get -n projectcontour service envoy -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
envoy LoadBalancer 10.96.226.84 172.18.255.200 80:31092/TCP,443:30362/TCP 2d15h app=envoy
Run Code Online (Sandbox Code Playgroud)
如何等待envoyLoadBalancer 获得 Ansible 中分配的 EXTERNAL-IP 地址?
我正在尝试根据某些请求标头在特使代理上设置 RING_HASH 负载平衡。从文档看来我必须在中设置哈希键filter_metadata
filter_metadata:
envoy.lb:
hash_key: "YOUR HASH KEY"
Run Code Online (Sandbox Code Playgroud)
但是,我无法找出 hash_key 的可能值/表达式是什么。我尝试为哈希键配置固定值,但请求仍然不会发送到同一上游服务器。
我的envoy.yaml
admin:
address:
socket_address: { address: 0.0.0.0, port_value: 9901 }
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 10000 }
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
codec_type: AUTO
route_config:
name: local_route
virtual_hosts:
- name: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: some_service }
http_filters:
- name: envoy.filters.http.router
clusters:
- name: …Run Code Online (Sandbox Code Playgroud) 我正在尝试让 EnvoyFilters 在我的安装中工作。\n出于测试目的,我正在尝试设置 lua 过滤器来记录哑消息并向响应添加标头。
\n这是我的配置:
\napiVersion: networking.istio.io/v1alpha3\nkind: EnvoyFilter\nmetadata:\n name: dumb-filter\n namespace: istio-system\nspec:\n # workloadSelector:\n # labels:\n # istio: ingressgateway\n configPatches:\n # - applyTo: VIRTUAL_HOST\n - applyTo: HTTP_ROUTE\n match:\n context: GATEWAY\n # context: ANY\n routeConfiguration:\n vhost:\n # name: "<domain>:443"\n route:\n #TODO: Understand name compose logic\n name: https.443.https.geth-dedicated.default\n patch:\n operation: MERGE\n value:\n name: envoy.filters.http.lua\n typed_config:\n "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua\n inlineCode: |\n function envoy_on_response(response_handle)\n response_handle:headers():add("dm3ch-test", "dm3ch")\n response_handle:logErr("Bye Bye.")\n end\nRun Code Online (Sandbox Code Playgroud)\n目前我没有看到任何日志消息或测试标头响应。\n我已经尝试过:
\n我有一个 Laravel(Lumen) 登录 API,它使用 HS256 生成 JWT。然后我将不记名令牌发送到 Envoy Gateway 并从 Envoy 获取
JWT验证失败
在官方 JWT 解码网站上,我可以成功解码并验证我的不记名令牌。在这里我生成我的 JWT:
{
$payload = [
'iss' => config('app.name'), // Issuer vom Token
'sub' => strval($user->ID), // Subject vom Token
'username' => $user->username,
'iat' => time() - 500, // Time when JWT was issued.
'exp' => time() + config('jwt.ttl'), // Expiration time
'alg' => 'HS256',
'kid' => 'ek4Z9ouLmGnCoezntDXMxUwmjzNTBqptKNkfaqc6Ew8'
];
$secretKey = 'helloworld'; //my base64url
$jwtEnc = JWT::encode($payload, $secretKey, $payload['alg'], $payload['kid']);
return $jwtEnc;
}
Run Code Online (Sandbox Code Playgroud)
这是我的 Envoy …
我正在尝试运行 WASM Go 过滤器以使用 net/http 模块进行外部 HTTP 调用。Envoy 无法加载 WASM 代码。为什么导入失败?
Envoy/Istio 版本: istio/proxyv2:1.11.4
SDK版本: v0.16.1-0.20220127085108-af57b89bc067
TinyGo版本: tinygo版本0.22.0 darwin/amd64(使用go版本go1.17.6和LLVM版本13.0.0)
2022-01-31T20:34:18.513749Z error envoy wasm Failed to load Wasm module due to a missing import: env.time.resetTimer
2022-01-31T20:34:18.513794Z error envoy wasm Failed to load Wasm module due to a missing import: env.time.stopTimer
2022-01-31T20:34:18.513807Z error envoy wasm Failed to load Wasm module due to a missing import: env.time.startTimer
2022-01-31T20:34:18.513817Z error envoy wasm Failed to load Wasm module due to a missing import: env.sync/atomic.AddInt32 …Run Code Online (Sandbox Code Playgroud) envoyproxy ×10
istio ×6
kubernetes ×4
ansible ×1
go ×1
jwk ×1
jwt ×1
lumen ×1
routing ×1
tinygo ×1
webassembly ×1