Kubernetes + Istioフロー制御によってグレー放出を達成するために、青緑色を通じて達成交通渋滞権の主なデモは、カナリアは、カスタムHTTPヘッダーを通じて達成します
環境を準備します
自分の機器を購入する必要はありませんistio K8Sとは、その後、あなたはスロー・削除、クラウド内のクラスタのボリュームで支払うことができ、Huawei社のクラウドを推奨します。
プロジェクトで使用されるコード
springbootで+強く残りのコールは、githubのを入れてください型付け装うspringcloud
https://github.com/assionyang/istio-test.git
構造説明コード
#アグリゲーションサービスサービス-組合istio、だけでなく、入り口として、サービスをテストするために、ユーザーを呼び出す
| -Dockerfile #dockerfile
istio# -サービス・ユーザーの顧客サービス、切り替えのためのデモ版
| -Dockerfile #dockerfile
istio-サービス利用者-api#クラスライブラリ、装うクライアントの暴露とDTOを使用し、組合-APIサービスがユーザーに依存
K8S#K8S&istioディレクトリを公開
| - 設定
| -連合サービスConfigMapのistioサービス-union.yaml#
| - istio-ユーザーサービス-V1 .yaml#ユーザーサービスv1のバージョンConfigMap
| -ユーザーのユーザー・サービス-V2-サービスバージョンv2.yaml#ConfigMap istio
| -解放連合deployment.yaml #unionのistioサービスフリー状態
| - istio-サービスunion-サービス.yaml#組合サービス
| - istio-サービスgateway.yaml#の入口ゲートウェイ、連合の外部被ばく
| -リリースistio-ユーザーのユーザー・サービスの展開- v1.yaml#v1のバージョンステートレス
| - istioサービス-USER-展開v2.yaml#ユーザーバージョンv2のステートレスリリース
| - istioサービス-USER-サービス.yaml#ユーザーサービス
| - istioサービス-USER- virtualservice-v1.yamlの#ユーザーがv1のバージョンにルーティングされる
| - istioサービス-USER- virtualservice-V2 .yaml#ユーザーはv2のバージョンにルーティングされる
| - istioサービス-USER- virtualservice-weight.yaml#ユーザトラフィックをルーティングの重みに
| - istioサービス-USER- virtualservice-jsq.yaml#ユーザーカナリアのルーティング
試験手順
1)ユーザー、二つのプロジェクトのドッキングウィンドウiamge組合とアップロード画像倉庫を築きます
ドッキングウィンドウは、-t istioで修理構築V1:労働組合を。
istioサービス-組合ドッキングウィンドウタグ:v1のswr.ap-southeast-1.myhuaweicloud.com/mk-develop/istio-service- 組合:v1の
ドッキングウィンドウのプッシュswr.ap-southeast-1.myhuaweicloud.com/mk-develop/ istioで修理組合:v1の
ドッキングウィンドウ-t istioで修理構築ユーザー:V1を。 istio-サービス利用者ドッカタグ:v1のswr.ap-southeast-1.myhuaweicloud.com/mk-develop/istio-service- ユーザー:v1の ドッキングウィンドウのプッシュswr.ap-southeast-1.myhuaweicloud.com/mk-develop/ istio-サービス利用者:V1
2)設定項目を作成ConfigMap
kubectl適用-fのconfig / istioサービス-USER- v1.yaml
kubectl適用-fのconfig / istioサービス-USER- v2.yaml
kubectl適用-fのconfig / istio-サービスunion.yaml
3)出版負荷、サービス、ゴールルール、ゲートウェイ
-f istioサービスユーザ適用kubectl -deployment-v1.yaml #USERのサービスV1バージョンをターゲットルールをロード -f istioサービスユーザ適用kubectl -deployment-v2.yaml #USERのターゲットルールのサービス負荷V2バージョンを 適用kubectl -f istio-サービス利用者-service.yaml #USERのサービス kubectlは-f istioサービス-組合適用 -deployment.yaml #unionの負荷 kubectlを-f istioサービス-組合適用 -service.yaml #unionのサービスを -f適用kubectl istioサービス・ユニオン・gateway.yamlの#unionゲートウェイ、ingressgateway
最初のステップは、我々は、デフォルトのルールを作成するには、アプリケーションやサービスをリリースし、デフォルトの目標回転トレーニングサービスのv1とv2のユーザーのバージョンは、我々はテスト何回かの変化を検出することができるときingressgatewayによる外部被ばくのエンドポイントは、このルールがあります
{ "userVersion": "V1"、 "userException": "" }
、{ "userVersion": "V2"、 "userException": "" }
、{ "userVersion": "V1"、 "userException": "" }
、{」 userVersion ":" V2" 、 "userException": "" } ......
4)デフォルトルートを作成します。
kubectlバージョンV1を使用して-f istioサービス-組合-virtualservice-v1.yaml#を適用
アクセステスト結果とそのすべてのバージョンv1のを見つけました
{ "userVersion": "V1"、 "userException": "" }
、{ "userVersion": "V1"、 "userException": "" }
、{ "userVersion": "V1"、 "userException": "" }
、{」 userVersion ":" V1" 、 "userException": ""}
kubectlバージョンV2を使用して-f istioサービス-組合-virtualservice-v2.yaml#を適用
アクセステスト結果とそのすべてのv2のバージョンを見つけました
{ "userVersion": "V2"、 "userException": "" }
、{ "userVersion": "V2"、 "userException": "" }
、{ "userVersion": "V2"、 "userException": "" }
、{」 userVersion ":" V2" 、 "userException": ""}
5)交通の重み
kubectlトラフィックによって70%V1、トラフィックのルートを使用して-f istioサービス-組合-virtualservice-weight.yaml#重みを適用し、V2分30%のフロー
アクセステストの結果、ほぼ同じ
{ "userVersion": "V1"、 "userException": "" }
、{ "userVersion": "V1"、 "userException": "" }
、{ "userVersion": "V1"、 "userException": "" }
、{」 userVersion ":" V2" 、 "userException": "" } 、{ "userVersion": "V1"、 "userException": "" } 、{ "userVersion": "V2"、 "userException": "" }、{ "userVersion" : "V1"、 "userException": "" }、{ "userVersion": "V1"、 "userException": "" }、{ "userVersion": "V2"、 "userException":"" }、{ "userVersion": "V1"、 "userException": ""}
6)カナリアリリース
デモのV1バージョンはラボ= assion v2のバージョンは、そのようなリクエストヘッダへの要求のアクセスに応じてヘッドセットを訪問することです。
注意:私たちはふりを使用しているため、組合は元のヘッダーをもたらすことはありません装うサービスを介してユーザーを呼び出して、我々はいくつかを一緒に渡すためのヘッダ情報の透明伝送を装う行う必要があります
アクセスユーザーv1のバージョンなし、カナリアリリースは、httpヘッダヘッドラボ= assionアクセスユーザーv2のバージョンを使用して-f istioサービス-組合-virtualservice-jsq.yaml#を適用kubectl
私たちは、郵便配達のテスト結果を見ることができます