代码之家  ›  专栏  ›  技术社区  ›  scoulomb

使用openshift外部服务瞄准外部REST API

  •  0
  • scoulomb  · 技术社区  · 6 年前

    我希望我的应用程序托管在openshift集群中,以外部RESTAPI为目标,而不需要在客户端应用程序中硬编码IP/端口,并且能够在不重新交付应用程序的情况下更改IP/端口。

    我设法通过configmap实现了这一点,但我看到也可以通过服务实现这一点。 in OpenShift doc .

    但我没能理解它是如何工作的。我做了以下工作:

    创建服务

    sylvain@HP:~$ oc export svc example-external-service
    apiVersion: v1
    kind: Service
    metadata:
       creationTimestamp: null
       name: example-external-service
     spec:
       ports:
       - name: http
         port: 80
         protocol: TCP
         targetPort: 80
       sessionAffinity: None
       type: ClusterIP
     status:
       loadBalancer: {}
    

    创建终结点

    sylvain@HP:~$ oc export endpoints example-external-service
    apiVersion: v1
    kind: Endpoints
    metadata:
      creationTimestamp: null
      name: example-external-service
    subsets:
    - addresses:
      - ip: 216.58.198.195
      ports:
      - name: "80"
        port: 80
        protocol: TCP
    

    在我的应用程序运行的pod上对我的服务进行卷曲

    sylvain@HP:~$ oc get pods
    NAME                     READY     STATUS    RESTARTS   AGE
    nodejs-example-1-qnq46   1/1       Running   0          36m
    sylvain@HP:~$ oc rsh nodejs-example-1-qnq46
    sh-4.2$ env | grep "EXAMPLE_EXTERNAL"
    EXAMPLE_EXTERNAL_SERVICE_SERVICE_PORT_HTTP=80
    EXAMPLE_EXTERNAL_SERVICE_SERVICE_PORT=80
    EXAMPLE_EXTERNAL_SERVICE_PORT_80_TCP_PORT=80
    EXAMPLE_EXTERNAL_SERVICE_SERVICE_HOST=172.30.51.168
    EXAMPLE_EXTERNAL_SERVICE_PORT_80_TCP_ADDR=172.30.51.168
    EXAMPLE_EXTERNAL_SERVICE_PORT_80_TCP_PROTO=tcp
    EXAMPLE_EXTERNAL_SERVICE_PORT=tcp://172.30.51.168:80
    EXAMPLE_EXTERNAL_SERVICE_PORT_80_TCP=tcp://172.30.51.168:80
    sh-4.2$ curl 172.30.51.168
    curl: (7) Failed connect to 172.30.51.168:80; No route to host
    sh-4.2$ curl 216.58.198.195
    <HTML><HEAD><meta http-equiv="content-type" content="text/html;     charset=utf-8">
    <TITLE>301 Moved</TITLE></HEAD><BODY>
    <H1>301 Moved</H1>
    The document has moved
    <A HREF="http://www.google.com/">here</A>. 
    </BODY></HTML>
    sh-4.2$ 
    

    在第一个curl中,使用端点中定义的地址正在工作,但是使用环境变量中的地址:

    EXAMPLE_EXTERNAL_SERVICE_SERVICE_HOST=172.30.51.168
    

    它失败了,所以路由没有正确完成。

    我做错什么了?我错过了什么?

    干杯

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sabrina Jutz    6 年前

    "80" )至 http