OpenShift/RHEL上での.NETサポート

こんにちは。Specialist Solution Architect の瀬戸です。

説明すると、たまになんで?という反応をされることもあるのですが、Red HatはMicrosoftとアライアンスを結んでおり、.NETの実行をエンタープライズ品質でサポートしています。

Red HatはOpenJDKやJBoss EAP、Quarkusなどの開発をしていて、Javaに多大なコミットメントをしているということもあり、Javaしかサポートしていないよと勘違いされる場合もあるのですが、そんなことはなくて.NET/PHP/Node.js/Ruby/Python等いくつかの言語ランタイムもサポートしています。

何がサポートされているかについては次のページを参照してください。

access.redhat.com

なんと、.NETについては特設ページまであります。

developers.redhat.com

.NETのサポートポリシーはこちら。

access.redhat.com

というだけで終わらせてもアレなので、実際に動かしてみましょう。

OpenShift上にプロジェクトを作成します。(OpenShift 4.16で確認しています。)

> oc new-project mydemo

GitHubにサンプルアプリケーションが準備されているので、そちらを指定してアプリケーションをデプロイします。

> oc new-app dotnet:8.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnet-8.0 --context-dir app

次のように表示されます。

warning: Cannot check if git requires authentication.
--> Found image fece063 (8 days old) in image stream "openshift/dotnet" under tag "8.0-ubi8" for "dotnet:8.0-ubi8"

    .NET 8
    ------
    Platform for building and running .NET 8 applications

    Tags: builder, .net, dotnet, dotnetcore, dotnet-80

    * A source build using source code from https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnet-8.0 will be created
      * The resulting image will be pushed to image stream tag "s2i-dotnetcore-ex:latest"
      * Use 'oc start-build' to trigger a new build

--> Creating resources ...
    imagestream.image.openshift.io "s2i-dotnetcore-ex" created
    buildconfig.build.openshift.io "s2i-dotnetcore-ex" created
    deployment.apps "s2i-dotnetcore-ex" created
    service "s2i-dotnetcore-ex" created
--> Success
    Build scheduled, use 'oc logs -f buildconfig/s2i-dotnetcore-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose service/s2i-dotnetcore-ex'
    Run 'oc status' to view your app.

デプロイが完了したかpodの状況を確認します。

> oc get pods -w
NAME                                 READY   STATUS      RESTARTS   AGE
s2i-dotnetcore-ex-1-build            0/1     Completed   0          110s
s2i-dotnetcore-ex-5dd94d78d4-k95hf   1/1     Running     0          77s

デプロイが完了したらルートを作成して、公開します。

> oc expose service s2i-dotnetcore-ex
route.route.openshift.io/s2i-dotnetcore-ex exposed

> oc get route s2i-dotnetcore-ex
NAME                HOST/PORT                                                                PATH   SERVICES            PORT       TERMINATION   WILDCARD
s2i-dotnetcore-ex   s2i-dotnetcore-ex-mydemo.apps.cluster-lbdm8.dynamic.redhatworkshops.io          s2i-dotnetcore-ex   8080-tcp                 None

表示されたURLにアクセスすると実際に動いています。

.NETアプリケーションの画面

使用したソースコードは次のリポジトリにあります。

github.com

s2iというOpenShiftの標準のデプロイシステムでも.NETをサポートしていますので、簡単にデプロイできます。 そのうえでRed HatとMicrosoftの強力なサポート体制もあるので、.NETアプリケーションを今まではWindowsサーバーを複数台立てて管理してたけど、インフラコストを抑えるために集約したい場合等の移行先としては良い選択肢になるのではないでしょうか。

また、デプロイの方法についてはJavaの場合とあまり変わりません。Javaの場合にどういうデプロイがされるかは次の記事を参照してください。 他の言語についても同じ感覚でデプロイすることができます。 OpenShiftの操作についての基礎知識がない場合も見ていただけるとocコマンドのインストール方法等が載ってます。

rheb.hatenablog.com

ということで、簡単なOpenShift上での.NETアプリケーションの紹介でした。

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