Red Hat Service InterconnectでNAT越えのアプリ間連携を簡単に!

はじめに

みなさん、こんにちは。
レッドハットでソリューションアーキテクトをしている小野です。

本記事では、5月のRed Hat Summit 2023@Bostonでも発表のあった「Red Hat Service Interconnect」についてご紹介します。

www.redhat.com

 

Red Hat Service Interconnectは「Skupper」というオープンソースがベースです。
過去の記事でSkupperについてや、その便利な使い方についてご紹介したことがありますのでリンクしておきます。
こちらも参考になれば幸いです。

 

rheb.hatenablog.com

 

qiita.com

 

rheb.hatenablog.com

 

お試し環境

Red Hat Service Interconnectは、以下のページで実際にハンズオンしながら、どのようなソフトウェアなのかご体験いただけます。

 

 

[Launch]ボタン→[Start]ボタンと順に押していくと、ハンズオン環境が払い出されます。環境の払い出しに15分くらいかかりますが、ハンズオン自体は30分かからないくらいで体験できます。ぜひお試しください!

 

KIOSKモードで表示したい方は以下のURLからもアクセスできます。

https://play.instruqt.com/embed/openshift/tracks/red-hat-service-interconnect-jp?token=em_uMIOxTeWiFzR7k5_

 

以降より、このハンズオンで体験できるシナリオをベースにRed Hat Service Interconnectについて解説します。

シナリオ

例えば、みなさんが「患者ポータルの開発者」であるとします。
患者ポータルは、患者の氏名や住所、通院履歴などの個人情報を含むデータをブラウザに表示して、支払い処理を行うシステムです。みなさんは、ポータルのフロントエンドアプリケーションを、運用性を考慮してパブリッククラウドへデプロイすることにしました。しかし、会社のセキュリティチームより、「患者情報は個人情報に該当するためオンプレミスの外に出すことはNG」と言われます。
このとき、皆さんはどの様に患者ポータルを構築しますか?

例えば、オンプレミスとクラウドとの間でVPNを接続することも解決策の一つです。しかし、VPNの接続はアプリケーション開発チームだけで対応するのが難しいので、ネットワーク管理者へ依頼し、VPN をセットアップしてもらう必要があります。

また、患者DBや支払いアプリがNATやFWの背後にあり、外部からのアクセスが制限されている場合、外部からのアクセスを許可するようにNATやFWの設定変更が伴います。
これらの対応には、時間を要する承認プロセスが伴うことも少なくありません。

 

 

このようなシーンで、Red Hat Service Interconnectは有用です。

Red Hat Service Interconnectという選択肢

Red Hat Service Interconnectは、異なる環境に実行されるアプリケーション同士を連携するための、専用のL7ベースのネットワークを構成します。そして、オンプレミスとクラウドで実行されるそれぞれのアプリケーションは、このL7ベースのネットワークを介してNATやFW越えで連携できるようになります。その際に、ネットワークへ追加の設定変更は必要ありません。

 

 

また、Red Hat Service InterconnectによってセットアップされるネットワークはmTLSに基づいています。そのため、アプリケーション通信のセキュリティも確保されます。
そして、Red Hat Service Interconnect のスコープはOpenShift やKubernetes上のコンテナに限らず、オンプレミスで稼働しているさまざまなデプロイメント (仮想マシン、やベアメタル上にデプロイされたプロセスなど) とクラウドで稼働しているアプリケーションとの接続にも活用できます。

Red Hat Service Interconnectをセットアップ

ここで、Red Hat Service Interconnectのセットアップ方法を確認しましょう。以下の図の4ステップで完了です。

 

 

STEP.1 Skupperの初期化
Skupperを使うには 「skupper init」コマンドを実行し、対象のアプリケーションが稼働するNamespaceへSkupperをデプロイします。Skupperは、PublicとPrivateの両方の環境へデプロイする必要があります。

 

STEP.2 トークン生成

Skupperのデプロイが完了したら、Publicの環境でSkupperのトークンを生成します。

 

STEP.3 リンク生成

STEP.2で作成したトークンを利用してSkupperのリンクを張ります。Privateの環境のFWの設定が、外から中への通信を許可していない場合、SkupperのリンクはPrivate->Publicの向きで張るようにします。

 

STEP.4 サービス公開

リンクが生成できたら、そのリンク上で公開したいサービスを「skupper expose」コマンドで指定します。

これにより、パブリッククラウドのクラスタから、オンプレミスのクラスタの支払いアプリや患者DBのKubernetesのServiceリソースが見えるようになりました。フロントエンドのアプリケーションはこのService名へ接続すれば、オンプレミス上の支払いアプリや患者DBへアクセスできます。

 

 

このように、Red Hat Service Interconnectのセットアップは非常に簡単です。アプリケーション開発チームは、この簡単なセットアップで、ネットワークの専門家に頼ることなく、異なる環境にある他のアプリケーションとのセキュアな相互接続を確立することができます。

 

(参考)Skupperの仕組み

「skupper init」コマンドを実行すると、「Skupper Router」と「コントロールプレーン」の2つのDeploymentがデプロイされます。
このSkupper Routerは、「Apache Qpid Dispatch Router」というソフトウェアをベースに、アプリケーション間通信をAMQPでルーティングします。
みなさんがオンプレミス上のサービスを「skupper expose」により公開すると、Skupper Router同士が情報を交換し、パブリッククラウドのクラスタへ、公開したオンプレミス上のサービスの名前を伝播します。
パブリッククラウドから見えるオンプレミスのサービスのエンドポイントはSkupper Routerとなっており、公開したサービス名宛のリクエストをSkupper Routerがルーティングします。

Skupper Routerはよくあるルータの様に動作し、環境間の1対1の接続だけでなく、ハブ&スポークなど、さまざまなネットワークトポロジーをサポートします。
Skupper Routerで構成されたネットワーク上で、アプリケーション通信はOSPFの最短経路のアルゴリズムで経路計算されており、多段でSkupper Routerが配置される構成でも、最適な経路でアプリケーション通信を中継します。

まとめ

本記事では、Red Hat Service Interconnectについてご紹介しました。
Red Hat Service Interconnectを使うことで、ネットワークインフラの設定はそのままに、エッジやプライベートクラウド、パブリッククラウドなどの様々な環境で実行されたアプリケーション同士を、サクッと簡単かつセキュアに連携させることができます。

異なる環境間のアプリケーション連携を実装する際は、ぜひRed Hat Service Interconnectも選択肢の一つとしてご検討ください!

 

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。