我使用 helm 部署了 grafana,现在它在 pod 中运行。如果我将端口 3000 代理到我的笔记本电脑,我就可以访问它。
我试图将域 grafana.something.com
指向该 pod,以便我可以从外部访问它。
我在 route53 中有一个域,我可以将其附加到负载均衡器(应用程序负载均衡器、网络负载均衡器、经典负载均衡器)。该负载均衡器可以将流量从端口 80 转发到端口 80 到一组节点(我们将端口 443 留到以后使用)。
我真的很难设置它。我确定缺少某些东西,但我不知道是什么。
我想象的基本图应该是这样的。
互联网
↓↓
route53 中的域 (grafana.something.com)
↓↓
负载均衡器 80 到 80(应用程序负载均衡器、网络负载均衡器、经典负载均衡器)
我猜 LB 会将流量转发到端口 80 到下面的入口 Controller (在使用 Helm 部署 Grafana 时创建)
↓↓
EKS 工作节点组
↓↓
入口资源??????
↓↓
入口 Controller - 在命名空间测试中使用 Helm 部署 Grafana 时创建。
kubectl get svc grafana -n test
grafana 类型:ClusterIP ClusterIP:10.x.x.x 端口:80/TCP
apiVersion: v1
kind: Service
metadata:
creationTimestamp:
labels:
app: grafana
chart: grafana-
heritage: Tiller
release: grafana-release
name: grafana
namespace: test
resourceVersion: "xxxx"
selfLink:
uid:
spec:
clusterIP: 10.x.x.x
ports:
- name: http
port: 80
protocol: TCP
targetPort: 3000
selector:
app: grafana
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
↓↓
Pod Grafana正在监听3000端口,我代理到我的笔记本3000端口后可以访问成功。
最佳答案
鉴于您似乎没有 Ingress Controller安装,如果你的K8S集群配置了aws cloud-provider,你可以关注this guide使用 Helm 安装 Nginx Ingress Controller 。
在本指南结束时,您应该为入口 Controller 创建了一个负载均衡器,将您的 Route53 记录指向它并创建一个使用您的 grafana 服务的入口。示例:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/app-root: /
nginx.ingress.kubernetes.io/enable-access-log: "true"
name: grafana-ingress
namespace: test
spec:
rules:
- host: grafana.something.com
http:
paths:
- backend:
serviceName: grafana
servicePort: 80
path: /
最终的流量路径是:
Route53 -> ELB -> Ingress -> Service -> Pods
关于amazon-web-services - 如何使用 nginx ingress 将流量从 route53 中的域转发到 pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55705533/