著者|冬の島アリクラウドコンテナプラットフォームエンジニア
はじめに: KnativeのWebSocketサポートおよびgRPC上のデフォルトは、しかし、使用中に、時にはあなたがKnativeに配備のWebSocketやgRPCを所有したいことがありますが、まだスムーズに様々なありません。最終的な調査は彼らの手続き上の問題や設定エラーのほとんどのことがわかっている間。紙は、本明細書Knativeやサービスについての例をテストするために使用することができるのWebSocket gRPCとき生産関連サービス又はテスト環境で展開する方法の例を示します。
WebSocketを
手動設定を所有している場合IstioゲートウェイはのWebSocketをオンにする必要がありますサポートwebsocketUpgrade
機能。しかし、実際には展開が、この機能が付属してサービングKnativeを使用しています。この例では、完全なコードhttps://github.com/knative-sample/websocket-chat実現用WebSocketに基づいてチャットグループの一例です。
あなたは、ウィンドウのウィンドウを表示し、情報を受け取るために情報を送信できるサービスの展開に接続するには、ブラウザを使用しました。あなたは後にメッセージを送信すると、接続されているすべてのユーザーがあなたの着信メッセージを受け取ることができます。だから、あなたがサービスに接続された2つのブラウザウィンドウを使用することができ、WebSocketのサービスを検証するために、ウィンドウがメッセージを受信したメッセージを送信するためのウィンドウが正常です。
この例はであるゴリラ/のWebSocketの 最適化の基礎の数:
- ベンダー依存のコードを追加し、あなたはそれを直接ダウンロードすることができます
- Dockerfile Makefileを追加しましたし、直接バイナリにコンパイルしてミラーリングすることができます
- YAMLファイルKnative流通サービスの(追加されました
service.yaml
)、クラスタKnativeの使用に直接提出することができます - また、直接コンパイルしたミラーを使用することができます
registry.cn-hangzhou.aliyuncs.com/knative-sample/websocket-chat:2019-10-15
Knativeサービスの設定:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: websocket-chat
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/websocket-chat:2019-10-15
ports:
- name: http1
containerPort: 8080
ダウンコードクローンの実行後kubectl apply -f service.yaml
Knativeに展開サービス、および、直接アドレスを使用することができ、サービスにアクセスします。
ksvcリストを表示し、ドメイン名へのアクセスを取得します。
└─# kubectl get ksvc
NAME URL LATESTCREATED LATESTREADY READY REASON
websocket-chat http://websocket-chat.default.serverless.kuberun.com websocket-chat-7ghc9 websocket-chat-7ghc9 True
今開くためにブラウザを使用http://websocket-chat.default.serverless.kuberun.comをグループチャットウィンドウを参照してください。
二つのウィンドウ、メッセージを送信するウィンドウを開く、別のウィンドウには、WebSocketをすることによって、このメッセージを受け取りました。
gRPC
gRPCは、クライアント側とサーバー側を介して相互作用する必要があり、ブラウザから直接アクセスすることはできません。上の例の完全なコードhttps://github.com/knative-sample/grpc-ping-go、ミラーリングは、テストがgRPCサービスを提供します。この例では、直接使用することができます。
Knativeサービスの設定:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: grpc-ping
spec:
template:
spec:
containers:
- image: registry.cn-hangzhou.aliyuncs.com/knative-sample/grpc-ping-go:2019-10-15
ports:
- name: h2c
containerPort: 8080
コードクローン後にダウン実行はkubectl apply -f service.yaml
Knativeでサービスを展開します。
Ksvcとドメイン名のリストへのアクセスを得ます:
└─# kubectl get ksvc
NAME URL LATESTCREATED LATESTREADY READY REASON
grpc-ping http://grpc-ping.default.serverless.kuberun.com grpc-ping-p2tft Unknown RevisionMissing
websocket-chat http://websocket-chat.default.serverless.kuberun.com websocket-chat-6hgld websocket-chat-6hgld True
今、私たちはgRPCサーバアドレスがgrpc-ping.default.serverless.kuberun.com知っていることを、ポート80があり、我々はテスト要求を開始することができます。
└─# docker run --rm registry.cn-hangzhou.aliyuncs.com/knative-sample/grpc-ping-go:2019-10-15 /client -server_addr="grpc-ping.default.serverless.kuberun.com:80" -insecure
2019/10/16 11:35:07 Ping got hello - pong
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854794231 +0800 CST m=+73.061909052
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854827273 +0800 CST m=+73.061942072
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854835802 +0800 CST m=+73.061950606
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854842843 +0800 CST m=+73.061957643
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854849211 +0800 CST m=+73.061964012
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854855249 +0800 CST m=+73.061970049
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854861659 +0800 CST m=+73.061976460
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854875071 +0800 CST m=+73.061989873
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854905416 +0800 CST m=+73.062020221
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.85491183 +0800 CST m=+73.062026630
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.85492533 +0800 CST m=+73.062040133
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854932285 +0800 CST m=+73.062047083
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854946977 +0800 CST m=+73.062061782
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854953311 +0800 CST m=+73.062068112
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854966639 +0800 CST m=+73.062081440
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854973939 +0800 CST m=+73.062088739
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854985463 +0800 CST m=+73.062100268
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854993275 +0800 CST m=+73.062108073
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.854999812 +0800 CST m=+73.062114613
2019/10/16 11:35:07 Got pong 2019-10-16 11:35:07.855012676 +0800 CST m=+73.062127479
概要
二つの例により、それぞれgRPCのWebSocketや展開方法を示しています。
- WebSocketのチャット例メッセージを送信および受信することにより方法を示して
- gRPCは、クライアントの道を起動することによって、プロセスgRPCリモート呼び出しを示してい
著者について:
冬の島、アリクラウドコンテナプラットフォームエンジニア、コンテナアリのクラウドプラットフォームKnative関連の仕事を担当します。
詳細のACKの場合:https://www.aliyun.com/product/kubernetes
Knative交換基へようこそ
「アリババクラウドネイティブマイクロチャネルパブリック番号(ID:Alicloudnative)フォーカスマイクロサービスで、サーバレス、コンテナ、サービスメッシュ及び他の技術分野、クラウドネイティブで人気の技術動向を中心に、クラウドネイティブの大規模な着陸の練習は、ほとんどがクラウドネイティブ開発を理解してください技術公衆番号。」
ブログ記事複数のプラットフォームからこの記事OpenWriteリリース!