使用Ingress(Kubernetes)路由服务时,无法访问Perforce服务器



我在使用Ingress路由服务时获得"合作伙伴不是perforce client/server",但是我能够直接查询Kubernetes群集中的Perforce Server。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-notls
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: perforce.domain.com
    http:
      paths:
      - path: /*
        backend:
          serviceName: p4-server
          servicePort: 80

P4服务

apiVersion: v1
kind: Service
metadata: 
  name: p4-server
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 1666
      nodePort: 30166
      name: p4-server
  selector: 
    run: p4-server

如果我在集群中:

$ p4 -p p4-server:80 info       
User name: root
Client name: platform-3101934619-wtxs5
Client host: platform-3101934619-wtxs5
Client unknown.
Current directory: /
Peer address: 10.4.0.218:49924
Client address: 10.4.0.218
Server address: p4-server-1400441787-fcmd9:1666
Server root: /codelingo
Server date: 2017/10/04 02:19:17 +0000 UTC
Server uptime: 380:53:52
Server version: P4D/LINUX26X86_64/2017.1/1511680 (2017/05/05)
Server license: none
Case Handling: sensitive

p4 logs:

Perforce server info:
    2017/10/04 02:19:17 pid 23038 root@platform-3101934619-wtxs5 10.4.0.218 [p4/2017.1/LINUX26X86_64/1511680] 'user-info'

通过入口尝试失败:

$ p4 -p perforce.domain.com:80 info 
(hangs)

p4 logs:

Perforce server error:
    Date 2017/10/04 02:18:30:
    Pid 23012
    Connection from 10.4.0.1:38622 broken.
    RpcTransport: partner is not a Perforce client/server.
    RpcTransport: partner is not a Perforce client/server.
    RpcTransport: partner is not a Perforce client/server.

同伴地址:10.4.0.218:49924

看起来像双向协议一样可疑,这意味着客户端和服务器期望彼此之间不受约束的访问,ALA(非passive Mode)FTP

http: paths: - path: /*

我不认为http: stanza是一个准确的陈述,因为我怀疑超级值得认真的,因为Perforce会在客户端和服务器之间讲HTTP。关于TCP的教学,正在进行中的讨论,但是目前,我认为您已经在已经拥有NodePort的大部分方面进入了您想要去的地方:1666

创建一个GCE TCP 加载平衡器(实际上是防火墙,可以使野生互联网远离群集),并将其1666指向群集中每个节点的端口30166。目前尚不清楚是否需要在Perforce周围发生任何事情,而是从"建立局外人和您的群集P4之间的TCP/IP连接"的角度来看,我认为这会做到

最新更新