我刚刚开始使用 Rancher,并请求纠正我任何错误的术语。
早些时候,我在 Macbook 上使用 minikube,它提供了 SSH,可以轻松用于minikube ssh故障排除。因为我是 Rancher Desktop 的新手,并且想在 Rancher Desktop 节点上进行类似于 minikube 的 SSH。
我用谷歌搜索了同样的内容,但不幸的是我没有得到任何有效的答案。提前致谢。
我正在使用 istio 并在路径“/”和“/app”上运行服务,“/”和“/app”都将提供同一页面。为了实现这一点,我将“/app”上的重写规则添加到“/”,并且效果很好。
但是当我尝试点击“/app/login”时,重写不提供页面“/login”。
- match:
- uri:
prefix: /app
rewrite:
uri: /
route:
- destination:
host: app-svc
port:
number: 8000
Run Code Online (Sandbox Code Playgroud) 我已经在 Kubernetes 上部署了一个应用程序并使用 Istio 服务网格公开。应用程序中有 2 个组件,UI 和 API。我正在尝试设置基于 Canary 的设置以启用 AB 测试。因此,对于这 2 个组件,部署了 2 个版本(v1 和 v2),因此(最少)4 个 pod 正在运行。
假设 v1 是稳定的,v2 是发布版本。v1 版将服务于真实的互联网流量,v2 版将服务于来自特定 ip 地址的请求,以确保 v2 版的升级不会影响实际生产环境。有关应用程序中交通流量的清晰度,请参阅附图。
通过使用 virtualService 过滤用户的真实客户端 IP 地址,UI V2(发布版本)的测试非常容易-
- headers:
x-forwarded-for:
regex: .*1.2.3.4.*
Run Code Online (Sandbox Code Playgroud)
API v2(发布版本)的测试很复杂,因为它没有暴露在互联网上,并且只能在内部提供来自 UI v2(发布版本)的流量,但我无法做到。
url = "http://service-api"
hdr = { 'CALLER_POD' : 'ui_v2_pod_hostname_with_release' }
req = urllib.request.Request(url, headers=hdr)
response = urllib.request.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
我在应用程序中应用的一个技巧,在从 UI v2 pod 调用 API 时添加了自定义 http 请求标头"CALLER_POD",以便 API virtualService 可以根据"CALLER_POD"过滤掉请求。但它看起来更复杂,因为它需要在更广泛的层面上进行代码重构,并且如果发生任何变化,将来更易于人为管理。 …
kubernetes google-kubernetes-engine kubernetes-helm istio amazon-eks