问题标签 [servicemesh]

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.

0 投票
1 回答
851 浏览

kubernetes - 如何在 kubernetes 中调试与 istio 的 mTLS 通信?

我是 Istio 的新手,因此这可能是一个简单的问题,但我对 Istio 有一些困惑。我正在为 k8s 使用 Istio 1.8.0 和 1.19。很抱歉有多个问题,但如果你能帮助我澄清最佳方法,我将不胜感激.

  1. 注入 Istio 后,我想我无法直接在 pod 内访问服务,但正如您在下面看到的,我可以。也许我有误解,但这是预期的行为吗?同时,如何调试服务是否通过特使代理与 mTLS 相互通信?我正在使用STRICT模式,我应该在运行微服务的命名空间中部署对等身份验证以避免这种情况吗?

  2. 如何限制流量让我们说 api-dev 服务不应该访问 auth-dev 但可以访问后端开发?

  3. 一些微服务需要与也在database命名空间中运行的数据库进行通信。我们还有一些我们不想注入 istio 的也使用相同的数据库?那么,数据库是否也应该部署在我们进行 istio 注入的同一个命名空间中?如果是,那是否意味着我需要为其余服务部署另一个数据库实例?


0 投票
1 回答
232 浏览

kubernetes - 关于Kubernetes中Consul Ingress-Gateway的问题

我希望在我的 Kubernetes 集群中设置一个领事服务网格,并且需要启用入口网关。我的计划是将入口网关作为 ClusterIP 服务和 Kubernetes 入口(Nginx 入口)运行以将流量引导到该入口。我一直在阅读 Consul.io 上有关 Ingress Gateway 的教程,并且对某些事情感到困惑。掌舵图有一个gateways:带有名称的列表。

  • helm chart 构建的服务名称是否必须与 ingress 的 consul 配置匹配(减去 helm 应用的前缀)?

  • 如果不必匹配,我可以在同一个端口上设置多个领事入口网关吗?

例子:

0 投票
0 回答
100 浏览

nginx - https 重定向到 http,然后重定向到 https

我有一个在 EKS 内运行的应用程序。Istio 用作 ServiceMesh。我在将 https 重定向到 http 然后再重定向到 https 时遇到一些问题。看起来问题出在 istio 虚拟服务上,它会暂时切换到我想要阻止的 http。

卷曲输出

这就是我们安装 istio 的方式 [安装的版本是 1.5.1]

这是我们的虚拟服务。集群包含两个部署:

  1. 我的应用程序前端
  2. myapps-api

下面是前端应用 yaml 部署。

我们的网关配置如下:

0 投票
0 回答
107 浏览

kubernetes - Consul 终止网关 - caFile

我在 AWS 上的 Kuberntes 集群中使用 Consul,并尝试将我的终止网关迁移到 AWS RDS 实例以在上游服务上使用 TLS 验证。

对于非 TLS 验证的配置,我有以下效果很好

但是,如果我改为

尝试连接到数据库时出现一般连接错误。我还需要做些什么来启用 consul 和外部 RDS 服务之间的 TLS 验证吗?

PS我下载了RDS组合CA文件,并在集群中的每个节点上放了一份副本在以下路径/etc/ssl/rds.pem

0 投票
2 回答
421 浏览

kubernetes - Kubernetes - Service Mesh 是必须的吗?

最近我用 Nginx 入口控制器在 k8s 集群中构建了几个微服务,它们工作正常。

在处理微服务之间的通信时,我尝试了 gRPC,它成功了。然后我发现当微服务 A -> gRPC -> 微服务 B 时,所有请求只发生在微服务 B 的 1 个 pod 上(例如,微服务 B 总共有 10 个 pod 可用)。为了对微服务 B 的所有 pod 的请求进行负载平衡,我尝试了 linkerd,它成功了。但是,我意识到 gRPC 有时会产生内部错误(例如 100 个请求中的 1 个错误),使我改用 k8s DNS 方式(例如 my-svc.my-namespace.svc.cluster-domain.example)。然后,请求永远不会失败。我开始支持 gRPC 和 linkerd。

后来,我对 istio 产生了兴趣。我成功地将它部署到集群中。但是,我观察到它总是创建自己的负载均衡器,这与现有的 Nginx 入口控制器不太匹配。

