第8章 患者ポータル


パブリッククラウドで実行され、データをプライベートデータベースに保存する、シンプルなデータベースベースの Web アプリケーションです。

この例は、Skupper を使用してクラウドプロバイダー、データセンター、エッジサイト間でサービスを接続できるさまざまな方法を紹介する 一連の例 の一部です。

概要

この例は、Skupper を使用して、パブリックインターネットに公開せずにリモートサイトのデータベースにアクセスする方法を示す、データベースをバックアップしたシンプルな Web アプリケーションです。

これには、3 つのサービスが含まれます。

  • プライベートデータセンター内のベアメタルまたは仮想マシン上で実行される PostgreSQL データベース。
  • プライベートデータセンターの Kubernetes 上で実行される支払い処理サービス。
  • パブリッククラウドの Kubernetes 上で実行される Web フロントエンドサービス。PostgreSQL データベースと支払い処理サービスを使用します。

この例では、privatepublic という 2 つの Kubernetes 名前空間を使用して、プライベートデータセンター内の Kubernetes クラスターとパブリッククラウド内のクラスターを表します。Podman を使用してデータベースを実行します。

前提条件

手順

  • この例のリポジトリーのクローンを作成する
  • Skupper コマンドラインツールをインストールする
  • Kubernetes 名前空間を設定する
  • Podman ネットワークを設定する
  • アプリケーションのデプロイ
  • サイトを作成する
  • サイトをリンクする
  • アプリケーションサービスを公開する
  • フロントエンドにアクセスする

    1. この例のリポジトリーをクローンします。https://skupper.io/examples/index.html から適切な GitHub リポジトリーに移動し、リポジトリーをクローンします。
    2. Skupper コマンドラインツールをインストールします。

      この例では、Skupper コマンドラインツールを使用して Skupper をデプロイします。開発環境ごとに skupper コマンドを 1 回だけインストールする必要があります。

      CLI のインストールの詳細は、インストール を参照してください。設定されたシステムの場合は、次のコマンドを使用します。

      sudo dnf install skupper-cli
    3. 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-private
      # Enter your provider-specific login command
      kubectl create namespace private
      kubectl config set-context --current --namespace private
    4. 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

      systemctl コマンドが機能しない場合は、代わりに podman system service コマンドを試してください。

      podman system service --time=0 unix://$XDGRUNTIMEDIR/podman/podman.sock &
    5. アプリケーションをデプロイします。

      kubectl apply を使用して、フロントエンドと支払いプロセッサーを Kubernetes にデプロイします。podman run を使用して、ローカルマシンでデータベースを起動します。

      注記

      Skupper がサービスにアクセスするために作成するコンテナーとの衝突を避けるために、実行中のコンテナーに --name を使用して名前を付けることが重要です。

      注記

      podman run コマンドでは --network skupper を使用する必要があります。

      パブリック:

      kubectl apply -f frontend/kubernetes.yaml

      プライベート:

      kubectl apply -f payment-processor/kubernetes.yaml

      Podman:

      podman run --name database-target --network skupper --detach --rm -p 5432:5432 quay.io/skupper/patient-portal-database
    6. サイトを作成します。

      パブリック:

      skupper init

      プライベート:

      skupper init --ingress none

      Podman:

      skupper init --ingress none
    7. サイトをリンクします。

      リンクを作成するには、skupper token createskupper link create の 2 つの skupper コマンドを組み合わせて使用する必要があります。

      skupper token create コマンドは、リンクを作成する権限を示す秘密トークンを生成します。トークンにはリンクの詳細も含まれます。次に、リモートサイトで、skupper link create コマンドを実行すると、トークンを使用して、トークンを生成したサイトへのリンクを作成します。

      注記

      リンクトークンは実際にはシークレットです。トークンがある場合は、サイトにリンクできます。信頼できる人だけがアクセスできるようにしてください。

      まず、パブリックサイトの skupper token create を使用してトークンを生成します。次に、プライベートサイトで skupper link create を使用して、サイトをリンクします。

      パブリック:

      skupper token create --uses 2 ~/secret.token

      プライベート:

      skupper link create ~/secret.token

      Podman:

      skupper link create ~/secret.token

      ターミナルセッションが異なるマシン上にある場合は、トークンを安全に転送するために scp または同様のツールを使用する必要がある場合があります。デフォルトでは、トークンは 1 回の使用後、または作成後 15 分後に期限切れになります。

    8. アプリケーションサービスを公開します。

      プライベートでは、skupper expose を使用して支払い処理サービスを公開します。

      Podman では、skupper service createskupper service bind を使用して、Skupper ネットワーク上のデータベースを公開します。

      次に、パブリックで skupper service create を使用して利用できるようにします。

      注記

      Podman サイトは、リモートサイトにサービスを自動的に複製しません。サービスを利用可能にする各サイトで skupper service create を使用する必要があります。

      プライベート:

      skupper expose deployment/payment-processor --port 8080

      Podman:

      skupper service create database 5432
      skupper service bind database host database-target --target-port 5432

      パブリック:

      skupper service create database 5432
    9. フロントエンドにアクセスします。

      アプリケーションを使用およびテストするには、フロントエンドへの外部アクセスが必要です。

      --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
      service/frontend exposed
      
      $ kubectl get service/frontend
      NAME       TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
      frontend   LoadBalancer   10.103.232.28   <external-ip>   8080:30407/TCP   15s
      
      $ curl http://<external-ip>:8080/api/health
      OK

      すべてが正常であれば、ブラウザーで http://<external-ip>:8080/ に移動して Web インターフェイスにアクセスできるようになります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.