我使用头盔部署了grafana,现在它在pod中运行。如果将端口3000代理到笔记本电脑,则可以访问它。
我试图将域grafana.something.com
指向该吊舱,以便我可以从外部访问它。
我在route53中有一个域,可以将其附加到负载均衡器(应用程序负载均衡器,网络负载均衡器,经典负载均衡器)。该负载平衡器可以将流量从端口80转发到端口80到一组节点(让端口443留待以后使用)。
我真的很努力进行此设置。我确定有些东西丢失了,但我不知道是什么。
我想像的基本图看起来像这样。
Internet
↓↓
route53中的域(grafana.something.com)
↓↓
负载均衡器80到80(应用程序负载均衡器,网络负载均衡器,经典负载均衡器)
我猜想LB会将流量转发到端口80到下面的入口控制器(使用Helm部署Grafana时创建)
↓↓
EKS工作节点组
↓↓
入口资源?????
↓↓
入口控制器-在命名空间测试中使用Helm部署Grafana时创建。
kubectl get svc grafana -n test
grafana Type:ClusterIP ClusterIP:10.x.x.x Port: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后,我可以成功访问它。
答案 0 :(得分:3)
鉴于您似乎没有安装Ingress Controller,如果您在K8S集群中配置了AWS云提供商,则可以按照this guide使用Helm安装Nginx Ingress控制器。
在指南结尾处,您应该为入口控制器创建一个负载平衡器,将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