docker - 如何在 Kuberenetes (GKE) 中为身份验证和负载平衡添加反向代理?
问题描述
好的,我有一个由部署到 GKE 的多个节点组成的数据库。
deployment.yaml 将每个节点添加为 ClusterIP,这是有道理的。这是完整的部署文件:
https://github.com/dgraph-io/dgraph/blob/master/contrib/config/kubernetes/dgraph-ha/dgraph-ha.yaml
无论出于何种原因,数据库的安全功能为零,因此我不能使用 LoadBalancer 服务公开任何部分,因为这样做会给整个数据库带来不安全的访问。供应商辩称,安全性完全是用户的问题。AlphaNode 带有一个 API 端点,它也是不安全的,但我实际上想从外部 IP 连接到该 API 端点。
因此,我能做的最好的事情就是添加一个 NGNIX 作为具有身份验证的(反向)代理,以保护对 Alpha 节点的 API 端点的访问。实际上,我有三个 alpha 节点,因此添加负载平衡是有意义的。我在 Docker Compose 中找到了一个对三个 alpha 节点进行负载平衡的配置,但没有进行身份验证:
https://gist.github.com/MichelDiz/42954e321620159c872c35c20e9d85c6
现在,我遇到的价值百万美元的问题是,如何向 Kubernetes 添加 NGNIX 负载平衡,以对传入 (ClusterIP) alpha 节点的传入流量进行身份验证和负载平衡?
任何指针?有什么帮助吗?
解决方案
如果你想这样做,你可以部署自己的 nginx 部署并将其公开为LoadBalancer Service
. 您可以使用 nginx 支持的不同身份验证机制对其进行配置。
相反,您可以使用支持身份验证Ingress
的资源。IngressController
检查您的 kubernetes 发行版是否提供IngressController
以及是否支持身份验证。如果没有,您可以安装支持身份验证的nginx或Traefik IngressControllers。
看起来 GKE 入口最近增加了对基于 IAP 的身份验证的支持,该身份验证仍处于测试阶段 - https://cloud.google.com/iap/docs/enabling-kubernetes-howto
如果您正在寻找更传统的入口身份验证类型,请安装 nginx 或 traefik 并使用kubernetes.io/ingress.class
注释,以便只有 IngressController 声明您的入口资源 - https://kubernetes.github.io/ingress-nginx/user-guide/multiple-入口/
推荐阅读
- android - kotlin 中的烧瓶 + 改造无法使用 IP 地址访问 API 端点(无法连接到 /127.0.0.1:5000)
- python - AttributeError:无法获取属性“video_dataset”
- parsing - 使用 >>= 表示基本数字解析器
- python - 如何将 Django 应用模块中的 url 添加到我的主 urls.py 中?
- azure-functions - 未针对 Azure Functions 触发事件网格触发器
- ios - 如何在以编程方式添加的 UIView 内以编程方式创建 UITextView?
- python - 顺序应用数据集中较小批次的代码
- java - java.lang.IllegalArgumentException: bound 必须是正数(java.util.concurrent.ThreadLocalRandom.nextInt(Unknown Source) ~[?:1.8.0_301])
- azure - Azure 日志流页面返回 CORS 错误并永久连接
- xampp - 在 XAMPP 服务器中使用letsencrypt 安装SSL 证书