首页 文章

Kubernetes服务指向外部资源

提问于
浏览
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 时,我得到了一个带有身体"Service Unavailable"的503 . example.com/login 按预期工作

我错过了什么?

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 .

相关问题