问题标签 [ambassador]
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.
kubernetes-ingress - 大使边缘堆栈映射不起作用
我正在尝试在我的本地 Kubernetes(Docker 桌面集群)中设置大使边缘堆栈。
完成所有部署后,我检查了大使命名空间,一切都按预期工作。此外,我的部署(pod 和服务)正常工作。我已将大使边缘堆栈服务更改为 nodeport,以便我可以在本地访问和测试。另外,我在我的 HOST 文件中添加了 url。
现在,这里是细节。
注意:我使用了上面的 Service: pod.service 形式。
有了这个,我得到了带有http://local.edgestack.com的 edgestack 主页
但如果我输入:local.edgestack.com/apple/ 我会收到 404 错误页面。与 curl 命令相同:
kubernetes - 大使身份验证服务设置
我正在尝试为我的大使 Api 网关设置 AuthService。但是在那个大使吊舱的日志中,我收到了这个错误:
我的身份验证服务:
仅供参考:我有两个集群,第一个集群有两个命名空间大使,大使-p。其他集群有一个具有 my-auth 服务的命名空间。我正在尝试在集群 1 的大使命名空间中部署 authService 类型,它将连接到第二个集群中的 authservice。在命名空间ambassador-p中,ambassador_id 是ambassador_p,但对于Ambassador命名空间,没有大使 ID。这就是为什么我没有在 yaml 配置中指定 Ambassador_id。因此它应该采用default。
我在ambassador-p 命名空间中尝试了同样的事情并且它有效,但它在大使命名空间中不起作用。知道我做错了什么吗?
authentication - 保护应用程序取决于大使
我有一个由大使保护的 rest api 应用程序,我的过滤器要求所有请求在标题中提供用户名和密码。现在我想添加将使用与用户相同的端点的附加服务。由于我的其他服务不充当用户,我可以使用某种 api 密钥对其进行配置以使用大使或 od 我需要创建一个服务帐户并在请求中使用用户名/密码标头吗?
github - 如何在大使边缘 API 网关的 OAuth2 身份验证中使用 GitHub 作为 IdP
我想在使用 OAuth2 的应用程序中使用 GitHub 作为身份验证器。我的应用程序是在 Ambassador Edge API Gateway 下的 Kubernetes 集群中运行的前端。
在https://www.getambassador.io/docs/edge-stack/latest/howtos/oauth-oidc-auth/中有其他提供商的示例,但是当我尝试配置 GitHub 时,我找不到身份验证 URL .
有人使用 GitHub 做过类似的事情吗?
microk8s - microk8s 端口 443 连接拒绝与 metallb 和大使边缘堆栈的错误
我在笔记本电脑上运行 microk8s 系统,使用 metallb 作为负载平衡器,使用大使边缘堆栈作为入口。一切正常,包括一个运行 kubectl 调用的 bash 脚本来设置它并删除它等。
当我尝试将相同的设置安装到我们要用于 QA 的本地服务器上时,就会出现问题。我运行我的脚本,但它在中途失败。microk8s 运行良好,我可以看到 metallb 和 Ambassador 都设置正确(即与我的笔记本电脑上的相同)。但是每个请求都返回“连接到 192.168.50.40 端口 443 失败:连接被拒绝”,这是我的脚本失败的地方。
我认为它可能与路由器有关,因此我在 /etc/hosts 中添加了一个条目,以将消息中的 ip 地址映射到我使用的域名。我可以从服务器上的终端窗口 ping 域名,并得到预期的成功响应。但是,如果我尝试使用 https URL 的 curl 命令,我会收到相同的连接被拒绝错误,这意味着它与外部连接无关。
我的入口只监听 https,而不是 http,但我将其设置为监听 http(端口 80)并尝试过,得到相同的连接被拒绝错误。当我在笔记本电脑上做同样的事情时,它给了我一个成功的响应。
我的笔记本电脑设置和本地服务器之间的区别是:
- 在 metallb 上设置了不同的 IP 地址范围。
- 不同的域名
- 不同的 TLS 证书
所有这些都作为参数传递给设置脚本。本地服务器还具有两个以太网接口,一个在消息中显示,另一个是 192.168.50.50。我注意到 metallb 正在监听第二个,所以我编辑了 kubelet 文件 (/var/snap/microk8s/current/args/kubelet) 以指定正确的地址,重置 microk8s 并验证它现在使用正确的地址。metallb 命令只是
即池中的一个地址。我在我的笔记本电脑上做同样的事情,但地址不同。
但它仍然给我这个错误。我在 metallb 日志和大使日志中看不到任何可能的错误,实际上也没有证据表明请求已达到。我的同事一直在暗示大使配置有问题,但它与工作笔记本电脑版本完全相同(除了上述参数),所以我很难对此保持开放的态度。
我们检查了防火墙规则(尽管我希望内部请求没有触及防火墙)并且它们很好,让 443 的所有内容都通过。但是有些东西在某处阻止了 443 请求。有人知道我接下来应该看什么吗?谢谢你的帮助。
更新:我提到问题机器上有两个接口:192.168.50.40和192.168.50.50。我们一直在尝试使用第一个,但今天早上我们切换到使用第二个。突然间一切正常。似乎 microk8s 中的某些东西真的只喜欢其中一个接口,现在的问题是为什么。
版本(两种环境相同): 操作系统:Ubuntu 20.04.3 LTS microk8s:1.22 metallb:0.9.3 Ambassador:2.0.5
kubernetes - 生成新证书时,Ambassador Edge Stack 是否与现有 TCP 连接执行 TLS 重新协商?
标题是主要问题。如果我有一个长期存在的 TCP 连接并且大使识别出需要使用新的 TLS 证书(即来自证书管理器自动轮换) - 大使会自动执行 TLS 重新协商吗?还是我需要关闭任何连接?
kubernetes - 在 GKE 上安装 Clean Ambassador Edge Stack 失败并解析 DNS
我们正在测试 Ambassador Edge Stack,并开始使用处于自动驾驶模式的全新 GKE 私有集群。
我们按照快速入门教程从头开始安装以了解它并最终出现以下错误
我们进行了几轮 DNS 测试,并在不同的命名空间中部署了几个不同的测试 pod,以验证 kube-dns 是否正常工作,一切看起来都很好。resolv.conf 看起来也不错。
大使正在使用emissary-apiext.emissary-system.svc:443
应该可以正常解析的主机名(没有 cluster.local)。顺便说一句,使用 FQN(使用 cluster.local)进行查找效果很好。
有什么线索吗?
非常感谢,保重。
kubernetes - 在使者中实施 authservice 后出现错误 403
我已经在 kubernetes 上实现了 emissary ingress 并实现了部署、服务和映射。
下面的映射已在使者中创建
此时,当我运行 curl 命令时,它工作正常。
但是,一旦我在使者入口中实现了身份验证服务,它就开始给出 403 错误代码
我检查了所有地图和服务,还检查了互联网的解决方案,但没有得到解决。
我还实现了与下面链接中提到的相同的配置。
https://www.getambassador.io/docs/emissary/
仔细检查一下,我的映射是正确的,我尝试使用 bypass_auth 标志绕过身份验证,它开始提供 200 代码。
需要您的支持来解决 403 错误代码。
kubernetes - acme: 错误 -> 一个或多个域有问题
我试图弄清楚如何在 Kubernetes 上设置大使,但我遇到了一些问题。
我们的应用程序托管在 DogitalOcean 上,我们正在尝试充分利用他们的资源。他们有一个很好的入门工具包来启动和运行环境。我坚持的部分是设置入口控制器。我们为此选择了大使,以下是与之相关的文档:https ://github.com/digitalocean/Kubernetes-Starter-Kit-Developers/blob/main/03-setup-ingress-controller/ambassador.md#step -2---为大使边缘堆栈定义主机
我安装了大使本身没有问题(几乎)。接下来是设置主机。
这是我的主机文件:
注意:文档提到主机名必须可以从 Internet 访问,并且确实如此。
应用更改并描述主机后,我收到以下错误:
现在,深入研究文档,我试图了解什么是HTTP-01 Challenge。事实上,这种端点在当前服务器上是不存在的。
我很困惑,需要做什么才能使其工作?
kubernetes - 使用 Ambassador 迁移到 Kubernetes 后,API 调用出现 504 错误
我们应用程序的后端 (API) 建立在 Grails 5.1.1 之上,并且已经在 DiginalOcean 上运行了好几年。我们现在正在尝试将基础架构迁移到 Kubernetes(也在 DO 上)。对于入口控制器,我们使用了 Ambassador Edge Stack(出于各种原因)。
现在,整个集群都已启动并运行,只是我们遇到了 CORS 问题。
注意:通过常规的 LoadBalancer(甚至是相同的图像),完全相同的代码库在 DO 上运行没有问题。
当我们将 API 切换到 Kubernetes 集群时,我们会收到缺少 CORS 标头的错误。
在细节之前,有一点历史......
起初,OPTIONS
请求被拒绝,因为显然 spring-security 拒绝了这些请求。出于某种原因,我们只有在切换到 Kubernetes 时才会遇到这个问题。
我们通过添加另一个过滤器来解决这个问题(拦截器不适用于这种情况,因为它们在安全过滤器之后执行)......
铜过滤器
添加到resource.groovy
:
并注册BootStrap.groovy
:
之后,OPTIONS
请求开始按预期工作。顺便说一句,内置的 cors 过滤器仍然处于启用状态。我们可以在这一点上从技术上删除它。
一旦解决了这个问题,我们现在将面临下一个挑战。实际的 API 调用不返回 CORS 标头。
更多细节
就目前的环境而言。 带有托管 LoadBalancer 的 DO 上的 Docker 液滴。
如您所见,CORS 标头都适用于两者。一切都很幸福。
在 Kubernetes 上与大使 字面意思是相同的 docker 镜像。
大使地图:
注意:即使我完全删除cors
配置,我仍然面临同样的问题。