首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何为AWS ALB将不同的服务映射到相同主机的不同路径?

如何为AWS ALB将不同的服务映射到相同主机的不同路径?
EN

Stack Overflow用户
提问于 2022-08-20 06:09:09
回答 1查看 401关注 0票数 1

我尝试通过Helm图表部署两个服务:

  1. 前端服务(可通过主机访问,并使用NodePort)
  2. 后端服务(只能在集群内访问,并使用ClusterIP)

我在使用AWS的部署中遇到了一个问题,在访问前端服务时它会抛出一个404 Not Found错误。

ingress.yaml

代码语言:javascript
运行
复制
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "metaflow-ui.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- $fullNameStatic := include "metaflow-ui.fullname-static" . -}}
{{- $svcPortStatic := .Values.serviceStatic.port -}}
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: metaflow-ui
  name: {{ $fullName }}
  labels:
    {{- include "metaflow-ui.labels" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
    alb.ingress.kubernetes.io/healthcheck-path: "/api"
    alb.ingress.kubernetes.io/success-codes: "200"
  {{- end }}
spec:
  rules:
  - host: {{ .Values.externalDNS }}
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          serviceName: {{ $fullName }}
          servicePort: {{ $svcPort }}
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: metaflow-ui
  name: {{ $fullName }}
  labels:
    {{- include "metaflow-ui.labels" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/success-codes: "200"
  {{- end }}
spec:
  rules:
  - host: {{ .Values.externalDNS }}
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          serviceName: {{ $fullNameStatic }}
          servicePort: {{ $svcPortStatic }}
---
{{ end }}

这些都是values.yaml下的入侵注释

代码语言:javascript
运行
复制
ingress:
  enabled: true
  className: ""
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/group.name: metaflow-ui
    alb.ingress.kubernetes.io/security-groups: # removed
    alb.ingress.kubernetes.io/listen-ports:  '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/certificate-arn: # removed
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'

我读到,附加一个group.name是允许一个ALB跨多个入侵共享的修补程序,但它没有解决这个问题。如果我要删除第二个入口,整个站点就会被部署(但是没有后端服务)。

编辑:

我发现这篇文章详细介绍了这个精确的应用程序,如何在应用程序负载均衡器上实现基于路径的路由?,将尝试它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-23 05:23:18

我使用以下设置成功地使其工作。而不是每个服务有一个单独的入口,我最终使用了一个单独的group.name,但是保留了这个输入。

代码语言:javascript
运行
复制
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "metaflow-ui.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
{{- $fullNameStatic := include "metaflow-ui.fullname-static" . -}}
{{- $svcPortStatic := .Values.serviceStatic.port -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ $fullName }}
  labels:
    {{- include "metaflow-ui.labels" . | nindent 4 }}
  {{- with .Values.ingress.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/success-codes: "200"
  {{- end }}
spec:
  rules:
  - host: {{ .Values.externalDNS }}
    http:
      paths:
      - path: /api
        pathType: Prefix
        backend:
          service:
            name: {{ $fullName }}
            port:
              number: {{ $svcPort }}
      - path: /
        pathType: Prefix
        backend:
          service:
            name: {{ $fullNameStatic }}
            port:
              number: {{ $svcPortStatic }}
      - path: /
        pathType: Prefix
        backend:
          service:
            name: ssl-redirect
            port:
              name: use-annotation
      - path: /static
        pathType: Prefix
        backend:
          service:
            name: {{ $fullNameStatic }}
            port:
              number: {{ $svcPortStatic }}
{{ end }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73424480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档