第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-cli
Copy 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 public
Copy 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 private
Copy 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.socket
Copy 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.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
kubectl apply -f payment-processor/kubernetes.yaml
kubectl apply -f payment-processor/kubernetes.yaml
Copy 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-database
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サイトを作成します。
パブリック:
skupper init
skupper init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper init --ingress none
skupper init --ingress none
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman:
skupper init --ingress none
skupper init --ingress none
Copy 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.token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow プライベート:
skupper link create ~/secret.token
skupper link create ~/secret.token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Podman:
skupper link create ~/secret.token
skupper link create ~/secret.token
Copy 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 8080
Copy 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 5432
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック:
skupper service create database 5432
skupper service create database 5432
Copy 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/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力サンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてが正常であれば、ブラウザーで
http://<external-ip>:8080/
に移動して Web インターフェイスにアクセスできるようになります。