第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
  • Twitter API を使用するための Twitter Developer Account (config.properties ファイルに認証情報を追加する必要があります)
  • メッセージを公開するために Telegram ボットとチャネルを作成する (config.properties ファイルに認証情報を追加する必要があります)

手順

  • 個別のコンソールセッションを設定する
  • クラスターにアクセスする
  • 名前空間を設定する
  • 名前空間に Skupper をインストールする
  • 名前空間のステータスを確認する
  • 名前空間をリンクする
  • プライベートクラスターにデータベースをデプロイして公開する
  • ツイートを保存するテーブルを作成する
  • パブリッククラスターに Twitter Camel インテグレーションをデプロイする
  • パブリッククラスターに Telegram Camel インテグレーションをデプロイする
  • アプリケーションをテストする

    1. 個別のコンソールセッションを設定する

      Skupper は、通常は異なるクラスター上の複数の名前空間で使用するように設計されています。skupper コマンドは、kubeconfig と現在のコンテキストを使用して、動作する名前空間を選択します。

      kubeconfig はホームディレクトリーのファイルに保存されます。skupper および kubectl コマンドは、KUBECONFIG 環境変数を使用してこれを検索します。

      1 つの kubeconfig は、ユーザーごとにアクティブコンテキストを 1 つだけサポートします。この演習では複数のコンテキストを一度に使用するため、個別の kubeconfig を作成する必要があります。

      各名前空間のコンソールセッションを開始します。各セッションで KUBECONFIG 環境変数を異なるパスに設定します。

      private1 のコンソール:

      export KUBECONFIG=~/.kube/config-private1

      public1 のコンソール:

      export KUBECONFIG=~/.kube/config-public1

      public2 のコンソール:

      export KUBECONFIG=~/.kube/config-public2
    2. クラスターにアクセスする

      クラスターにアクセスする方法は、Kubernetes プロバイダーによって異なります。選択したプロバイダーの手順を確認し、それを使用して各コンソールセッションのアクセスを認証および設定します。詳細は、次のリンクを参照してください。

    3. 名前空間を設定する

      kubectl create namespace を使用して、使用する名前空間を作成します (または既存の名前空間を使用します)。kubectl config set-context を使用して、各セッションの現在の名前空間を設定します。

      private1 のコンソール:

      kubectl create namespace private1
      kubectl config set-context --current --namespace private1

      public1 のコンソール:

      kubectl create namespace public1
      kubectl config set-context --current --namespace public1

      public2 のコンソール:

      kubectl create namespace public2
      kubectl config set-context --current --namespace public2
    4. 名前空間に Skupper をインストールする

      skupper init コマンドは、現在の名前空間に Skupper ルーターとサービスコントローラーをインストールします。各 namespace で skupper init コマンドを実行します。

      private1 のコンソール:

      skupper init

      public1 のコンソール:

      skupper init

      public2 のコンソール:

      skupper init
    5. 名前空間のステータスを確認する

      各コンソールで skupper status を使用して、Skupper がインストールされていることを確認します。

      private1 のコンソール:

      skupper status

      public1 のコンソール:

      skupper status

      public2 のコンソール:

      skupper status

      名前空間ごとに次のような出力が表示されます。

      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 status を使用して進捗状況を確認できます。

    6. 名前空間をリンクする

      リンクを作成するには、skupper token createskupper 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

      public2 のコンソール:

      skupper link create ~/public1.token
      skupper link status --wait 30
      skupper token create ~/public2.token

      private1 のコンソール:

      skupper link create ~/public1.token
      skupper link create ~/public2.token
      skupper link status --wait 30

      コンソールセッションが異なるマシン上にある場合は、トークンを転送するために scp または同様のツールを使用する必要がある場合があります。

    7. プライベートクラスターにデータベースをデプロイして公開する

      kubectl apply を使用して、private1 にデータベースをデプロイします。次に、デプロイメントを公開します。

      private1 のコンソール:

      kubectl create -f src/main/resources/database/postgres-svc.yaml
      skupper expose deployment postgres --address postgres --port 5432 -n private1
    8. ツイートを保存するテーブルを作成する

      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));
    9. パブリッククラスターに Twitter Camel インテグレーションをデプロイする

      まず、kamel を使用して TwitterRoute コンポーネントを Kubernetes にデプロイする必要があります。このコンポーネントは、5000 ミリ秒ごとに Twitter をポーリングして、skupper という単語を含むツイートを検索します。その後、postgresql-sink に結果を送信します。この postgresql-sink は、同じクラスター内にインストールしておく必要があります。kamelet シンクは、結果を postgreSQL データベースに挿入します。

      public1 のコンソール:

      src/main/resources/scripts/setUpPublic1Cluster.sh
    10. パブリッククラスターに Telegram Camel インテグレーションをデプロイする

      このステップでは、TelegramRoute コンポーネントで使用するために、データベース認証情報を含むシークレットを Kubernetes にインストールします。その後、Kamel を使用して TelegramRoute を Kubernetes クラスターにデプロイします。このコンポーネントは 3 秒ごとにデータベースをポーリングし、最後の 3 秒間に挿入された結果を収集します。

      public2 のコンソール:

      src/main/resources/scripts/setUpPublic2Cluster.sh
    11. アプリケーションをテストする

      全体の流れを確認するには、skupper という単語を含むツイートを投稿する必要があります。その後、Telegram チャネルに New feedback about Skupper というタイトルの新しいメッセージが表示されます。

      private1 のコンソール:

      kubectl attach pg-shell -c pg-shell -i -t
      psql --dbname=postgresdb
      SELECT * FROM twfeedback;

      出力サンプル

      id                                    | sigthning       |          created
      --------------------------------------+-----------------+----------------------------
       95655229-747a-4787-8133-923ef0a1b2ca | Testing skupper | 2022-03-10 19:35:08.412542

      public1 のコンソール:

      kamel logs twitter-route

      出力サンプル

      "[1] 2022-03-10 19:35:08,397 INFO  [postgresql-sink-1] (Camel (camel-1) thread #0 - twitter-search://skupper) Testing skupper"
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.