问题标签 [istio-sidecar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
istio - 通过 Kubernetes 服务的域名配置到外部 HTTPS 代理(Squid)的流量
我已经关注了使用外部 HTTPS 代理的整个主题,指出它是基于 VIP 的示例,而不是 k8s 服务方法。但在我的情况下,Squid 可以通过 k8s 服务访问,我想使用 FQDN 而不是 VIP 地址。
我已经更改了配置删除addresses
部分:
Squid Istio 服务入口:
external
ns中的网格外部 Squid 部件:
鱿鱼荚:
鱿鱼k8s服务:
来自硬币的冰壶sleep
:
在 sleep sidecar 上给出结果:
其中 192.168.101.185 是 squid 服务 IP。
Envoy 报错说没有路由,但是找到了服务。缺少什么,出了什么问题?我感谢任何帮助或建议。
kubernetes - 使用 ISTIO 从客户端证书中提取信息
我计划使用 ISTIO 来实现服务网格并在服务之间使用 mTLS。
一些服务需要一些关于客户端的信息,比如来自客户端证书的 CN。
如何配置 ISTIO 从客户端证书中提取 CN 并将其插入自定义标头?
istio - envoy lua 过滤器 - envoy_on_response() 方法的授权标头
我有一个特使 lua 过滤器来拦截上游响应并从 lua 过滤器的“envoy_on_response”方法调用外部 api。我需要 envoy_on_response()" 协程中 request_handle 的 "授权" 值并将其传递给外部 api 调用。我目前正在做如下:
在特使文档中的某些地方,提到“envoy_on_request()”和“envoy_on_response()”都被称为协同程序,它们之间不应共享任何内容。所以,我的问题是,在“envoy_on_response()”中获取和传递“授权”标头的正确方法是什么?
谢谢。
java - 作为 Pod 工作的 Java 容器不在 Job 中工作
我正在尝试使用包含 Java 工具的容器在 Kubernetes 作业中对 MySQL 数据库进行一些数据库迁移。
当我在 Docker 中本地运行容器时(使用同一网络中的 MySQL 容器),该工具按预期运行。如果我使用容器创建一个 Pod 并将命令参数设置为指向mysql
在同一命名空间中运行的服务,它也可以。
但是,如果我将该 Pod 规范转换为作业,则创建的容器由于某种原因无法再连接到 MySQL 服务。
该容器基于amazoncorretto:8-al2-jdk
JAR 并将其复制到/opt/
.
MySQL DB 可通过mysql
集群中的服务获得:
这些是 Pod 的规格:
将容器作为 Pod 运行:
这些是作业的规格:
将容器作为作业运行:
我没有看到正在创建的容器有任何显着差异。我唯一能想到的是某种字符编码问题,但我不明白为什么这只发生在为 Job 创建的 Pod 而不是直接创建的 Pod 中。
提前感谢您对此问题的任何帮助!
编辑:我忘了提到 Istio 在命名空间上处于活动状态,结果证明是导致问题的原因。
kubernetes - 启用 istio 时无法创建 redis 集群
命令执行“redis-cli --cluster create --cluster-yes --cluster-replicas 1 ...”没有成功。根据我的研究,它似乎与以下内容有关: https ://github.com/istio/istio/issues/5453
kubernetes - Istio-在路由前检查另一台主机
我想配置 istio gateways 虚拟服务以在将请求路由到某些主机之前检查“auth-service”主机。有什么选项可以配置这个吗?
kubernetes - 传出集群流量的 SSL 证书验证错误
错误描述
x.cmp.net/doc.pdf
我的集群使用 Istio 和部署在网格中的服务 (java) 之一需要使用 http 和 443 端口连接到外部资源。此外部资源使用带有主题的受信任通配符证书 (DigiCert)*.cmp.net
和cmp.net
. 当我尝试使用 openssl 验证(从应用程序容器)ssl 证书时,我正在获取Google 证书(?? istio 证书?):
应用程序是用java编写的,当应用程序尝试下载资源时:
我的配置:
我也有阻塞模式:
版本
附加信息
没有反应
go - 在 go 中解组嵌套的 GRPC 结构
我们想要解组(在 golang 中)一个 GRPC 消息并将其转换为 amap[string]interface{}
以进一步处理它。使用此代码后:
我们得到以下结构:
字段TypedConfig
保持编码的位置。我们如何解码这个TypedConfig
领域?我们知道type_url
并且我们知道value
,但是要解组该字段,它必须是pbany.Any
类型。但是因为TypedConfig
结构是 a map[string] interface {}
,所以我们的程序要么编译失败,要么崩溃,抱怨它期待一个pbany.Any
类型,但它却得到了一个map[string] interface {}
.
我们有以下问题:
- 有没有办法将结构
TypedConfig
转换pbany.Any
为随后可以解组的类型? - 有没有办法递归解组整个 GRPC 消息?
编辑(提供有关使用的代码、模式/包的更多信息)
我们正在查看xds_proxy.go
这里的代码:https ://github.com/istio/istio/blob/master/pkg/istio-agent/xds_proxy.go
此代码*discovery.DiscoveryResponse
在此函数中使用了一个结构:
discovery.DiscoveryResponse
(以及代码中使用的所有其他结构)的 protobuf 模式位于此文件的https://github.com/envoyproxy/go-control-plane/存储库中: https ://github.com/envoyproxy/go-控制平面/blob/main/envoy/service/discovery/v3/discovery.pb.go
我们在forwardToEnvoy
函数中添加了代码来查看结构的整个未编组的内容*discovery.DiscoveryResponse
:
这很好用,除了现在我们有这些TypedConfig
仍然编码的字段:
可视化TypedConfig
字段内容的一种方法是使用以下代码:
但是代码变得非常复杂,因为我们有大量的结构,并且这些结构可以在消息中以不同的顺序出现。因此,我们希望通过使用来获得一种通用的方式来解组这些TypedConfig
消息pbAny
,从而解决我们的问题。