Kubernetes服务指向外部资源

问题描述 投票:1回答:1

我们有一个现有的网站,比方说example.com,这是where.my.server.really.is.com的CNAME。

我们现在正在使用Kubernetes开发新服务。我们的第一个服务/login已准备好部署。使用模拟HTML服务器,我已经能够部署两个具有映射到example.comexample.com/login的单独服务的pod。

我想要做的是摆脱我的模拟HTML服务器,并在集群内部提供一个服务,指向服务器外部的完整网站。然后我可以将example.com的DNS更改为指向我们的kubernetes集群,人们仍将从where.my.server.really.is.com获得主站点。

我们正在使用Traefik进行入口,这些是我对网站配置所做的更改:

---
kind: Service
apiVersion: v1
metadata:
  name: wordpress
spec:
  type: ExternalName
  externalName: where.my.server.really.is.com

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: wordpress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  backend:
    serviceName: wordpress
    servicePort: 80
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          serviceName: wordpress
          servicePort: 80

不幸的是,当我访问example.com,而不是获得where.my.server.really.is.com,我得到一个503身体“服务不可用”。 example.com/login按预期工作

我错过了什么?

kubernetes traefik
1个回答
0
投票

关注traefik documentation on using ExternalName

指定ExternalName时,Træfik会相应地将请求转发给给定主机,并在服务端口与443匹配时使用HTTPS。

这仍然需要在服务上从Ingress端口到(外部)服务端口设置正确的端口映射。

我相信你错过了服务的ports配置。就像是

apiVersion: v1
kind: Service
metadata:
  name: wordpress
spec:
  ports:
  - name: http
    port: 80
  type: ExternalName
  externalName: where.my.server.really.is.com

你可以看到a full example in the docs

© www.soinside.com 2019 - 2024. All rights reserved.