gpt4 book ai didi

Kubernetes ALB 入口 : How to expose multiple ports on ingress resource

转载 作者:行者123 更新时间:2023-12-02 11:32:12 24 4
gpt4 key购买 nike

我正在尝试为这个看起来很常见的问题找到解决方案。

  • 我有一个 k8s 集群 ip 服务,它暴露了两个端口:8088 和 60004
  • 我想在 ALB 上公开这些相同的端口,而不使用基于路径的路由

  • 这适用于在 8088 端口上公开一项服务:
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: myingress
    namespace: myns
    annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/healthcheck-path: /ping
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 8088}]'
    spec:
    rules:
    - host: myhost
    http:
    paths:
    - path: /*
    backend:
    serviceName: firstservice
    servicePort: 8088

    如何使用 ONE Ingress 为两种服务实现相同的目标?

    提前致谢。

    最佳答案

    最后,为了解决这个问题,我使用了 ALB 入口 Controller 组功能,该功能目前处于 alpha 状态:https://github.com/kubernetes-sigs/aws-alb-ingress-controller/issues/914

    这是我的入口资源现在的样子:

    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: myingress_1
    namespace: myns
    annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/group.name: mygroup
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 8088}]'
    spec:
    rules:
    - host: <HOST>
    http:
    paths:
    - path: /*
    backend:
    serviceName: myservice
    servicePort: 8088
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
    name: myingress_2
    namespace: myns
    annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/group.name: mygroup
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 60004}]'
    spec:
    rules:
    - host: <HOST>
    http:
    paths:
    - path: /*
    backend:
    serviceName: myservice
    servicePort: 60004

    关键在哪里
    alb.ingress.kubernetes.io/group.name: mygroup

    连接这两个入口资源。

    因此,我最终得到以下结果:
  • 在 k8s 中具有多个(两个)端口的服务暴露在两个单独的入口
    资源,但它们都指向同一个 AWS ALB(因为同一个组
    姓名)
  • 在 AWS ALB 方面,我得到一个 ALB,其中公开了两个端口:8088 和
    60004 并且每个都指向相同的 k8s 服务,但是
    同一个 pod 上的不同端口(这很容易是两个不同的 k8s 服务
    如果需要)
  • 关于Kubernetes ALB 入口 : How to expose multiple ports on ingress resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58065884/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com