SkupperによるマルチラウドK 8 S通信の実現
8215 ワード
イントロ
エンジニアリングチームが彼らのインフラ目標にマルチクラウドアプローチを組み込むことを試みるとき、直面する多くの挑戦があります.Kubernetesはこれらの問題のいくつかに対処する良い仕事をします、しかし、複数の地域で複数の雲プロバイダーにまたがるクラスタのコミュニケーションを管理することはチームのための困難な仕事になることができます.しばしば、これはマルチクラウドクラスタ通信に複雑なVPNと特別なファイアウォール規則を必要とします.
このポストでは、Kubernetesクラスタ間でセキュアなコミュニケーションを可能にするオープンソースプロジェクトSkupperにご紹介します.Skupperは、複数のクラウドプロバイダ、データセンター、地域にまたがるアプリケーションを可能にします.アクションでそれを見ましょう!
始める
このチュートリアルではIstio Bookinfo Application 複数のパブリックおよびプライベートクラスタ間のマイクロサービスサービスは、分散アプリケーション環境で動作するように符号化の変更を必要としません.Skupperでは、アプリケーションはすべてのサービスが同じクラスタで実行されているかのように動作します.
このチュートリアルでは、名前空間のリモート、パブリッククラスタ上でProductPageと格付けサービスを配置しますaws-eu-west
そして、詳細とレビューサービスの名前空間内のローカル、オンプレミスクラスタlaptop
.
概要
BookInfoサービス展開
上の画像はサービスの展開方法を示しています.
このチュートリアルではIstio Bookinfo Application 複数のパブリックおよびプライベートクラスタ間のマイクロサービスサービスは、分散アプリケーション環境で動作するように符号化の変更を必要としません.Skupperでは、アプリケーションはすべてのサービスが同じクラスタで実行されているかのように動作します.
このチュートリアルでは、名前空間のリモート、パブリッククラスタ上でProductPageと格付けサービスを配置します
aws-eu-west
そして、詳細とレビューサービスの名前空間内のローカル、オンプレミスクラスタlaptop
.概要
BookInfoサービス展開
上の画像はサービスの展開方法を示しています.
このデモはSkupperがサービス展開のこの配置によって示される接続性問題を解決する方法を示します.
図2 - SkupperによるBookInfoサービス配備
Skupperは、一つ以上のクラスタまたは名前空間で実行しているインストールによる分散システムです.接続されたSkUpperインストールは、各インストールが公開するサービスについての情報を共有します.各Skupperインストールは、どのサービスが他のすべてのインストールで公開されるかを学習します.Skupperは、各名前空間のプロキシサービスエンドポイントを実行します.
必要条件
このチュートリアルを実行するには、次の手順を実行します.
kubectl
コマンドラインツール、バージョン1.15以降(installation guide) skupper
コマンドラインツール(installation guide) ステップ1 : BookInfoアプリケーションを配備する
この手順では、4つのBookInfo MicroServicesのそれぞれにサービスと配備を作成します.
名前空間aws-eu-west
:
$ kubectl apply -f public-cloud.yaml
service/productpage created
deployment.extensions/productpage-v1 created
service/ratings created
deployment.extensions/ratings-v1 created
名前空間laptop
:
$ kubectl apply -f private-cloud.yaml
service/details created
deployment.extensions/details-v1 created
service/reviews created
deployment.extensions/reviews-v3 created
ステップ2 :パブリックProductPageサービスを公開する
名前空間aws-eu-west
:
kubectl expose deployment/productpage-v1 --port 9080 --type LoadBalancer
BookInfoアプリケーションは、この入口ポートを介して公共のインターネットからアクセスされますproductpage
サービス
ステップ3:アプリケーションが動作しないことを観察
BookInfoアプリケーションのWebアドレスは、名前空間からaws-eu-west
:
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
Webブラウザでアドレスを開きます.PropertPageは応答しますが、ページは名前空間のサービスとしてエラーを表示しますlaptop
が到達できない.
我々は今、それを修正することができます.
ステップ4:Skupperをセットアップする
このステップは各クラスタ上のskupper環境を初期化する.
名前空間laptop
:
skupper init
名前空間aws-eu-west
:
skupper init
現在、Skupperインフラストラクチャは走っています.用途skupper status
各コンソール端末では、SkUpperが利用できることを確認します.
$ skupper status
Namespace '<ns>' is ready. It is connected to 0 other namespaces.
次の手順を実行すると、使用することができますskupper status
いつでもあなたの進捗状況を確認します.
ステップ5:あなたのskupperインストールを接続してください
ここで、あなたの名前空間をskupper接続で接続する必要があります.
これは2段階のプロセスです.
The skupper connection-token <file>
コマンドはSkupperのネットワークに接続するために他のSkupperインスタンスに許可を与える証明書で秘密のトークンファイルを生成するSkupperを指示します.
注意:ログイン資格情報を保持するファイルに対してこのファイルを保護します.
The skupper connect <file>
コマンドはSkupperに別のSkupperネットワークに接続するよう指示します.これにより、スカアッパ接続が完了する.
この配置では、Skupperインスタンスはピアネットワークを形成するために結合することに注意してください.典型的に、ネットワークポートのSkupperオープンはパブリッククラスタ上にあります.進行中のクラスタlaptop
インターネットから到達可能なアドレスを持っていないかもしれません.接続が終わった後に、Skupperネットワークメンバーはピアであり、どのSkupperがネットワークポートをオープンしたかは問題ではありません.
このデモのコンソール端末は同じホスト上で同じユーザによって実行されます.これは$ { HOME }ディレクトリのトークンファイルを両方の端末で利用できます.お使いの端末が異なるマシン上にある場合は、使用する必要がありますscp
あるいは、トークンファイルをシステムをホストしているシステムに転送するのと同様のツールlaptop
端末.
Skupperネットワーク接続トークンを生成する
名前空間aws-eu-west
:
skupper connection-token ${HOME}/PVT-to-PUB-connection-token.yaml
スカラップ接続を開く
名前空間laptop
:
skupper connect ${HOME}/PVT-to-PUB-connection-token.yaml
接続をチェックする
名前空間aws-eu-west
:
$ skupper status
Skupper enabled for "aws-eu-west". It is connected to 1 other sites.
名前空間laptop
:
$ skupper status
Skupper enabled for "laptop". It is connected to 1 other sites.
ステップ6 :共有するサービスの仮想化
現在、マルチクラスタ通信ができるSkupperネットワークを持っていますが、サービスはそれに関連付けられていません.このステップはkubectl annotate
Skupperネットワークに含まれるサービスがSkupperに通知するコマンド.
Skupperは、サービスが仮想化されなければならないという徴候として注釈を使います.注釈を受けるサービスはネットワーク要求のための物理的な目標です、そして、他の名前空間でskupper展開するプロキシはネットワーク要求のための仮想目標です.Skupperインフラストラクチャは、仮想サービスとターゲットサービスの間のルート要求をルーティングします.
名前空間aws-eu-west
:
$ kubectl annotate service ratings skupper.io/proxy=http
service/ratings annotated
名前空間laptop
:
$ kubectl annotate service details skupper.io/proxy=http
service/details annotated
$ kubectl annotate service reviews skupper.io/proxy=http
service/reviews annotated
Skupperは現在、Skupperネットワークのすべての名前空間に利用可能な注釈付きサービスを作っています.BookInfoアプリケーションは、productpage
パブリッククラスタのサービスはdetails
and reviews
プライベートクラスタ上のサービスとプライベートクラスタ上のレビューサービスとして、パブリッククラスタ上の格付けサービスへのアクセスがあります.
ステップ7:アプリケーションが動作することを観察する
BookInfoアプリのWebアドレスは、名前空間から発見することができますaws-eu-west
:
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
Webブラウザでアドレスを開きます.アプリケーションがエラーなしで動作するはずです.
クリーンアップ
SkupperとBookInfoサービスをクラスタから削除することができます.
名前空間aws-eu-west
:
skupper delete
kubectl delete -f public-cloud.yaml
名前空間laptop
:
skupper delete
kubectl delete -f private-cloud.yaml
最後の思考
マルチクラウドのアプローチを有効にするには多くの利点があり、Skupperのようなツールのおかげで簡単になっています.あなたが時間があるならば、その上でSkupperの他の例のいくらかをためしてくださいGithub Repo . あなたがこのポストから何かを学んだことを願っています.より多くのためにチューニング滞在!
Reference
この問題について(SkupperによるマルチラウドK 8 S通信の実現), 我々は、より多くの情報をここで見つけました
https://dev.to/appfleet/enabling-multicloud-k8s-communication-with-skupper-4b51
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
$ kubectl apply -f public-cloud.yaml
service/productpage created
deployment.extensions/productpage-v1 created
service/ratings created
deployment.extensions/ratings-v1 created
$ kubectl apply -f private-cloud.yaml
service/details created
deployment.extensions/details-v1 created
service/reviews created
deployment.extensions/reviews-v3 created
名前空間
aws-eu-west
:kubectl expose deployment/productpage-v1 --port 9080 --type LoadBalancer
BookInfoアプリケーションは、この入口ポートを介して公共のインターネットからアクセスされますproductpage
サービスステップ3:アプリケーションが動作しないことを観察
BookInfoアプリケーションのWebアドレスは、名前空間からaws-eu-west
:
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
Webブラウザでアドレスを開きます.PropertPageは応答しますが、ページは名前空間のサービスとしてエラーを表示しますlaptop
が到達できない.
我々は今、それを修正することができます.
ステップ4:Skupperをセットアップする
このステップは各クラスタ上のskupper環境を初期化する.
名前空間laptop
:
skupper init
名前空間aws-eu-west
:
skupper init
現在、Skupperインフラストラクチャは走っています.用途skupper status
各コンソール端末では、SkUpperが利用できることを確認します.
$ skupper status
Namespace '<ns>' is ready. It is connected to 0 other namespaces.
次の手順を実行すると、使用することができますskupper status
いつでもあなたの進捗状況を確認します.
ステップ5:あなたのskupperインストールを接続してください
ここで、あなたの名前空間をskupper接続で接続する必要があります.
これは2段階のプロセスです.
The skupper connection-token <file>
コマンドはSkupperのネットワークに接続するために他のSkupperインスタンスに許可を与える証明書で秘密のトークンファイルを生成するSkupperを指示します.
注意:ログイン資格情報を保持するファイルに対してこのファイルを保護します.
The skupper connect <file>
コマンドはSkupperに別のSkupperネットワークに接続するよう指示します.これにより、スカアッパ接続が完了する.
この配置では、Skupperインスタンスはピアネットワークを形成するために結合することに注意してください.典型的に、ネットワークポートのSkupperオープンはパブリッククラスタ上にあります.進行中のクラスタlaptop
インターネットから到達可能なアドレスを持っていないかもしれません.接続が終わった後に、Skupperネットワークメンバーはピアであり、どのSkupperがネットワークポートをオープンしたかは問題ではありません.
このデモのコンソール端末は同じホスト上で同じユーザによって実行されます.これは$ { HOME }ディレクトリのトークンファイルを両方の端末で利用できます.お使いの端末が異なるマシン上にある場合は、使用する必要がありますscp
あるいは、トークンファイルをシステムをホストしているシステムに転送するのと同様のツールlaptop
端末.
Skupperネットワーク接続トークンを生成する
名前空間aws-eu-west
:
skupper connection-token ${HOME}/PVT-to-PUB-connection-token.yaml
スカラップ接続を開く
名前空間laptop
:
skupper connect ${HOME}/PVT-to-PUB-connection-token.yaml
接続をチェックする
名前空間aws-eu-west
:
$ skupper status
Skupper enabled for "aws-eu-west". It is connected to 1 other sites.
名前空間laptop
:
$ skupper status
Skupper enabled for "laptop". It is connected to 1 other sites.
ステップ6 :共有するサービスの仮想化
現在、マルチクラスタ通信ができるSkupperネットワークを持っていますが、サービスはそれに関連付けられていません.このステップはkubectl annotate
Skupperネットワークに含まれるサービスがSkupperに通知するコマンド.
Skupperは、サービスが仮想化されなければならないという徴候として注釈を使います.注釈を受けるサービスはネットワーク要求のための物理的な目標です、そして、他の名前空間でskupper展開するプロキシはネットワーク要求のための仮想目標です.Skupperインフラストラクチャは、仮想サービスとターゲットサービスの間のルート要求をルーティングします.
名前空間aws-eu-west
:
$ kubectl annotate service ratings skupper.io/proxy=http
service/ratings annotated
名前空間laptop
:
$ kubectl annotate service details skupper.io/proxy=http
service/details annotated
$ kubectl annotate service reviews skupper.io/proxy=http
service/reviews annotated
Skupperは現在、Skupperネットワークのすべての名前空間に利用可能な注釈付きサービスを作っています.BookInfoアプリケーションは、productpage
パブリッククラスタのサービスはdetails
and reviews
プライベートクラスタ上のサービスとプライベートクラスタ上のレビューサービスとして、パブリッククラスタ上の格付けサービスへのアクセスがあります.
ステップ7:アプリケーションが動作することを観察する
BookInfoアプリのWebアドレスは、名前空間から発見することができますaws-eu-west
:
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
Webブラウザでアドレスを開きます.アプリケーションがエラーなしで動作するはずです.
クリーンアップ
SkupperとBookInfoサービスをクラスタから削除することができます.
名前空間aws-eu-west
:
skupper delete
kubectl delete -f public-cloud.yaml
名前空間laptop
:
skupper delete
kubectl delete -f private-cloud.yaml
最後の思考
マルチクラウドのアプローチを有効にするには多くの利点があり、Skupperのようなツールのおかげで簡単になっています.あなたが時間があるならば、その上でSkupperの他の例のいくらかをためしてくださいGithub Repo . あなたがこのポストから何かを学んだことを願っています.より多くのためにチューニング滞在!
Reference
この問題について(SkupperによるマルチラウドK 8 S通信の実現), 我々は、より多くの情報をここで見つけました
https://dev.to/appfleet/enabling-multicloud-k8s-communication-with-skupper-4b51
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
このステップは各クラスタ上のskupper環境を初期化する.
名前空間
laptop
:skupper init
名前空間aws-eu-west
:skupper init
現在、Skupperインフラストラクチャは走っています.用途skupper status
各コンソール端末では、SkUpperが利用できることを確認します.$ skupper status
Namespace '<ns>' is ready. It is connected to 0 other namespaces.
次の手順を実行すると、使用することができますskupper status
いつでもあなたの進捗状況を確認します.ステップ5:あなたのskupperインストールを接続してください
ここで、あなたの名前空間をskupper接続で接続する必要があります.
これは2段階のプロセスです.
The skupper connection-token <file>
コマンドはSkupperのネットワークに接続するために他のSkupperインスタンスに許可を与える証明書で秘密のトークンファイルを生成するSkupperを指示します.
注意:ログイン資格情報を保持するファイルに対してこのファイルを保護します.
The skupper connect <file>
コマンドはSkupperに別のSkupperネットワークに接続するよう指示します.これにより、スカアッパ接続が完了する.
この配置では、Skupperインスタンスはピアネットワークを形成するために結合することに注意してください.典型的に、ネットワークポートのSkupperオープンはパブリッククラスタ上にあります.進行中のクラスタlaptop
インターネットから到達可能なアドレスを持っていないかもしれません.接続が終わった後に、Skupperネットワークメンバーはピアであり、どのSkupperがネットワークポートをオープンしたかは問題ではありません.
このデモのコンソール端末は同じホスト上で同じユーザによって実行されます.これは$ { HOME }ディレクトリのトークンファイルを両方の端末で利用できます.お使いの端末が異なるマシン上にある場合は、使用する必要がありますscp
あるいは、トークンファイルをシステムをホストしているシステムに転送するのと同様のツールlaptop
端末.
Skupperネットワーク接続トークンを生成する
名前空間aws-eu-west
:
skupper connection-token ${HOME}/PVT-to-PUB-connection-token.yaml
スカラップ接続を開く
名前空間laptop
:
skupper connect ${HOME}/PVT-to-PUB-connection-token.yaml
接続をチェックする
名前空間aws-eu-west
:
$ skupper status
Skupper enabled for "aws-eu-west". It is connected to 1 other sites.
名前空間laptop
:
$ skupper status
Skupper enabled for "laptop". It is connected to 1 other sites.
ステップ6 :共有するサービスの仮想化
現在、マルチクラスタ通信ができるSkupperネットワークを持っていますが、サービスはそれに関連付けられていません.このステップはkubectl annotate
Skupperネットワークに含まれるサービスがSkupperに通知するコマンド.
Skupperは、サービスが仮想化されなければならないという徴候として注釈を使います.注釈を受けるサービスはネットワーク要求のための物理的な目標です、そして、他の名前空間でskupper展開するプロキシはネットワーク要求のための仮想目標です.Skupperインフラストラクチャは、仮想サービスとターゲットサービスの間のルート要求をルーティングします.
名前空間aws-eu-west
:
$ kubectl annotate service ratings skupper.io/proxy=http
service/ratings annotated
名前空間laptop
:
$ kubectl annotate service details skupper.io/proxy=http
service/details annotated
$ kubectl annotate service reviews skupper.io/proxy=http
service/reviews annotated
Skupperは現在、Skupperネットワークのすべての名前空間に利用可能な注釈付きサービスを作っています.BookInfoアプリケーションは、productpage
パブリッククラスタのサービスはdetails
and reviews
プライベートクラスタ上のサービスとプライベートクラスタ上のレビューサービスとして、パブリッククラスタ上の格付けサービスへのアクセスがあります.
ステップ7:アプリケーションが動作することを観察する
BookInfoアプリのWebアドレスは、名前空間から発見することができますaws-eu-west
:
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
Webブラウザでアドレスを開きます.アプリケーションがエラーなしで動作するはずです.
クリーンアップ
SkupperとBookInfoサービスをクラスタから削除することができます.
名前空間aws-eu-west
:
skupper delete
kubectl delete -f public-cloud.yaml
名前空間laptop
:
skupper delete
kubectl delete -f private-cloud.yaml
最後の思考
マルチクラウドのアプローチを有効にするには多くの利点があり、Skupperのようなツールのおかげで簡単になっています.あなたが時間があるならば、その上でSkupperの他の例のいくらかをためしてくださいGithub Repo . あなたがこのポストから何かを学んだことを願っています.より多くのためにチューニング滞在!
Reference
この問題について(SkupperによるマルチラウドK 8 S通信の実現), 我々は、より多くの情報をここで見つけました
https://dev.to/appfleet/enabling-multicloud-k8s-communication-with-skupper-4b51
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
skupper connection-token ${HOME}/PVT-to-PUB-connection-token.yaml
skupper connect ${HOME}/PVT-to-PUB-connection-token.yaml
$ skupper status
Skupper enabled for "aws-eu-west". It is connected to 1 other sites.
$ skupper status
Skupper enabled for "laptop". It is connected to 1 other sites.
現在、マルチクラスタ通信ができるSkupperネットワークを持っていますが、サービスはそれに関連付けられていません.このステップは
kubectl annotate
Skupperネットワークに含まれるサービスがSkupperに通知するコマンド.Skupperは、サービスが仮想化されなければならないという徴候として注釈を使います.注釈を受けるサービスはネットワーク要求のための物理的な目標です、そして、他の名前空間でskupper展開するプロキシはネットワーク要求のための仮想目標です.Skupperインフラストラクチャは、仮想サービスとターゲットサービスの間のルート要求をルーティングします.
名前空間
aws-eu-west
:$ kubectl annotate service ratings skupper.io/proxy=http
service/ratings annotated
名前空間laptop
:$ kubectl annotate service details skupper.io/proxy=http
service/details annotated
$ kubectl annotate service reviews skupper.io/proxy=http
service/reviews annotated
Skupperは現在、Skupperネットワークのすべての名前空間に利用可能な注釈付きサービスを作っています.BookInfoアプリケーションは、productpage
パブリッククラスタのサービスはdetails
and reviews
プライベートクラスタ上のサービスとプライベートクラスタ上のレビューサービスとして、パブリッククラスタ上の格付けサービスへのアクセスがあります.ステップ7:アプリケーションが動作することを観察する
BookInfoアプリのWebアドレスは、名前空間から発見することができますaws-eu-west
:
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
Webブラウザでアドレスを開きます.アプリケーションがエラーなしで動作するはずです.
クリーンアップ
SkupperとBookInfoサービスをクラスタから削除することができます.
名前空間aws-eu-west
:
skupper delete
kubectl delete -f public-cloud.yaml
名前空間laptop
:
skupper delete
kubectl delete -f private-cloud.yaml
最後の思考
マルチクラウドのアプローチを有効にするには多くの利点があり、Skupperのようなツールのおかげで簡単になっています.あなたが時間があるならば、その上でSkupperの他の例のいくらかをためしてくださいGithub Repo . あなたがこのポストから何かを学んだことを願っています.より多くのためにチューニング滞在!
Reference
この問題について(SkupperによるマルチラウドK 8 S通信の実現), 我々は、より多くの情報をここで見つけました
https://dev.to/appfleet/enabling-multicloud-k8s-communication-with-skupper-4b51
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
$ echo $(kubectl get service/productpage -o jsonpath='http://{.status.loadBalancer.ingress[0].hostname}:9080')
SkupperとBookInfoサービスをクラスタから削除することができます.
名前空間
aws-eu-west
:skupper delete
kubectl delete -f public-cloud.yaml
名前空間laptop
:skupper delete
kubectl delete -f private-cloud.yaml
最後の思考
マルチクラウドのアプローチを有効にするには多くの利点があり、Skupperのようなツールのおかげで簡単になっています.あなたが時間があるならば、その上でSkupperの他の例のいくらかをためしてくださいGithub Repo . あなたがこのポストから何かを学んだことを願っています.より多くのためにチューニング滞在!
Reference
この問題について(SkupperによるマルチラウドK 8 S通信の実現), 我々は、より多くの情報をここで見つけました
https://dev.to/appfleet/enabling-multicloud-k8s-communication-with-skupper-4b51
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(SkupperによるマルチラウドK 8 S通信の実現), 我々は、より多くの情報をここで見つけました https://dev.to/appfleet/enabling-multicloud-k8s-communication-with-skupper-4b51テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol