第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 インターフェイスにアクセスできるようになります。