2017-12-23 5 views
0

클라이언트가 HTTP를 통해 JSON을 사용하여 선택적으로 호출 할 수있게하려는 gRPC 인터페이스가있는 서비스가 있습니다. Google Cloud Platform과 그 기능을 transcode the HTTP request into a gRPC request에 사용하기로 결정했습니다. 나는 Hello GRPC Java Example으로 시작하기로 결정했습니다. 내가 배포 같은 ESP와 백엔드 서비스를 곱슬 곱슬하려고 할 때, 그러나Kubernetes 백엔드로 Google 클라우드 ESP gRPC 트랜스 코딩

docker run --detach --name=esp \ 
    --publish=8000:8000 \ 
    --publish=9000:9000 \ 
    --link=grpc-hello:grpc-hello \ 
    --service hellogrpc.endpoints.skypo-llc.cloud.goog \ 
    --version 2017-11-30r1 \ 
    --http_port=8000 \ 
    --http2_port=9000 \ 
    --backend=grpc://grpc-hello:50051 
    gcr.io/endpoints-release/endpoints-runtime:1   

: 나는 성공적 백엔드는 다음 도커 실행 명령으로 구글 컴퓨 트 엔진 인스턴스에 도커를 통해 실행하는 응답을 얻을 수 있었다

apiVersion: v1 
kind: Service 
metadata: 
    name: grpc-hello 
spec: 
    ports: 
    - port: 80 
    targetPort: 9000 
    protocol: TCP 
    name: http 
    selector: 
    app: grpc-hello 
    type: LoadBalancer 
--- 
apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: grpc-hello 
spec: 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: grpc-hello 
    spec: 
     containers: 
     - name: esp 
     image: gcr.io/endpoints-release/endpoints-runtime:1 
     args: [ 
     "--http_port", "8000", 
     "--http2_port", "9000", 
     "--backend", "grpc://127.0.0.1:50051", 
     "--service", "hellogrpc.endpoints.skypo-llc.cloud.goog", 
     "--version", "2017-12-22r0", 
     ]                                                                 
     ports: 
      - containerPort: 9000 
      containerPort: 8000 
     - name: java-grpc-hello 
     image: gcr.io/skypo-llc/java-grpc-hello:1.0 
     ports: 
      - containerPort: 50051 

그리고 내 Dockerfile :

여기
$ curl -v -d '{"name":"message"}' 
http://helloservice.com:8000/helloworld.Greeter/SayHello?key=REDACTED 
..... 
Warning: Binary output can mess up your terminal. Use "--output -" to tell 
Warning: curl to output it to your terminal anyway, or consider "--output 
Warning: <FILE>" to save to a file. 
* Failed writing body (0 != 57) 
* stopped the pause stream! 
* Closing connection 0 

내는 Kubernetes의 설정이다는 Kubernetes, 나는 바이너리 포트 8000에 출력 또는 포트 9000에 타임 아웃 하나를 얻을 :이 솔루션은는 Kubernetes 서비스 섹션에 포트 8000을 추가

FROM gcr.io/google_appengine/openjdk8 

RUN apt-get update \ 
    && apt-get -y -q upgrade \ 
    && rm -rf /var/lib/apt/lists/* 

ADD ./server/build/libs/server.jar /hello/server.jar 

EXPOSE 8000 
EXPOSE 9000 

ENTRYPOINT ["java", "-jar", "/hello/server.jar"] 
+1

지침 Kubernetes의 Endpoints] (https://cloud.google.com/endpoints/docs/openapi/get-started-kubernetes)는 Kubernetes에서 서비스 및 ESP를 배포하는 것과 관련된 문제를 진단하는 데 도움이 될 수 있습니다. – ltang

+0

@ltang 유용한 링크였습니다. – frank

답변

0

이었다

- port: 8000 
    targetPort: 8000 
    protocol: TCP 
    name: http2 

그래서, 전체 서비스 섹션은 이제 다음 [시작하기에

apiVersion: v1 
kind: Service 
metadata: 
    name: grpc-hello 
spec: 
    ports: 
    - port: 80 
    targetPort: 9000 
    protocol: TCP 
    name: http 
    - port: 8000 
    targetPort: 8000 
    protocol: TCP 
    name: http2 
    selector: 
    app: grpc-hello 
    type: LoadBalancer 
관련 문제