创建ingress.yml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: argo-rollouts
  name: argo-rollout-ingress
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/backend-protocol: HTTP
    alb.ingress.kubernetes.io/group.name: my-team.awesome-group
    alb.ingress.kubernetes.io/group.order: '10'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/success-codes: '200'
    alb.ingress.kubernetes.io/healthcheck-path: /rollouts
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/certificate-arn: '去aws证书管理那边复制你的相关证书信息'
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
spec:
  rules:
    - host: argo-rollout-intl.lavamusic.com
      http:
        paths:
        - path: /*
          backend:
            service:
              name: argo-rollouts-dashboard
              port:
                number: 3100
          pathType: ImplementationSpecific

这是一个 Kubernetes 中的 Ingress 配置文件,用于将外部的 HTTP/HTTPS 请求导入到集群内部的服务中。

metadata 中包含了该 Ingress 对象的元数据信息,如命名空间、名称和注释等。 annotations 中定义了该 Ingress 对象的一些额外属性,如使用的负载均衡器、证书信息、监听端口等。

spec 中定义了该 Ingress 对象的具体配置信息: rules 下定义了针对哪个域名(host)的请求会被处理,并且指定了该域名下的路径(path)对应的后端服务。 backend 中定义了后端服务的相关信息,包括名称、端口号等。

具体来说,这个配置文件中的注释和属性含义如下:

pathType: ImplementationSpecific 意味着路径类型会根据使用的 Kubernetes 集群的不同而具有不同的实现。这个属性定义了 Ingress 中 path 字段的匹配方式,它可以设置为三种值:Exact, PrefixImplementationSpecific

  • Exact 表示请求的路径必须与配置的路径完全匹配;
  • Prefix 表示请求的路径必须以配置的路径为前缀;
  • ImplementationSpecific 表示路径匹配方式由集群的实现决定。

当设置为 ImplementationSpecific 时,Kubernetes 将根据底层网络设施和 Ingress 控制器的实现来确定路径的匹配方式。具体来说,Ingress 控制器可以选择使用 ExactPrefix 或其他匹配方式来匹配请求的路径。

因此,当您在编写 Ingress 对象时将 pathType 设置为 ImplementationSpecific,需要确保您的 Ingress 控制器支持该选项,并且理解其匹配行为是由控制器实现决定的。


可参考:

https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/ingress/annotations/