此外,我尝试了 prometheus 和 grafana,以及 k9s。这些工具让我更好地了解 Pod 的 CPU 和内存使用情况。

在这里,我有几个问题想了解:-

  1. 如果我需要监控集群资源,我们有prometheus、grafana和k9s。它们是否与服务网格(例如 linkerd、istio)具有相同的监控作用?
  2. 如果 k8s DNS 已经可以实现负载均衡,那我们还需要 Service Mesh 吗?
  3. 如果使用没有服务网格的 k8s,是否落后于正常做法?

其实我也想每天都用服务网格。

0 投票
0 回答
33 浏览

kubernetes - 使用 ServiceMesh 进行物理安全配置

简介

Istio 等服务网格产品使用软件方法来提供强大的网络控制能力。您不仅可以完全控制网格内部,还可以完全控制从外部到网格内部的通信以及从网格内部到外部的通信。

从应用程序来看,这些完全是基础设施环境,但反过来,从节点等 VM 级别来看,它们是应用程序环境。

问题

我的问题是,一般来说,应该如何为虚拟机和节点等纯物理层配置网络安全?

以 Istio 为例,服务之间的通信是通过作为 Sidecar 插入的 Envoy 代理进行的。这种通信可以跨越节点。来自网格外部的通信使用网关进行控制。可以控制使用的端口和协议。

理想情况下,VM 和节点级别的网络设置应该对网格内部(Envoy 用于内部通信的端口是自动分配的,我不想控制它们)和网格外部的通信广泛开放。我了解您只需要配置所需的通信即可。

然而,这些可能是一个重大的管理负担。

0 投票
0 回答
299 浏览

traefik - 使用 Argocd rollout 和 Service Mesh Interface (Traefik Mesh) 的 Canary 部署策略

在此处输入图像描述

我正在研究 Canary 部署策略。安装trafik 网格后,我使用服务网格接口。第一次使用命令启动程序时

它应该部署整个应用程序,即 4 个副本,但它只部署了应用程序的 20%(1 个副本),并且它进入了进度状态并出现错误:

TrafficRoutingErro: the server could not find the requested resource (post trafficsplits.splits.smi-spec.io) TrafficSplitNotCreated: Unable to create traffic Split 'demo-traefficsplit'

这是我的清单:

argocd-rollout.yaml

applications.yaml

0 投票
1 回答
21 浏览

microservices - Linkerd 代理指标重置

晚上好,

我是罗马 Tor Vergata 大学的学生。我目前正在撰写涉及 Linkerd 使用的硕士论文。这篇论文非常简单,是关于为微服务架构实现一个完全分布式的根本原因定位系统。在指标收集阶段,我遇到了 Linkerd 的问题,因为我没有使用 Prometheus,而是通过 /metrics 端点手动从代理中抓取指标。我不明白 Linkerd 的代理如何或何时重置他们收集的各种指标。有人知道他们有没有计时器吗?或者有没有办法让他们在抓取后重置指标?

提前感谢任何人会给我的任何帮助。

0 投票
0 回答
46 浏览

linkerd - LinkerD Cert Rotation 未在文档中明确描述

我最近开始使用 LinkerD 并尝试在集群上设置它。我面临的问题是证书轮换。LinkerD 文档没有详细说明如何使用颁发者证书为代理请求生成 CSR 的过程,也没有提到如何使用证书管理器来存储颁发者证书。

如果我没有遗漏任何东西,您能否指点我完全阐述相同内容的文档?

另外,我想澄清一下,如果我们只是生成根证书和中间证书,然后使用它注入它,那么它--identity-trust-anchors-file--identity-issuer-certificate-file起作用吗,或者我们需要专门找到如何轮换证书。

我可能在错误的频道上发帖,但缺乏文档导致我提出上述问题。

0 投票
1 回答
372 浏览

kubernetes - 如何在 Kubernetes 中实现带有粘性会话的 Canary 发布?

我使用了许多解决方案,例如 Istio、spinnaker 等,但它们没有提供执行 Canary 发布(加权路由)的方法,也没有应用会话亲和性来坚持特定的 pod。

可以实现 Canary 特性,也可以自己实现会话亲和性(sticky session),但是由于 envoy 代理的限制,我们无法实现两者的结合。

是否有任何解决方案可以为 Kubernetes 提供具有会话亲和性功能的 Canary 版本?