首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Traefik Kubernetes:公开非Kubernetes服务

Traefik Kubernetes:公开非Kubernetes服务
EN

Stack Overflow用户
提问于 2018-09-17 01:33:09
回答 3查看 303关注 0票数 1

我使用Kubernetes和Traefik作为入口控制器。我的网络中有一些web服务还不能被容器化。因此,我正在寻找一种方法来通过Traefik Ingress公开我的非Kubernetes web服务。我没有更多的公网IP,所以不能同时拆分这两个环境。

我已经创建了一个端点+服务来解决这个问题,但是当我尝试连接时,我得到了一个SSL协议错误。是我做错了什么,还是有人有其他的解决方案?

这些是我的(测试)端点和服务yaml:

代码语言:javascript
复制
kind: Endpoints
apiVersion: v1
metadata:
  name: my-service
subsets:
  - addresses:
      - ip: 10.4.0.6
    ports:
      - port: 443
---
kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  ports:
  - protocol: TCP
    port: 443
    name: https
    targetPort: 443
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: host.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: my-service
          servicePort: 443
EN

回答 3

Stack Overflow用户

发布于 2018-09-17 01:38:02

对于初学者来说,我敢打赌,当您使用kubectl describe svc my-service时,即使端点确实存在,您的端点也是空的,对吧?

要解决这个问题,您需要调整您的端点ports密钥,使其具有与您的服务相同的端口定义(名称、协议等)。然后,您应该可以在describe service结果中看到这些端点,并能够正常使用它。

票数 2
EN

Stack Overflow用户

发布于 2018-09-17 18:05:03

关于这个问题,我们有多个问题。首先,我使用helm部署了Traefik。我发现SSL在默认情况下是禁用的...

我的values.yaml如下:

代码语言:javascript
复制
imageTag: 1.6.6
rbac:
  enabled: true
dashboard:
  enabled: true
  domain: traefik.dahsboard.local
ssl:
  enabled: true
  insecureSkipVerify: true
  upstream: true

正如Radek提到的,端点和服务的端口定义必须相同。

我的是:

代码语言:javascript
复制
kind: Service
apiVersion: v1
metadata:
  name: my-service
spec:
  ports:
  - protocol: TCP
    port: 443
    targetPort: 443
    name: https
---
kind: Endpoints
apiVersion: v1
metadata:
  name: my-service
subsets:
  - addresses:
    - ip: 10.4.0.6
    ports:
    - protocol: TCP
      port: 443
      name: https
票数 0
EN

Stack Overflow用户

发布于 2019-05-29 18:44:20

您可以尝试这样做:创建一个绑定到外部web服务的ExternalName类型的K8s服务,并添加一个入口,就像您使用“本机”K8s服务一样。

ExternalName服务--> https://kubernetes.io/docs/concepts/services-networking/service/#externalname

Exp.

代码语言:javascript
复制
apiVersion: v1
kind: Service 
metadata:
  name: my-service
  namespace: prod
spec:
  type: ExternalName
  externalName: my.database.example.com
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52356725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档