使用Traefik和Kubernetes将流量路由到其他命名空间中的服务

Dan*_*n P 5 kubernetes traefik

使用Traefik作为入口控制器(在GCP中的kube集群上)。是否可以创建一个使用来自其他名称空间的后端服务的入口规则?

我们为每个“主要”代码版本都有一个名称空间。

1-service.com-> 1-service.com进入1-service ns-> 1-service svc在同一ns

2-service.com-> 2-service.com进入2-service ns ...,依此类推

我还希望“未转换”名称空间中的另一个入口规则,该规则会将流量路由到主要版本之一。

service.com-> service.com进入“服务” ns-> X-service命名空间中的X-service

我想使用版本化的主机名(1-service.com等)在k8s中将主要版本分开,但仍然有一个“最新”指向最新的发行版。

我相信voyager可以跨命名空间入口-> svc。Traefik可以做同样的事情吗?

小智 3

您可以使用如下解决方法:

  1. ExternalName当您想要创建入口时,在您的命名空间中创建一个具有类型的服务:
apiVersion: v1
kind: Service
metadata:
  name: service-1
  namespace: unversioned
spec:
  type: ExternalName
  externalName: service-1.service-1-ns.svc.cluster.local
  ports:
  - name: http
    port: 8080
    protocol: TCP
Run Code Online (Sandbox Code Playgroud)
  1. 创建一个指向该服务的入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: traefik
  name: ingress-to-other-ns
  namespace: service-1-ns
spec:
  rules:
  - host: latest.example.com
    http:
      paths:
      - backend:
          serviceName: service-1
          servicePort: 8080
        path: /
Run Code Online (Sandbox Code Playgroud)