Fix up the GRPC sample in preparation for 0.4 (#903)

This commit is contained in:
Matt Moore 2019-02-19 07:15:48 -08:00 committed by Knative Prow Robot
parent eea4cea138
commit 21f8ba899a
4 changed files with 41 additions and 54 deletions

View File

@ -21,10 +21,12 @@ WORKDIR /go/src/github.com/knative/docs/
ADD . /go/src/github.com/knative/docs/ ADD . /go/src/github.com/knative/docs/
RUN CGO_ENABLED=0 go build -tags=grpcping ./serving/samples/grpc-ping-go/ RUN CGO_ENABLED=0 go build -tags=grpcping ./serving/samples/grpc-ping-go/
RUN CGO_ENABLED=0 go build -tags=grpcping ./serving/samples/grpc-ping-go/client
FROM gcr.io/distroless/base FROM gcr.io/distroless/static
EXPOSE 8080 EXPOSE 8080
COPY --from=builder /go/src/github.com/knative/docs/grpc-ping-go /sample COPY --from=builder /go/src/github.com/knative/docs/grpc-ping-go /server
COPY --from=builder /go/src/github.com/knative/docs/client /client
ENTRYPOINT ["/sample"] ENTRYPOINT ["/server"]

View File

@ -2,8 +2,7 @@
A simple gRPC server written in Go that you can use for testing. A simple gRPC server written in Go that you can use for testing.
This sample is dependent on This sample requires knative/serving 0.4 or later.
[this issue](https://github.com/knative/serving/issues/1047) to be complete.
## Prerequisites ## Prerequisites
@ -12,22 +11,20 @@ This sample is dependent on
## Build and run the gRPC server ## Build and run the gRPC server
Build and run the gRPC server. This command will build the server and use First, build and publish the gRPC server to DockerHub (replacing `{username}`):
`kubectl` to apply the configuration.
```shell ```shell
REPO="gcr.io/<your-project-here>"
# Build and publish the container, run from the root directory. # Build and publish the container, run from the root directory.
docker build \ docker build \
--tag "${REPO}/serving/samples/grpc-ping-go" \ --tag "docker.io/{username}/grpc-ping-go" \
--file=serving/samples/grpc-ping-go/Dockerfile . --file=serving/samples/grpc-ping-go/Dockerfile .
docker push "${REPO}/serving/samples/grpc-ping-go" docker push "${REPO}/serving/samples/grpc-ping-go"
```
# Replace the image reference with our published image. Next, replace `{username}` in `sample.yaml` with your DockerHub username, and
perl -pi -e "s@github.com/knative/docs/serving/samples/grpc-ping-go@${REPO}/serving/samples/grpc-ping-go@g" serving/samples/grpc-ping-go/*.yaml apply the yaml.
# Deploy the Knative sample. ```shell
kubectl apply --filename serving/samples/grpc-ping-go/sample.yaml kubectl apply --filename serving/samples/grpc-ping-go/sample.yaml
``` ```
@ -39,22 +36,15 @@ kubectl apply --filename serving/samples/grpc-ping-go/sample.yaml
# Put the Host name into an environment variable. # Put the Host name into an environment variable.
export SERVICE_HOST=`kubectl get route grpc-ping --output jsonpath="{.status.domain}"` export SERVICE_HOST=`kubectl get route grpc-ping --output jsonpath="{.status.domain}"`
# In Knative 0.2.x and prior versions, the `knative-ingressgateway` service was used instead of `istio-ingressgateway`.
INGRESSGATEWAY=knative-ingressgateway
# The use of `knative-ingressgateway` is deprecated in Knative v0.3.x.
# Use `istio-ingressgateway` instead, since `knative-ingressgateway`
# will be removed in Knative v0.4.
if kubectl get configmap config-istio -n knative-serving &> /dev/null; then
INGRESSGATEWAY=istio-ingressgateway
fi
# Put the ingress IP into an environment variable. # Put the ingress IP into an environment variable.
export SERVICE_IP=`kubectl get svc $INGRESSGATEWAY --namespace istio-system --output jsonpath="{.status.loadBalancer.ingress[*].ip}"` export SERVICE_IP=`kubectl get svc istio-ingressgateway --namespace istio-system --output jsonpath="{.status.loadBalancer.ingress[*].ip}"`
``` ```
1. Use the client to send message streams to the gRPC server. 1. Use the client to send message streams to the gRPC server (replacing `{username}`)
```shell ```shell
go run -tags=grpcping ./serving/samples/grpc-ping-go/client/client.go -server_addr="$SERVICE_IP:80" -server_host_override="$SERVICE_HOST" docker run -ti --entrypoint=/client docker.io/{username}/grpc-ping-go \
-server_addr="$SERVICE_IP:80" \
-server_host_override="$SERVICE_HOST" \
-insecure
``` ```

View File

@ -33,12 +33,23 @@ func main() {
log.Fatalf("fail to dial: %v", err) log.Fatalf("fail to dial: %v", err)
} }
defer conn.Close() defer conn.Close()
client := pb.NewPingServiceClient(conn) client := pb.NewPingServiceClient(conn)
ping(client, "hello") ping(client, "hello")
pingStream(client, "hello") pingStream(client, "hello")
} }
func ping(client pb.PingServiceClient, msg string) {
ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
defer cancel()
rep, err := client.Ping(ctx, &pb.Request{Msg: msg})
if err != nil {
log.Fatalf("%v.Ping failed %v: ", client, err)
}
log.Printf("Ping got %v\n", rep.GetMsg())
}
func pingStream(client pb.PingServiceClient, msg string) { func pingStream(client pb.PingServiceClient, msg string) {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel() defer cancel()
@ -74,13 +85,3 @@ func pingStream(client pb.PingServiceClient, msg string) {
<-waitc <-waitc
} }
func ping(client pb.PingServiceClient, msg string) {
ctx, cancel := context.WithTimeout(context.Background(), 120*time.Second)
defer cancel()
rep, err := client.Ping(ctx, &pb.Request{Msg: msg})
if err != nil {
log.Fatalf("%v.Ping failed %v: ", client, err)
}
log.Printf("Ping got %v\n", rep.GetMsg())
}

View File

@ -1,23 +1,17 @@
apiVersion: serving.knative.dev/v1alpha1 apiVersion: serving.knative.dev/v1alpha1
kind: Configuration kind: Service
metadata: metadata:
name: grpc-ping name: grpc-ping
namespace: default namespace: default
spec: spec:
revisionTemplate: runLatest:
metadata: configuration:
labels: revisionTemplate:
knative.dev/type: app spec:
spec: container:
container: image: docker.io/{username}/grpc-ping-go
image: github.com/knative/docs/serving/samples/grpc-ping-go ports:
--- - name: h2c
apiVersion: serving.knative.dev/v1alpha1 containerPort: 8080
kind: Route
metadata:
name: grpc-ping
namespace: default
spec:
traffic:
- configurationName: grpc-ping
percent: 100