如何使用 nginx ingress 将流量从 Route53 中的域转发到 pod?

tr5*_*r53 2 nginx amazon-web-services amazon-route53 grafana kubernetes

我使用 helm 部署了 grafana,现在它正在 pod 中运行。如果我将端口 3000 代理到我的笔记本电脑,我就可以访问它。\n我尝试将一个域grafana.something.com指向该 Pod,以便可以从外部访问它。\n我在 Route53 中有一个域,可以将其附加到负载均衡器(应用程序负载均衡器、网络负载均衡器、经典负载均衡器)。该负载均衡器可以将流量从端口 80 转发到端口 80 到一组节点(让我们稍后保留端口 443)。\n我真的很难设置此功能。我确信缺少了一些东西,但我不知道是什么。

\n\n

我想象的基本图是这样的。

\n\n

互联网
\n\xe2\x86\x93\xe2\x86\x93
\nroute53 中的域 (grafana.something.com)\n \
n\xe2\x86\x93\xe2\x86\x93
\n负载均衡器 80 到 80 (应用程序负载均衡器、网络负载均衡器、经典负载均衡器)\n我猜测 LB 会将端口 80 的流量转发到以下入口控制器(使用 Helm 部署 Grafana 时创建)\n
\n\xe2\x86\x93\xe2\x86\ x93
\nEKS 工作节点组
\n\xe2\x86\x93\xe2\x86\x93
\n入口资源 ??????
\n\xe2\x86\x93\xe2\x86\x93
\n入口控制器 - 在命名空间测试中使用 Helm 部署 Grafana 时创建。

\n\n

kubectl get svc grafana -n test

\n\n

grafana Type:ClusterIP ClusterIP:10.x.x.x Port:80/TCP

\n\n
apiVersion: v1\nkind: Service\nmetadata:\n  creationTimestamp: \n  labels:\n    app: grafana\n    chart: grafana-\n    heritage: Tiller\n    release: grafana-release\n  name: grafana\n  namespace: test\n  resourceVersion: "xxxx"\n  selfLink: \n  uid: \nspec:\n  clusterIP: 10.x.x.x\n  ports:\n  - name: http\n    port: 80\n    protocol: TCP\n    targetPort: 3000\n  selector:\n    app: grafana\n  sessionAffinity: None\n  type: ClusterIP\nstatus:\n  loadBalancer: {}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x86\x93\xe2\x86\x93
\nPod Grafana 正在侦听端口 3000。代理到我的笔记本电脑端口 3000 后,我可以成功访问它。

\n

Est*_*cia 5

鉴于您似乎没有安装Ingress 控制器,如果您在 K8S 集群中配置了 aws cloud-provider,则可以按照本指南使用 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: /
Run Code Online (Sandbox Code Playgroud)

最终的流量路径将是:

Route53 -> ELB -> Ingress -> Service -> Pods
Run Code Online (Sandbox Code Playgroud)