我使用Kubernetes和Traefik作为入口控制器。我的网络中有一些web服务还不能被容器化。因此,我正在寻找一种方法来通过Traefik Ingress公开我的非Kubernetes web服务。我没有更多的公网IP,所以不能同时拆分这两个环境。
我已经创建了一个端点+服务来解决这个问题,但是当我尝试连接时,我得到了一个SSL协议错误。是我做错了什么,还是有人有其他的解决方案?
这些是我的(测试)端点和服务yaml:
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发布于 2018-09-17 01:38:02
对于初学者来说,我敢打赌,当您使用kubectl describe svc my-service时,即使端点确实存在,您的端点也是空的,对吧?
要解决这个问题,您需要调整您的端点ports密钥,使其具有与您的服务相同的端口定义(名称、协议等)。然后,您应该可以在describe service结果中看到这些端点,并能够正常使用它。
发布于 2018-09-17 18:05:03
关于这个问题,我们有多个问题。首先,我使用helm部署了Traefik。我发现SSL在默认情况下是禁用的...
我的values.yaml如下:
imageTag: 1.6.6
rbac:
enabled: true
dashboard:
enabled: true
domain: traefik.dahsboard.local
ssl:
enabled: true
insecureSkipVerify: true
upstream: true正如Radek提到的,端点和服务的端口定义必须相同。
我的是:
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发布于 2019-05-29 18:44:20
您可以尝试这样做:创建一个绑定到外部web服务的ExternalName类型的K8s服务,并添加一个入口,就像您使用“本机”K8s服务一样。
ExternalName服务--> https://kubernetes.io/docs/concepts/services-networking/service/#externalname
Exp.
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: prod
spec:
type: ExternalName
externalName: my.database.example.comhttps://stackoverflow.com/questions/52356725
复制相似问题