例
CLI および YAML を使用したサービスネットワークチュートリアル
概要
第1章 サンプルの概要 リンクのコピーリンクがクリップボードにコピーされました!
重要な機能
- 2章Skupper Hello World
- サイト全体にデプロイされる最小限のマルチサービス HTTP アプリケーション。
- 8章患者ポータル
- サイト全体にデプロイされるデータベースベースの Web アプリケーション。
- 9章Trade Zoo
- サイト全体にデプロイされた Kafka ベースの取引アプリケーション。
メッセージング
- 3章Skupper を使用した ActiveMQ へのアクセス
- ActiveMQ メッセージブローカーにアクセスする。
- 7章Skupper を使用した Kafka へのアクセス
- Kafka クラスターにアクセスする。
プロトコル
- 5章Skupper を使用した FTP サーバーへのアクセス
- FTP サーバーにアクセスする。
- 6章iPerf
- iPerf3 を使用して、リアルタイムのネットワークスループット測定を実行する。
その他
- 4章Skupper Camel インテグレーションの例
- Camel からのプライベートオンプレミスデータにアクセスする。
第2章 Skupper Hello World リンクのコピーリンクがクリップボードにコピーされました!
Skupper を使用して Kubernetes クラスター全体にデプロイされた最小限の HTTP アプリケーション
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例は、Skupper を使用して Kubernetes クラスター全体にデプロイされた非常にシンプルなマルチサービス HTTP アプリケーションです。
これには 2 つのサービスが含まれます。
-
/api/helloエンドポイントを公開するバックエンドサービス。これは、Hi, <your-name>.I am <my-name> (<pod-name>)という形式のあいさつを返します。 - フロントエンドサービス。バックエンドにあいさつを送信し、応答として新しい挨拶を取得します。
Skupper を使用すると、バックエンドを 1 つのクラスターに配置し、フロントエンドを別のクラスターに配置して、バックエンドをパブリックインターネットに公開することなく、2 つのサービス間の接続を維持できます。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- クラスターを設定する
- フロントエンドとバックエンドをデプロイする
- サイトを作成する
- サイトをリンクする
- バックエンドを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターを設定します。
Skupper は複数の Kubernetes クラスターで使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作するクラスターと名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
West:
export KUBECONFIG=~/.kube/config-west # Enter your provider-specific login command kubectl create namespace west kubectl config set-context --current --namespace west
export KUBECONFIG=~/.kube/config-west # Enter your provider-specific login command kubectl create namespace west kubectl config set-context --current --namespace westCopy to Clipboard Copied! Toggle word wrap Toggle overflow East:
export KUBECONFIG=~/.kube/config-east # Enter your provider-specific login command kubectl create namespace east kubectl config set-context --current --namespace east
export KUBECONFIG=~/.kube/config-east # Enter your provider-specific login command kubectl create namespace east kubectl config set-context --current --namespace eastCopy to Clipboard Copied! Toggle word wrap Toggle overflow フロントエンドとバックエンドをデプロイします。
この例では、フロントエンドとバックエンドを異なるクラスター上の別々の Kubernetes 名前空間で実行します。
kubectl create deploymentを使用して、フロントエンドを West に、バックエンドを East にデプロイします。West:
kubectl create deployment frontend --image quay.io/skupper/hello-world-frontend
kubectl create deployment frontend --image quay.io/skupper/hello-world-frontendCopy to Clipboard Copied! Toggle word wrap Toggle overflow East:
kubectl create deployment backend --image quay.io/skupper/hello-world-backend --replicas 3
kubectl create deployment backend --image quay.io/skupper/hello-world-backend --replicas 3Copy to Clipboard Copied! Toggle word wrap Toggle overflow サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper initを使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper statusを使用して結果を確認します。West:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow East:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。サイトをリンクします。
Skupper リンクは、2 つのサイト間の通信チャネルです。リンクは、アプリケーションの接続と要求のトランスポートとして機能します。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、West で
skupper token createを使用してトークンを生成します。次に、East でskupper link createを使用して、サイトをリンクします。West:
skupper token create ~/secret.token
skupper token create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper token create ~/secret.token
$ skupper token create ~/secret.token Token written to ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow East:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper link create ~/secret.token
$ skupper link create ~/secret.token Site configured to link to https://10.105.193.154:8081/ed9c37f6-d78a-11ec-a8c7-04421a4c5042 (name=link1) Check the status of the link using 'skupper link status'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。バックエンドを公開します。
現在、サイトはリンクされて Skupper ネットワークを形成していますが、そのネットワーク上でサービスは公開されていません。Skupper は、
skupper exposeコマンドを使用して、リンクされたすべてのサイトで公開するサービスを 1 つのサイトから選択します。skupper exposeを使用して、East のバックエンドサービスを West のフロントエンドに公開します。East:
skupper expose deployment/backend --port 8080
skupper expose deployment/backend --port 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper expose deployment/backend --port 8080
$ skupper expose deployment/backend --port 8080 deployment backend exposed as backendCopy to Clipboard Copied! Toggle word wrap Toggle overflow フロントエンドにします。
アプリケーションを使用およびテストするには、フロントエンドへの外部アクセスが必要です。
kubectl port-forwardを使用して、フロントエンドをlocalhost:8080で利用できるようにします。West:
kubectl port-forward deployment/frontend 8080:8080
kubectl port-forward deployment/frontend 8080:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブラウザーで http://localhost:8080 に移動すると、Web インターフェイスにアクセスできるようになります。
第3章 Skupper を使用した ActiveMQ へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドリソースを使用してプライベートメッセージブローカーからのデータを処理します。
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例は、Skupper を使用して、パブリックインターネットに公開せずにリモートサイトの ActiveMQ ブローカーにアクセスする方法を示したシンプルなメッセージングアプリケーションです。
これには 2 つのサービスが含まれます。
- プライベートデータセンターで実行されている ActiveMQ ブローカー。ブローカーには、"notifications" という名前のキューがあります。
- パブリッククラウドで実行している AMQP クライアント。"notifications" に 10 個のメッセージを送信し、再度受信します。
この例では、ブローカーとして ArtemisCloud.io の Apache ActiveMQ Artemis イメージを使用します。クライアントはシンプルな Quarkus アプリケーションです。
この例では、プライベートデータセンターとパブリッククラウドを表すために、"private" と "public" という 2 つの Kubernetes 名前空間を使用します。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- 名前空間を設定する
- メッセージブローカーをデプロイする
- サイトを作成する
- サイトをリンクする
- メッセージブローカーを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間を設定します。
Skupper は、通常は異なるクラスター上の複数の Kubernetes 名前空間で使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
パブリック:
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace public
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace private
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow メッセージブローカーをデプロイします。
プライベートでは、
kubectl applyコマンドを使用してブローカーをインストールします。プライベート:
kubectl apply -f server
kubectl apply -f serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
kubectl apply -f server
$ kubectl apply -f server deployment.apps/broker createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper initを使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper statusを使用して結果を確認します。パブリック:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。サイトをリンクします。
Skupper リンクは、2 つのサイト間の通信チャネルです。リンクは、アプリケーションの接続と要求のトランスポートとして機能します。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、パブリックサイトの
skupper token createを使用してトークンを生成します。次に、プライベートサイトでskupper link createを使用して、サイトをリンクします。パブリック:
skupper token create ~/secret.token
skupper token create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper token create ~/secret.token
$ skupper token create ~/secret.token Token written to ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper link create ~/secret.token
$ skupper link create ~/secret.token Site configured to link to https://10.105.193.154:8081/ed9c37f6-d78a-11ec-a8c7-04421a4c5042 (name=link1) Check the status of the link using 'skupper link status'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。メッセージブローカーを公開します。
プライベートでは、
skupper exposeを使用して、ブローカーを Skupper ネットワーク上に公開します。次に、Public で
kubectl get service/brokerを使用して、しばらくするとサービスが表示されることを確認します。プライベート:
skupper expose deployment/broker --port 5672
skupper expose deployment/broker --port 5672Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper expose deployment/broker --port 5672
$ skupper expose deployment/broker --port 5672 deployment broker exposed as brokerCopy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック:
kubectl get service/broker
kubectl get service/brokerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
kubectl get service/broker
$ kubectl get service/broker NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE broker ClusterIP 10.100.58.95 <none> 5672/TCP 2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントを実行します。
パブリックでは、
kubectl runを使用してクライアントを実行します。パブリック:
kubectl run client --attach --rm --restart Never --image quay.io/skupper/activemq-example-client --env SERVER=broker
kubectl run client --attach --rm --restart Never --image quay.io/skupper/activemq-example-client --env SERVER=brokerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 Skupper Camel インテグレーションの例 リンクのコピーリンクがクリップボードにコピーされました!
Skupper を使用して Kubernetes クラスター全体に Twitter、Telegram、PostgreSQL インテグレーションルートをデプロイします。
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例では、Skupper を使用して複数の Kubernetes クラスターにデプロイできるさまざまな Camel インテグレーションルーターを統合する方法を説明します。
このプロジェクトは、パブリッククラスターにデプロイされ、skupper という単語を含むツイートを検索する Camel インテグレーションを示すことが主な目的です。これらの結果は、データベースがデプロイされているプライベートクラスターに送信されます。3 番目のパブリッククラスターはデータベースに ping を実行し、新しい結果を Telegram チャネルに送信します。
この例を実行するには、Telegram チャネルとその認証情報を使用する Twitter アカウントを作成する必要があります。
これには、以下のコンポーネントが含まれます。
-
Twitter フィード内で
skupper(public) という単語を含む結果を検索する Twitter Camel インテグレーション。 - Twitter Camel ルーターからデータを受信してデータベース (パブリック) に送信する PostgreSQL Camel シンク。
- 結果を格納する PostgreSQL データベース (プライベート)。
- データベースをポーリングし、その結果を Telegram チャネル (パブリック) に送信する Telegram Camel インテグレーション。
前提条件
-
kubectlコマンドラインツール、バージョン 1.15 以降 -
skupperコマンドラインツール、最新バージョン - 任意のプロバイダーから少なくとも 1 つの Kubernetes クラスターにアクセスできる
名前空間ごとに Camel インテグレーションをデプロイするための
Kamelインストールkamel install
kamel installCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Twitter API を使用するための
Twitter Developer Account(config.propertiesファイルに認証情報を追加する必要があります) -
メッセージを公開するために
Telegramボットとチャネルを作成する (config.propertiesファイルに認証情報を追加する必要があります)
手順
- 個別のコンソールセッションを設定する
- クラスターにアクセスする
- 名前空間を設定する
- 名前空間に Skupper をインストールする
- 名前空間のステータスを確認する
- 名前空間をリンクする
- プライベートクラスターにデータベースをデプロイして公開する
- ツイートを保存するテーブルを作成する
- パブリッククラスターに Twitter Camel インテグレーションをデプロイする
- パブリッククラスターに Telegram Camel インテグレーションをデプロイする
個別のコンソールセッションを設定する
Skupper は、通常は異なるクラスター上の複数の名前空間で使用するように設計されています。
skupperコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
各名前空間のコンソールセッションを開始します。各セッションで
KUBECONFIG環境変数を異なるパスに設定します。private1 のコンソール:
export KUBECONFIG=~/.kube/config-private1
export KUBECONFIG=~/.kube/config-private1Copy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
export KUBECONFIG=~/.kube/config-public1
export KUBECONFIG=~/.kube/config-public1Copy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
export KUBECONFIG=~/.kube/config-public2
export KUBECONFIG=~/.kube/config-public2Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターにアクセスする
クラスターにアクセスする方法は、Kubernetes プロバイダーによって異なります。選択したプロバイダーの手順を確認し、それを使用して各コンソールセッションのアクセスを認証および設定します。詳細は、次のリンクを参照してください。
名前空間を設定する
kubectl create namespaceを使用して、使用する名前空間を作成します (または既存の名前空間を使用します)。kubectl config set-contextを使用して、各セッションの現在の名前空間を設定します。private1 のコンソール:
kubectl create namespace private1 kubectl config set-context --current --namespace private1
kubectl create namespace private1 kubectl config set-context --current --namespace private1Copy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
kubectl create namespace public1 kubectl config set-context --current --namespace public1
kubectl create namespace public1 kubectl config set-context --current --namespace public1Copy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
kubectl create namespace public2 kubectl config set-context --current --namespace public2
kubectl create namespace public2 kubectl config set-context --current --namespace public2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間に Skupper をインストールする
skupper initコマンドは、現在の名前空間に Skupper ルーターとサービスコントローラーをインストールします。各 namespace でskupper initコマンドを実行します。private1 のコンソール:
skupper init
skupper initCopy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
skupper init
skupper initCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper init
skupper initCopy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間のステータスを確認する
各コンソールで
skupper statusを使用して、Skupper がインストールされていることを確認します。private1 のコンソール:
skupper status
skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
skupper status
skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper status
skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間ごとに次のような出力が表示されます。
Skupper is enabled for namespace "<namespace>" in interior mode. It is not connected to any other sites. It has no exposed services. The site console url is: http://<address>:8080 The credentials for internal console-auth mode are held in secret: 'skupper-console-users'
Skupper is enabled for namespace "<namespace>" in interior mode. It is not connected to any other sites. It has no exposed services. The site console url is: http://<address>:8080 The credentials for internal console-auth mode are held in secret: 'skupper-console-users'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。名前空間をリンクする
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモート名前空間で、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成した名前空間へのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、名前空間にリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、1 つの名前空間で
skupper token createを使用してトークンを生成します。次に、もう 1 つでskupper link createを使用してリンクを作成します。public1 のコンソール:
skupper token create ~/public1.token --uses 2
skupper token create ~/public1.token --uses 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper link create ~/public1.token skupper link status --wait 30 skupper token create ~/public2.token
skupper link create ~/public1.token skupper link status --wait 30 skupper token create ~/public2.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow private1 のコンソール:
skupper link create ~/public1.token skupper link create ~/public2.token skupper link status --wait 30
skupper link create ~/public1.token skupper link create ~/public2.token skupper link status --wait 30Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンソールセッションが異なるマシン上にある場合は、トークンを転送するために
scpまたは同様のツールを使用する必要がある場合があります。プライベートクラスターにデータベースをデプロイして公開する
kubectl applyを使用して、private1にデータベースをデプロイします。次に、デプロイメントを公開します。private1 のコンソール:
kubectl create -f src/main/resources/database/postgres-svc.yaml skupper expose deployment postgres --address postgres --port 5432 -n private1
kubectl create -f src/main/resources/database/postgres-svc.yaml skupper expose deployment postgres --address postgres --port 5432 -n private1Copy to Clipboard Copied! Toggle word wrap Toggle overflow ツイートを保存するテーブルを作成する
private1 のコンソール:
kubectl run pg-shell -i --tty --image quay.io/skupper/simple-pg --env="PGUSER=postgresadmin" --env="PGPASSWORD=admin123" --env="PGHOST=$(kubectl get service postgres -o=jsonpath='{.spec.clusterIP}')" -- bash psql --dbname=postgresdb CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE TABLE tw_feedback (id uuid DEFAULT uuid_generatev4 (),sigthning VARCHAR(255),created TIMESTAMP default CURRENTTIMESTAMP,PRIMARY KEY(id));kubectl run pg-shell -i --tty --image quay.io/skupper/simple-pg --env="PGUSER=postgresadmin" --env="PGPASSWORD=admin123" --env="PGHOST=$(kubectl get service postgres -o=jsonpath='{.spec.clusterIP}')" -- bash psql --dbname=postgresdb CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE TABLE tw_feedback (id uuid DEFAULT uuid_generatev4 (),sigthning VARCHAR(255),created TIMESTAMP default CURRENTTIMESTAMP,PRIMARY KEY(id));Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリッククラスターに Twitter Camel インテグレーションをデプロイする
まず、kamel を使用して
TwitterRouteコンポーネントを Kubernetes にデプロイする必要があります。このコンポーネントは、5000 ミリ秒ごとに Twitter をポーリングして、skupperという単語を含むツイートを検索します。その後、postgresql-sinkに結果を送信します。この postgresql-sink は、同じクラスター内にインストールしておく必要があります。kamelet シンクは、結果を postgreSQL データベースに挿入します。public1 のコンソール:
src/main/resources/scripts/setUpPublic1Cluster.sh
src/main/resources/scripts/setUpPublic1Cluster.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow パブリッククラスターに Telegram Camel インテグレーションをデプロイする
このステップでは、
TelegramRouteコンポーネントで使用するために、データベース認証情報を含むシークレットを Kubernetes にインストールします。その後、Kamel を使用してTelegramRouteを Kubernetes クラスターにデプロイします。このコンポーネントは 3 秒ごとにデータベースをポーリングし、最後の 3 秒間に挿入された結果を収集します。public2 のコンソール:
src/main/resources/scripts/setUpPublic2Cluster.sh
src/main/resources/scripts/setUpPublic2Cluster.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをテストする
全体の流れを確認するには、
skupperという単語を含むツイートを投稿する必要があります。その後、Telegram チャネルにNew feedback about Skupperというタイトルの新しいメッセージが表示されます。private1 のコンソール:
kubectl attach pg-shell -c pg-shell -i -t psql --dbname=postgresdb SELECT * FROM twfeedback;
kubectl attach pg-shell -c pg-shell -i -t psql --dbname=postgresdb SELECT * FROM twfeedback;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
id | sigthning | created --------------------------------------+-----------------+---------------------------- 95655229-747a-4787-8133-923ef0a1b2ca | Testing skupper | 2022-03-10 19:35:08.412542
id | sigthning | created --------------------------------------+-----------------+---------------------------- 95655229-747a-4787-8133-923ef0a1b2ca | Testing skupper | 2022-03-10 19:35:08.412542Copy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
kamel logs twitter-route
kamel logs twitter-routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
"[1] 2022-03-10 19:35:08,397 INFO [postgresql-sink-1] (Camel (camel-1) thread #0 - twitter-search://skupper) Testing skupper"
"[1] 2022-03-10 19:35:08,397 INFO [postgresql-sink-1] (Camel (camel-1) thread #0 - twitter-search://skupper) Testing skupper"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 Skupper を使用した FTP サーバーへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
リモート Kubernetes クラスター上の FTP サーバーに安全に接続します。
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例では、Skupper を使用して、ある Kubernetes クラスター上の FTP クライアントを別の Kubernetes クラスター上の FTP サーバーに接続する方法を示します。
FTP などのマルチポートサービスでの Skupper の使用法を示します。これは、パッシブモードの FTP (最近ではより一般的) と 制限されたポート範囲 を使用して、Skupper の設定を簡素化します。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- 名前空間を設定する
- FTP サーバーをデプロイする
- サイトを作成する
- サイトをリンクする
- FTP サーバーを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間を設定します。
Skupper は、通常は異なるクラスター上の複数の Kubernetes 名前空間で使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
パブリック:
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace public
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace private
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow FTP サーバーをデプロイします。
プライベートでは、
kubectl applyを使用して FTP サーバーをデプロイします。プライベート:
kubectl apply -f server
kubectl apply -f serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
kubectl apply -f server
$ kubectl apply -f server deployment.apps/ftp-server createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper initを使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper statusを使用して結果を確認します。パブリック:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。サイトをリンクします。
Skupper リンクは、2 つのサイト間の通信チャネルです。リンクは、アプリケーションの接続と要求のトランスポートとして機能します。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、パブリックサイトの
skupper token createを使用してトークンを生成します。次に、プライベートサイトでskupper link createを使用して、サイトをリンクします。パブリック:
skupper token create ~/secret.token
skupper token create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper token create ~/secret.token
$ skupper token create ~/secret.token Token written to ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper link create ~/secret.token
$ skupper link create ~/secret.token Site configured to link to https://10.105.193.154:8081/ed9c37f6-d78a-11ec-a8c7-04421a4c5042 (name=link1) Check the status of the link using 'skupper link status'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。FTP サーバーを公開します。
プライベートでは、
skupper exposeを使用して、リンクされたすべてのサイトで FTP サーバーを公開します。プライベート:
skupper expose deployment/ftp-server --port 21100 --port 21
skupper expose deployment/ftp-server --port 21100 --port 21Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper expose deployment/ftp-server --port 21100 --port 21
$ skupper expose deployment/ftp-server --port 21100 --port 21 deployment ftp-server exposed as ftp-serverCopy to Clipboard Copied! Toggle word wrap Toggle overflow FTP クライアントを実行します。
パブリックでは、
kubectl runとcurlイメージを使用して、FTP の put および get 操作を実行します。パブリック:
echo "Hello!" | kubectl run ftp-client --stdin --rm --image=docker.io/curlimages/curl --restart=Never -- -s -T - ftp://example:example@ftp-server/greeting kubectl run ftp-client --attach --rm --image=docker.io/curlimages/curl --restart=Never -- -s ftp://example:example@ftp-server/greeting
echo "Hello!" | kubectl run ftp-client --stdin --rm --image=docker.io/curlimages/curl --restart=Never -- -s -T - ftp://example:example@ftp-server/greeting kubectl run ftp-client --attach --rm --image=docker.io/curlimages/curl --restart=Never -- -s ftp://example:example@ftp-server/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 iPerf リンクのコピーリンクがクリップボードにコピーされました!
iPerf3 を使用しながら、リアルタイムのネットワークスループット測定を実行します。
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
このチュートリアルでは、iperf3 ツールを使用して Kubernetes 全体でリアルタイムのネットワークスループット測定を実行する方法を説明します。このチュートリアルでは、次のことを行います。
- iperf3 を 3 つの別々のクラスターにデプロイする
- iperf3 クライアントテストインスタンスを実行する
前提条件
-
kubectlコマンドラインツール、バージョン 1.15 以降 - パフォーマンスを確認するために 3 つのクラスターにアクセスできる。たとえば、3 つのクラスターは、以下のような構成になります。
- ローカルマシン上で実行されるプライベートクラウドクラスター (private1)
- パブリッククラウドプロバイダーで実行されている 2 つのパブリッククラウドクラスター (public1 と public2)
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- 個別のコンソールセッションを設定する
- クラスターにアクセスする
- 名前空間を設定する
- 名前空間に Skupper をインストールする
- 名前空間のステータスを確認する
- 名前空間をリンクする
- iperf3 サーバーをデプロイする
- 各名前空間から iperf3 を公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
skupperコマンドラインツールは、Skupper をインストールおよび設定するためのエントリーポイントです。開発環境ごとにskupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow Windows およびその他のインストールオプションについては、Installing Skupper を参照してください。
個別のコンソールセッションを設定します。
Skupper は、通常は異なるクラスター上の複数の名前空間で使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
各名前空間のコンソールセッションを開始します。各セッションで
KUBECONFIG環境変数を異なるパスに設定します。public1 のコンソール:
export KUBECONFIG=~/.kube/config-public1
export KUBECONFIG=~/.kube/config-public1Copy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
export KUBECONFIG=~/.kube/config-public2
export KUBECONFIG=~/.kube/config-public2Copy to Clipboard Copied! Toggle word wrap Toggle overflow private1 のコンソール:
export KUBECONFIG=~/.kube/config-private1
export KUBECONFIG=~/.kube/config-private1Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターにアクセスします。
Kubernetes クラスターにアクセスする手順はプロバイダーによって異なります。選択したプロバイダーの手順 を確認し、それを使用して各コンソールセッションのアクセスを認証および設定します。
名前空間を設定します。
kubectl create namespaceを使用して、使用する名前空間を作成します (または既存の名前空間を使用します)。kubectl config set-contextを使用して、各セッションの現在の名前空間を設定します。public1 のコンソール:
kubectl create namespace public1 kubectl config set-context --current --namespace public1
kubectl create namespace public1 kubectl config set-context --current --namespace public1Copy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
kubectl create namespace public2 kubectl config set-context --current --namespace public2
kubectl create namespace public2 kubectl config set-context --current --namespace public2Copy to Clipboard Copied! Toggle word wrap Toggle overflow private1 のコンソール:
kubectl create namespace private1 kubectl config set-context --current --namespace private1
kubectl create namespace private1 kubectl config set-context --current --namespace private1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間に Skupper をインストールします。
skupper initコマンドは、現在の名前空間に Skupper ルーターとコントローラーをインストールします。各 namespace でskupper initコマンドを実行します。public1 のコンソール:
skupper init --enable-console --enable-flow-collector
skupper init --enable-console --enable-flow-collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper init
skupper initCopy to Clipboard Copied! Toggle word wrap Toggle overflow private1 のコンソール:
skupper init
skupper initCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper init
$ skupper init Waiting for LoadBalancer IP or hostname... Waiting for status... Skupper is now installed in namespace '<namespace>'. Use 'skupper status' to get more information.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間のステータスを確認します。
各コンソールで
skupper statusを使用して、Skupper がインストールされていることを確認します。public1 のコンソール:
skupper status
skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper status
skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow private1 のコンソール:
skupper status
skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Skupper is enabled for namespace "<namespace>" in interior mode. It is connected to 1 other site. It has 1 exposed service. The site console url is: <console-url> The credentials for internal console-auth mode are held in secret: 'skupper-console-users'
Skupper is enabled for namespace "<namespace>" in interior mode. It is connected to 1 other site. It has 1 exposed service. The site console url is: <console-url> The credentials for internal console-auth mode are held in secret: 'skupper-console-users'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。名前空間をリンクします。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモート名前空間で、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成した名前空間へのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、名前空間にリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、1 つの名前空間で
skupper token createを使用してトークンを生成します。次に、もう 1 つでskupper link createを使用してリンクを作成します。public1 のコンソール:
skupper token create ~/private1-to-public1-token.yaml skupper token create ~/public2-to-public1-token.yaml
skupper token create ~/private1-to-public1-token.yaml skupper token create ~/public2-to-public1-token.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper token create ~/private1-to-public2-token.yaml skupper link create ~/public2-to-public1-token.yaml skupper link status --wait 60
skupper token create ~/private1-to-public2-token.yaml skupper link create ~/public2-to-public1-token.yaml skupper link status --wait 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow private1 のコンソール:
skupper link create ~/private1-to-public1-token.yaml skupper link create ~/private1-to-public2-token.yaml skupper link status --wait 60
skupper link create ~/private1-to-public1-token.yaml skupper link create ~/private1-to-public2-token.yaml skupper link status --wait 60Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンソールセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。iperf3 サーバーをデプロイします。
アプリケーションルーターネットワークを作成したら、各名前空間に
iperf3をデプロイします。private1 のコンソール:
kubectl apply -f deployment-iperf3-a.yaml
kubectl apply -f deployment-iperf3-a.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
kubectl apply -f deployment-iperf3-b.yaml
kubectl apply -f deployment-iperf3-b.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
kubectl apply -f deployment-iperf3-c.yaml
kubectl apply -f deployment-iperf3-c.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 各名前空間から iperf3 を公開します。
名前空間間の接続を確立し、
iperf3をデプロイしました。パフォーマンスをテストする前に、各 namespace からiperf3にアクセスする必要があります。private1 のコンソール:
skupper expose deployment/iperf3-server-a --port 5201
skupper expose deployment/iperf3-server-a --port 5201Copy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
skupper expose deployment/iperf3-server-b --port 5201
skupper expose deployment/iperf3-server-b --port 5201Copy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
skupper expose deployment/iperf3-server-c --port 5201
skupper expose deployment/iperf3-server-c --port 5201Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター全体でベンチマークテストを実行します。
iperf3 サーバーをプライベートクラウドクラスターとパブリッククラウドクラスターにデプロイすると、仮想アプリケーションネットワークでは、サーバーが別々のクラスターで実行されていても通信が可能になります。
private1 のコンソール:
kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-ckubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b kubectl exec $(kubectl get pod -l application=iperf3-server-a -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-cCopy to Clipboard Copied! Toggle word wrap Toggle overflow public1 のコンソール:
kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-ckubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b kubectl exec $(kubectl get pod -l application=iperf3-server-b -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-cCopy to Clipboard Copied! Toggle word wrap Toggle overflow public2 のコンソール:
kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-ckubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-a kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-b kubectl exec $(kubectl get pod -l application=iperf3-server-c -o=jsonpath='{.items[0].metadata.name}') -- iperf3 -c iperf3-server-cCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第7章 Skupper を使用した Kafka へのアクセス リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドリソースを使用したプライベート Kafka クラスターからのデータの処理
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例は、Skupper を使用して、パブリックインターネットに公開せずにリモートサイトの Kafka クラスターにアクセスする方法を示したシンプルな Kafka アプリケーションです。
これには 2 つのサービスが含まれます。
- プライベートデータセンターで実行されている "cluster1" という名前の Kafka クラスター。クラスターには "topic1" という名前のトピックがあります。
- パブリッククラウドで実行される Kafka クライアント。"topic1" に 10 個のメッセージを送信し、再度受信します。
この例では、Kafka クラスターをセットアップするために、Strimzi プロジェクトの Kubernetes Operator を使用します。Kafka クライアントは、Quarkus を使用して構築された Java アプリケーションです。
この例では、プライベートデータセンターとパブリッククラウドを表すために、"private" と "public" という 2 つの Kubernetes 名前空間を使用します。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- 名前空間を設定する
- Kafka クラスターをデプロイする
- サイトを作成する
- サイトをリンクする
- Kafka クラスターを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間を設定します。
Skupper は、通常は異なるクラスター上の複数の Kubernetes 名前空間で使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
パブリック:
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace public
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace private
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka クラスターをデプロイします。
プライベートでは、リストされた YAML ファイルを使用して
kubectl createコマンドとkubectl applyコマンドを使用し、Operator をインストールしてクラスターとトピックをデプロイします。プライベート:
kubectl create -f server/strimzi.yaml kubectl apply -f server/cluster1.yaml kubectl wait --for condition=ready --timeout 900s kafka/cluster1
kubectl create -f server/strimzi.yaml kubectl apply -f server/cluster1.yaml kubectl wait --for condition=ready --timeout 900s kafka/cluster1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
デフォルトでは、Kafka ブートストラップサーバーは、ドメイン名に Kubernetes 名前空間が含まれるブローカーアドレスを返します。この例のように、Kafka クライアントが Kafka クラスターとは異なる名前の名前空間で実行されている場合、クライアントは Kafka ブローカーを解決できなくなります。
Kafka ブローカーにアクセスできるようにするには、各ブローカーの
advertisedHostプロパティーを、Kafka クライアントがリモートサイトで解決できるドメイン名に設定します。この例では、次のリスナー設定を使用してこれを行います。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、Advertised addresses for brokers を参照してください。
サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper initを使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper statusを使用して結果を確認します。パブリック:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。サイトをリンクします。
Skupper リンクは、2 つのサイト間の通信チャネルです。リンクは、アプリケーションの接続と要求のトランスポートとして機能します。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、パブリックサイトの
skupper token createを使用してトークンを生成します。次に、プライベートサイトでskupper link createを使用して、サイトをリンクします。パブリック:
skupper token create ~/secret.token
skupper token create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper token create ~/secret.token
$ skupper token create ~/secret.token Token written to ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper link create ~/secret.token
$ skupper link create ~/secret.token Site configured to link to https://10.105.193.154:8081/ed9c37f6-d78a-11ec-a8c7-04421a4c5042 (name=link1) Check the status of the link using 'skupper link status'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。Kafka クラスターを公開します。
プライベートでは、
--headlessオプションを指定したskupper exposeを使用して、Kafka クラスターを Skupper ネットワーク上のヘッドレスサービスとして公開します。次に、パブリックで
kubectl get serviceコマンドを使用して、しばらくするとcluster1-kafka-brokersサービスが表示されることを確認します。プライベート:
skupper expose statefulset/cluster1-kafka --headless --port 9092
skupper expose statefulset/cluster1-kafka --headless --port 9092Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper expose statefulset/cluster1-kafka --headless --port 9092
$ skupper expose statefulset/cluster1-kafka --headless --port 9092 statefulset cluster1-kafka exposed as cluster1-kafka-brokersCopy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック:
kubectl get service/cluster1-kafka-brokers
kubectl get service/cluster1-kafka-brokersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
kubectl get service/cluster1-kafka-brokers
$ kubectl get service/cluster1-kafka-brokers NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE cluster1-kafka-brokers ClusterIP None <none> 9092/TCP 2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントを実行します。
kubectl runコマンドを使用して、パブリクでクライアントプログラムを実行します。パブリック:
kubectl run client --attach --rm --restart Never --image quay.io/skupper/kafka-example-client --env BOOTSTRAPSERVERS=cluster1-kafka-brokers:9092
kubectl run client --attach --rm --restart Never --image quay.io/skupper/kafka-example-client --env BOOTSTRAPSERVERS=cluster1-kafka-brokers:9092Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントコードを確認するには、このプロジェクトの クライアントディレクトリー を参照してください。
第8章 患者ポータル リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドで実行され、データをプライベートデータベースに保存する、シンプルなデータベースベースの Web アプリケーションです。
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例は、Skupper を使用して、パブリックインターネットに公開せずにリモートサイトのデータベースにアクセスする方法を示す、データベースをバックアップしたシンプルな Web アプリケーションです。
これには、3 つのサービスが含まれます。
- プライベートデータセンター内のベアメタルまたは仮想マシン上で実行される PostgreSQL データベース。
- プライベートデータセンターの Kubernetes 上で実行される支払い処理サービス。
- パブリッククラウドの Kubernetes 上で実行される Web フロントエンドサービス。PostgreSQL データベースと支払い処理サービスを使用します。
この例では、private と public という 2 つの Kubernetes 名前空間を使用して、プライベートデータセンター内の Kubernetes クラスターとパブリッククラウド内のクラスターを表します。Podman を使用してデータベースを実行します。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- Kubernetes 名前空間を設定する
- Podman ネットワークを設定する
- アプリケーションのデプロイ
- サイトを作成する
- サイトをリンクする
- アプリケーションサービスを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kubernetes 名前空間を設定します。
Skupper は、通常は異なるクラスター上の複数の Kubernetes 名前空間で使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
パブリック:
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace public
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace private
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Podman ネットワークを設定します。
新しいターミナルウィンドウを開き、
SKUPPERPLATFORM環境変数をpodmanに設定します。これにより、このターミナルセッションの Skupper プラットフォームが Podman に設定されます。podman network createを使用して、Skupper が使用する Podman ネットワークを作成します。systemctlを使用して Podman API サービスを有効にします。Podman:
export SKUPPERPLATFORM=podman podman network create skupper systemctl --user enable --now podman.socket
export SKUPPERPLATFORM=podman podman network create skupper systemctl --user enable --now podman.socketCopy to Clipboard Copied! Toggle word wrap Toggle overflow systemctlコマンドが機能しない場合は、代わりにpodman system serviceコマンドを試してください。podman system service --time=0 unix://$XDGRUNTIMEDIR/podman/podman.sock &
podman system service --time=0 unix://$XDGRUNTIMEDIR/podman/podman.sock &Copy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションをデプロイします。
kubectl applyを使用して、フロントエンドと支払いプロセッサーを Kubernetes にデプロイします。podman runを使用して、ローカルマシンでデータベースを起動します。注記Skupper がサービスにアクセスするために作成するコンテナーとの衝突を避けるために、実行中のコンテナーに
--nameを使用して名前を付けることが重要です。注記podman runコマンドでは--network skupperを使用する必要があります。パブリック:
kubectl apply -f frontend/kubernetes.yaml
kubectl apply -f frontend/kubernetes.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
kubectl apply -f payment-processor/kubernetes.yaml
kubectl apply -f payment-processor/kubernetes.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Podman:
podman run --name database-target --network skupper --detach --rm -p 5432:5432 quay.io/skupper/patient-portal-database
podman run --name database-target --network skupper --detach --rm -p 5432:5432 quay.io/skupper/patient-portal-databaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow サイトを作成します。
パブリック:
skupper init
skupper initCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper init --ingress none
skupper init --ingress noneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Podman:
skupper init --ingress none
skupper init --ingress noneCopy to Clipboard Copied! Toggle word wrap Toggle overflow サイトをリンクします。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、パブリックサイトの
skupper token createを使用してトークンを生成します。次に、プライベートサイトでskupper link createを使用して、サイトをリンクします。パブリック:
skupper token create --uses 2 ~/secret.token
skupper token create --uses 2 ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow Podman:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。アプリケーションサービスを公開します。
プライベートでは、
skupper exposeを使用して支払い処理サービスを公開します。Podman では、
skupper service createとskupper service bindを使用して、Skupper ネットワーク上のデータベースを公開します。次に、パブリックで
skupper service createを使用して利用できるようにします。注記Podman サイトは、リモートサイトにサービスを自動的に複製しません。サービスを利用可能にする各サイトで
skupper service createを使用する必要があります。プライベート:
skupper expose deployment/payment-processor --port 8080
skupper expose deployment/payment-processor --port 8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman:
skupper service create database 5432 skupper service bind database host database-target --target-port 5432
skupper service create database 5432 skupper service bind database host database-target --target-port 5432Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック:
skupper service create database 5432
skupper service create database 5432Copy to Clipboard Copied! Toggle word wrap Toggle overflow フロントエンドにアクセスします。
アプリケーションを使用およびテストするには、フロントエンドへの外部アクセスが必要です。
--type LoadBalancerを指定したkubectl exposeを使用して、フロントエンドサービスへのネットワークアクセスを開放します。フロントエンドが公開されたら、
kubectl get service/frontendを使用して、フロントエンドサービスの外部 IP を検索します。外部 IP が<pending>の場合は、しばらくしてからもう一度お試しください。外部 IP を取得したら、
curlまたは同様のツールを使用して、そのアドレスの/api/healthエンドポイントを要求します。注記次のコマンドの
<external-ip>フィールドはプレースホルダーです。実際の値は IP アドレスです。パブリック:
kubectl expose deployment/frontend --port 8080 --type LoadBalancer kubectl get service/frontend curl http://<external-ip>:8080/api/health
kubectl expose deployment/frontend --port 8080 --type LoadBalancer kubectl get service/frontend curl http://<external-ip>:8080/api/healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてが正常であれば、ブラウザーで
http://<external-ip>:8080/に移動して Web インターフェイスにアクセスできるようになります。
第9章 Trade Zoo リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドで実行され、データはプライベート Kafka クラスターに保存されるシンプルな取引アプリケーションです。
この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。
概要
この例は、Skupper を使用して、パブリックインターネットに公開せずにリモートサイトの Kafka クラスターにアクセスする方法を示したシンプルな Kafka アプリケーションです。
これには、4 つのサービスが含まれています。
- プライベートデータセンターで実行されている Kafka クラスター。クラスターには、"orders" と "updates" という 2 つのトピックがあります。
- パブリッククラウドで実行される order プロセッサー。"orders" から消費され、買いと売りのオファーをマッチングさせて取引を行います。新規および更新された注文と取引を "updates" として公開します。
- パブリッククラウドで実行される市場データサービス。完了した取引を調べて最新の価格と平均価格を計算し、それを "updates" として公開します。
- パブリッククラウドで実行される Web フロントエンドサービス。売買注文を "orders" に送信し、"updates" から消費して、何が起こっているかを表示します。
この例では、Kafka クラスターをセットアップするために、Strimzi プロジェクトの Kubernetes Operator を使用します。その他のサービスは小さな Python プログラムです。
この例では、プライベートデータセンターとパブリッククラウドを表すために、"private" と "public" という 2 つの Kubernetes 名前空間を使用します。
手順
- この例のリポジトリーのクローンを作成する
- Skupper コマンドラインツールをインストールする
- 名前空間を設定する
- Kafka クラスターをデプロイする
- アプリケーションサービスをデプロイする
- サイトを作成する
- サイトをリンクする
- Kafka クラスターを公開する
- この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
Skupper コマンドラインツールをインストールします。
この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに
skupperコマンドを 1 回だけインストールする必要があります。CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。
sudo dnf install skupper-cli
sudo dnf install skupper-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow 名前空間を設定します。
Skupper は、通常は異なるクラスター上の複数の Kubernetes 名前空間で使用するように設計されています。
skupperコマンドとkubectlコマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。kubeconfig はホームディレクトリーのファイルに保存されます。
skupperおよびkubectlコマンドは、KUBECONFIG環境変数を使用してこれを検索します。1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。
名前空間ごとに、新しいターミナルウィンドウを開きます。各ターミナルで、
KUBECONFIG環境変数を別のパスに設定し、クラスターにログインします。次に、使用する名前空間を作成し、現在のコンテキストに名前空間を設定します。注記ログイン手順はプロバイダーによって異なります。以下のドキュメントを参照してください。
パブリック:
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace public
export KUBECONFIG=~/.kube/config-public # Enter your provider-specific login command kubectl create namespace public kubectl config set-context --current --namespace publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace private
export KUBECONFIG=~/.kube/config-private # Enter your provider-specific login command kubectl create namespace private kubectl config set-context --current --namespace privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Kafka クラスターをデプロイします。
プライベートでは、リストされた YAML ファイルを使用して
kubectl createコマンドとkubectl applyコマンドを使用し、Operator をインストールしてクラスターとトピックをデプロイします。プライベート:
kubectl create -f kafka-cluster/strimzi.yaml kubectl apply -f kafka-cluster/cluster1.yaml kubectl wait --for condition=ready --timeout 900s kafka/cluster1
kubectl create -f kafka-cluster/strimzi.yaml kubectl apply -f kafka-cluster/cluster1.yaml kubectl wait --for condition=ready --timeout 900s kafka/cluster1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記:
デフォルトでは、Kafka ブートストラップサーバーは、ドメイン名に Kubernetes 名前空間が含まれるブローカーアドレスを返します。この例のように、Kafka クライアントが Kafka クラスターとは異なる名前の名前空間で実行されている場合、クライアントは Kafka ブローカーを解決できなくなります。
Kafka ブローカーにアクセスできるようにするには、各ブローカーの
advertisedHostプロパティーを、Kafka クライアントがリモートサイトで解決できるドメイン名に設定します。この例では、次のリスナー設定を使用してこれを行います。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は、Advertised addresses for brokers を参照してください。
アプリケーションサービスをデプロイします。
パブリックでは、リストされた YAML ファイルとともに
kubectl applyコマンドを使用して、アプリケーションサービスをインストールします。パブリック:
kubectl apply -f order-processor/kubernetes.yaml kubectl apply -f market-data/kubernetes.yaml kubectl apply -f frontend/kubernetes.yaml
kubectl apply -f order-processor/kubernetes.yaml kubectl apply -f market-data/kubernetes.yaml kubectl apply -f frontend/kubernetes.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow サイトを作成します。
Skupper サイトは、アプリケーションのコンポーネントが実行される場所です。サイトは相互にリンクされ、アプリケーションのネットワークを形成します。Kubernetes では、サイトは名前空間に関連付けられます。
名前空間ごとに、
skupper initを使用してサイトを作成します。これにより、Skupper ルーターとコントローラーがデプロイされます。次に、skupper statusを使用して結果を確認します。パブリック:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper init skupper status
skupper init skupper statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の手順を実行する場合は、いつでも
skupper statusを使用して進捗状況を確認できます。サイトをリンクします。
Skupper リンクは、2 つのサイト間の通信チャネルです。リンクは、アプリケーションの接続と要求のトランスポートとして機能します。
リンクを作成するには、
skupper token createとskupper link createの 2 つのskupperコマンドを組み合わせて使用する必要があります。skupper token createコマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link createコマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。注記リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。
まず、パブリックサイトの
skupper token createを使用してトークンを生成します。次に、プライベートサイトでskupper link createを使用して、サイトをリンクします。パブリック:
skupper token create ~/secret.token
skupper token create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper token create ~/secret.token
$ skupper token create ~/secret.token Token written to ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper link create ~/secret.token
skupper link create ~/secret.tokenCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
skupper link create ~/secret.token
$ skupper link create ~/secret.token Site configured to link to https://10.105.193.154:8081/ed9c37f6-d78a-11ec-a8c7-04421a4c5042 (name=link1) Check the status of the link using 'skupper link status'.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために
scpまたは同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。Kafka クラスターを公開します。
プライベートでは、
--headlessオプションを指定したskupper exposeを使用して、Kafka クラスターを Skupper ネットワーク上のヘッドレスサービスとして公開します。次に、Public で
kubectl get serviceを使用して、しばらくするとcluster1-kafka-brokersサービスが表示されることを確認します。プライベート:
skupper expose statefulset/cluster1-kafka --headless --port 9092
skupper expose statefulset/cluster1-kafka --headless --port 9092Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック:
kubectl get service/cluster1-kafka-brokers
kubectl get service/cluster1-kafka-brokersCopy to Clipboard Copied! Toggle word wrap Toggle overflow フロントエンドにアクセスします。
アプリケーションを使用およびテストするには、フロントエンドへの外部アクセスが必要です。
--type LoadBalancerを指定したkubectl exposeを使用して、フロントエンドサービスへのネットワークアクセスを開放します。フロントエンドが公開されたら、
kubectl get service/frontendを使用して、フロントエンドサービスの外部 IP を検索します。外部 IP が<pending>の場合は、しばらくしてからもう一度お試しください。外部 IP を取得したら、
curlまたは同様のツールを使用して、そのアドレスの/api/healthエンドポイントを要求します。注記次のコマンドの
<external-ip>フィールドはプレースホルダーです。実際の値は IP アドレスです。パブリック:
kubectl expose deployment/frontend --port 8080 --type LoadBalancer kubectl get service/frontend curl http://<external-ip>:8080/api/health
kubectl expose deployment/frontend --port 8080 --type LoadBalancer kubectl get service/frontend curl http://<external-ip>:8080/api/healthCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてが正常であれば、ブラウザーで
http://<external-ip>:8080/に移動して Web インターフェイスにアクセスできるようになります。