RHEL 9 で .NET を使い始める
RHEL 9 への .NET Core 3.1 のインストールおよび実行
概要
はじめに リンクのコピーリンクがクリップボードにコピーされました!
.NET Core 3.1 は、RHEL 9 Beta でのみ提供されます。.NET Core 3.1 は削除され、RHEL 9 GA では .NET 6.0 に置き換えられます。
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社 の CTO、Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
ご意見ご要望をお聞かせください。ドキュメントの改善点はございませんか。改善点を報告する場合は、以下のように行います。
特定の文章に簡単なコメントを記入する場合は、以下の手順を行います。
- ドキュメントの表示が Multi-page HTML 形式になっていて、ドキュメントの右上端に Feedback ボタンがあることを確認してください。
- マウスカーソルで、コメントを追加する部分を強調表示します。
- そのテキストの下に表示される Add Feedback ポップアップをクリックします。
- 表示される手順に従ってください。
より詳細なフィードバックを行う場合は、Bugzilla のチケットを作成します。
- Bugzilla の Web サイトにアクセスします。
- Component で Documentation を選択します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも記入してください。
- Submit Bug をクリックします。
第1章 .NET Core 3.1 の概要 リンクのコピーリンクがクリップボードにコピーされました!
.NET Core は、自動メモリー管理と最新のプログラミング言語を備えた汎用開発プラットフォームです。.NET を使用することで、ユーザーは高品質のアプリケーションを効率的に構築できます。.NET Core は、認定済みのコンテナーを介して Red Hat Enterprise Linux (RHEL) および OpenShift Container Platform で利用できます。
.NET Core には次の機能があります。
- マイクロサービスベースのアプローチに従う機能。一部のコンポーネントは .NET で構築され、他のコンポーネントは Java で構築されますが、すべてが RHEL および OpenShift Container Platform でサポートされている共通プラットフォームで実行できます。
- Microsoft Windows で新しい .NET Core ワークロードをより簡単に開発する能力。RHEL または Windows Server のいずれかにアプリケーションをデプロイして実行できます。
- 異機種環境のデータセンター。基盤となるインフラストラクチャーが Windows Server にのみ依存することなく .NET アプリケーションを実行できます。
.NET Core 3.1 は、RHEL 7、RHEL 8、RHEL 9、および OpenShift Container Platform バージョン 3.3 以降でサポートされます。
第2章 .NET Core 3.1 のインストール リンクのコピーリンクがクリップボードにコピーされました!
.NET Core 3.1 は、RHEL 9 の AppStream リポジトリーに含まれています。AppStream リポジトリーは、RHEL 9 システムでデフォルトで有効になっています。
.NET Core 3.1 ランタイムは、最新の 3.1 Software Development Kit (SDK) でインストールできます。新しい SDK が .NET Core 3.1 で利用可能になったら、sudo yum install を実行してインストールできます。
前提条件
サブスクリプションを割り当てて、RHEL 9 をインストールして登録します。
詳細は「 標準的な RHEL インストールの実行」を 参照してください。
手順
.NET Core 3.1 とそのすべての依存関係をインストールします。
sudo yum install dotnet-sdk-3.1 -y
$ sudo yum install dotnet-sdk-3.1 -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
インストールを確認します。
dotnet --info
$ dotnet --infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は、.NET Core インストールおよび環境に関する関連情報を返します。
第3章 .NET Core 3.1 を使用したアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
C# hello-world アプリケーションを作成する方法を学びます。
手順
my-appという名前のディレクトリーに、新しい Console アプリケーションを作成します。dotnet new console --output my-app
$ dotnet new console --output my-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 返される出力は以下のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 単純な
Hello Worldコンソールアプリケーションが、テンプレートから作成されます。アプリケーションは指定のmy-appディレクトリーに保存されます。
検証手順
プロジェクトを実行します。
dotnet run --project my-app
$ dotnet run --project my-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 返される出力は以下のとおりです。
Hello World!
Hello World!Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 .NET Core 3.1 を使用したアプリケーションの公開 リンクのコピーリンクがクリップボードにコピーされました!
.NET Core 3.1 アプリケーションを公開して、共有されたシステム全体で使用される .NET Core を使用するか、.NET Core を追加できます。
.NET Core 3.1 アプリケーションを公開するには、以下のメソッドがあります。
- フレームワーク依存デプロイメント (FDD): アプリケーションは、共有されたシステム全体の .NET バージョンを使用します。
RHEL にアプリケーションを公開する場合、Red Hat では FDD を使用することを推奨しています。これは、アプリケーションが、Red Hat が構築した最新バージョンの .NET Core を使用していることを保証するためです。これは、特定のネイティブ依存関係のセットを使用します。
- SCD (自己完結型デプロイメント): アプリケーションには .NET が含まれます。この方法では、Microsoft が構築したランタイムを使用します。
前提条件
既存の .NET Core アプリケーション。
.NET Core アプリケーションの作成方法は、次を参照してください。
4.1. .NET Core アプリケーションの公開 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、フレームワーク依存アプリケーションを公開する方法を概説します。
手順
フレームワーク依存アプリケーションを公開します。
dotnet publish my-app -f netcoreapp3.1 -c Release
$ dotnet publish my-app -f netcoreapp3.1 -c ReleaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow my-app を公開するアプリケーションの名前に置き換えます。
任意: アプリケーションが RHEL 専用の場合は、次のコマンドを使用してその他のプラットフォームに必要な依存関係を削除します。
dotnet restore my-app -r rhel.9-x64 dotnet publish my-app -f netcoreapp3.1 -c Release -r rhel.9-x64 --self-contained false
$ dotnet restore my-app -r rhel.9-x64 $ dotnet publish my-app -f netcoreapp3.1 -c Release -r rhel.9-x64 --self-contained falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記arm64/aarch64 マシンを使用している場合は、以下を使用します。
dotnet restore my-app -r rhel.9-arm64 dotnet publish my-app -f netcoreapp3.1 -c Release -r rhel.9-arm64 --self-contained false
$ dotnet restore my-app -r rhel.9-arm64 $ dotnet publish my-app -f netcoreapp3.1 -c Release -r rhel.9-arm64 --self-contained falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 コンテナーでの .NET Core 3.1 アプリケーションの実行 リンクのコピーリンクがクリップボードにコピーされました!
ubi8/dotnet-31-runtime イメージを使用して、Linux コンテナー内で事前にコンパイルされたアプリケーションを実行します。
前提条件
事前設定されたコンテナー。
以下の例では podman を使用しています。
手順
オプション: 別のプロジェクトのディレクトリーにあり、ネストされたプロジェクトを作成したくない場合は、プロジェクトの親ディレクトリーに戻ります。
cd ..
$ cd ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow mvc_runtime_exampleという名前のディレクトリーに新しい MVC プロジェクトを作成します。dotnet new mvc --output mvc_runtime_example
$ dotnet new mvc --output mvc_runtime_exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロジェクトを公開します。
dotnet publish mvc_runtime_example -f netcoreapp3.1 -c Release
$ dotnet publish mvc_runtime_example -f netcoreapp3.1 -c ReleaseCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dockerfileを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを構築します。
podman build -t dotnet-31-runtime-example .
$ podman build -t dotnet-31-runtime-example .Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを実行します。
podman run -d -p8080:8080 dotnet-31-runtime-example
$ podman run -d -p8080:8080 dotnet-31-runtime-exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
コンテナーで実行されているアプリケーションを表示します。
xdg-open http://127.0.0.1:8080
$ xdg-open http://127.0.0.1:8080Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第6章 OpenShift Container Platform での .NET Core 3.1 の使用 リンクのコピーリンクがクリップボードにコピーされました!
6.1. .NET Core イメージストリームのインストール リンクのコピーリンクがクリップボードにコピーされました!
.NET Core イメージストリームをインストールするには、s2i-dotnetcore のイメージストリーム定義と OpenShift Client (oc) バイナリーを使用してインストールされます。イメージストリームは、Linux、Mac、Windows からインストールできます。スクリプトを使用すると、イメージストリームをインストール、更新、または削除できます。
.NET Core イメージストリームは、グローバルな openshift 名前空間で定義するか、プロジェクト名前空間でローカルにストリームします。openshift 名前空間の定義を更新するには、十分な権限が必要です。
6.1.1. OpenShift Client を使用したイメージストリームのインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift クライアント (oc) を使用して .NET Core イメージストリームをインストールできます。
前提条件
- 名前空間には、既存のプルシークレットが存在する必要があります。名前空間にプルシークレットが存在しない場合。『Red Hat Container Registry Authentication』の手順に従ってこれを追加します。
手順
利用可能な .NET Core イメージストリームの一覧を表示します。
oc describe is dotnet
$ oc describe is dotnetCopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力には、インストールされているイメージが表示されます。イメージがインストールされていない場合は、
Error from server (NotFound)メッセージが表示されます。.NET Core イメージストリームをインストールします。
oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json
$ oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 既存の .NET Core イメージストリームの新しいバージョンを含めます。
oc replace -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json
$ oc replace -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. Linux および macOS へのイメージストリームのインストール リンクのコピーリンクがクリップボードにコピーされました!
このスクリプト を使用して、Linux および macOS にイメージストリームをインストール、アップグレード、または削除できます。
手順
スクリプトをダウンロードします。
Linux では、以下を使用します。
wget https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/install-imagestreams.sh
$ wget https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/install-imagestreams.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mac の場合は、以下を使用します。
curl https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/install-imagestreams.sh -o install-imagestreams.sh
$ curl https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/install-imagestreams.sh -o install-imagestreams.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
スクリプトを実行可能にします。
chmod +x install-imagestreams.sh
$ chmod +x install-imagestreams.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift クラスターにログインします。
oc login
$ oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージストリームをインストールし、
registry.redhat.ioに対して認証用のプルシークレットを追加します。./install-imagestreams.sh --os rhel [--user subscription_username --password subscription_password]
./install-imagestreams.sh --os rhel [--user subscription_username --password subscription_password]Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription_username はユーザーの名前に置き換え、subscription_password をユーザーのパスワードに置き換えます。RHEL7 ベースのイメージを使用する予定がない場合は、認証情報は省略できます。
プルシークレットが存在する場合は、
--userと--password引数は無視されます。
関連情報
-
./install-imagestreams.sh --help
6.1.3. Windows でのイメージストリームのインストール リンクのコピーリンクがクリップボードにコピーされました!
このスクリプト を使用すると、Windows のイメージストリームのインストール、アップグレード、または削除を行うことができます。
手順
スクリプトをダウンロードします。
Invoke-WebRequest https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/install-imagestreams.ps1 -UseBasicParsing -OutFile install-imagestreams.ps1
Invoke-WebRequest https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/install-imagestreams.ps1 -UseBasicParsing -OutFile install-imagestreams.ps1Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift クラスターにログインします。
oc login
$ oc loginCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージストリームをインストールし、
registry.redhat.ioに対して認証用のプルシークレットを追加します。./install-imagestreams.sh --OS rhel [-User subscription_username -Password subscription_password]
./install-imagestreams.sh --OS rhel [-User subscription_username -Password subscription_password]Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription_username はユーザーの名前に置き換え、subscription_password をユーザーのパスワードに置き換えます。RHEL7 ベースのイメージを使用する予定がない場合は、認証情報は省略できます。
プルシークレットがすでに存在する場合は、
-Userと-Password引数は無視されます。
PowerShell の ExecutionPolicy では、このスクリプトの実行が禁止される場合があります。ポリシーを緩和するには、Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force を実行します。
関連情報
-
Get-Help .\install-imagestreams.ps1
6.2. oc を使用したソースからのアプリケーションのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、oc を使用した example-app アプリケーションのデプロイ方法を説明します。これは、redhat-developer/s2i-dotnetcore-ex GitHub リポジトリーの dotnetcore-3.1 ブランチの app ディレクトリーにあります。
手順
新しい OpenShift プロジェクトを作成します。
oc new-project sample-project
$ oc new-project sample-projectCopy to Clipboard Copied! Toggle word wrap Toggle overflow ASP .NET Core アプリケーションを追加します。
oc new-app --name=example-app 'dotnet:3.1~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-3.1' --build-env DOTNET_STARTUP_PROJECT=app
$ oc new-app --name=example-app 'dotnet:3.1~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-3.1' --build-env DOTNET_STARTUP_PROJECT=appCopy to Clipboard Copied! Toggle word wrap Toggle overflow ビルドの進捗を追跡します。
oc logs -f bc/example-app
$ oc logs -f bc/example-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow ビルドが完了したら、デプロイされたアプリケーションを表示します。
oc logs -f dc/example-app
$ oc logs -f dc/example-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow これで、プロジェクト内でアプリケーションにアクセスできます。
オプション: プロジェクトを外部からアクセス可能にします。
oc expose svc/example-app
$ oc expose svc/example-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 共有可能な URL を取得します。
oc get routes
$ oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. oc を使用したバイナリーアーティファクトからアプリケーションのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
.NET Core Source-to-Image (S2I) ビルダーイメージを使用して、提供するバイナリーアーティファクトを使用してアプリケーションをビルドできます。
前提条件
公開済みアプリケーション。
詳細は以下を参照してください。
手順
新しいバイナリービルドを作成します。
oc new-build --name=my-web-app dotnet:3.1 --binary=true
$ oc new-build --name=my-web-app dotnet:3.1 --binary=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow ビルドを開始し、ローカルマシンのバイナリーアーティファクトへのパスを指定します。
oc start-build my-web-app --from-dir=bin/Release/netcoreapp3.1/publish
$ oc start-build my-web-app --from-dir=bin/Release/netcoreapp3.1/publishCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新規アプリケーションを作成します。
oc new-app my-web-app
$ oc new-app my-web-appCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. .NET Core 3.1 の環境変数 リンクのコピーリンクがクリップボードにコピーされました!
.NET Core イメージは、.NET Core アプリケーションのビルド動作を制御するいくつかの環境変数に対応しています。これらの変数はビルド設定の一部として設定したり、アプリケーションのソースコードリポジトリーの .s2i/environment ファイルに追加できます。
| 変数名 | 説明 | デフォルト |
|---|---|---|
| DOTNET_STARTUP_PROJECT |
実行するプロジェクトを選択します。これは、プロジェクトファイル ( |
|
| DOTNET_ASSEMBLY_NAME |
実行するアセンブリーを選択します。これには |
|
| DOTNET_PUBLISH_READRYTORUN |
|
|
| DOTNET_RESTORE_SOURCES |
復元操作中に使用される NuGet パッケージソースのスペース区切り一覧を指定します。これにより、 | |
| DOTNET_RESTORE_CONFIGFILE |
復元操作に使用される | |
| DOTNET_TOOLS |
アプリをビルドする前にインストールする .NET ツールの一覧を指定します。 | |
| DOTNET_NPM_TOOLS | アプリケーションをビルドする前にインストールする NPM パッケージの一覧を指定します。 | |
| DOTNET_TEST_PROJECTS |
テストするテストプロジェクトの一覧を指定します。これは、プロジェクトファイルまたは、単一のプロジェクトファイルを含むディレクトリーである必要があります。各項目に対して | |
| DOTNET_CONFIGURATION |
Debug モードまたは Release モードでアプリケーションを実行します。この値は、 |
|
| DOTNET_VERBOSITY |
| |
| HTTP_PROXY, HTTPS_PROXY | アプリケーションをビルドおよび実行するときにそれぞれ使用される HTTP または HTTPS プロキシーを構成します。 | |
| DOTNET_RM_SRC |
| |
| DOTNET_SSL_DIRS |
信頼する追加の SSL 証明書を含むディレクトリーまたはファイルの一覧を指定します。証明書は、ビルド中に実行する各プロセスと、ビルド後のイメージで実行するすべてのプロセス (ビルドされたアプリケーションを含む) により信頼されます。項目は、絶対パス ( | |
| NPM_MIRROR | ビルドプロセス中にカスタム NPM レジストリミラーを使用してパッケージをダウンロードします。 | |
| ASPNETCORE_URLS |
この変数は | |
| DOTNET_RESTORE_DISABLE_PARALLEL |
|
|
| DOTNET_INCREMENTAL |
|
|
| DOTNET_PACK |
|
6.5. MVC サンプルアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
s2i-dotnetcore-ex は、.NET Core のデフォルトの .NET Core Model、View、Controller (MVC) テンプレートアプリケーションです。
このアプリケーションは、.NET Core S2I イメージによってサンプルアプリケーションとして使用され、Try Example リンクを使用して OpenShift UI から直接作成できます。
アプリケーションは、OpenShift クライアントバイナリー (oc) を使用して作成することもできます。
手順
oc を使用してサンプルアプリケーションを作成するには、以下を行います。
.NET Core アプリケーションを追加します。
oc new-app dotnet:3.1~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-3.1 --context-dir=app
$ oc new-app dotnet:3.1~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-3.1 --context-dir=appCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションによる外部アクセスを可能にします。
oc expose service s2i-dotnetcore-ex
$ oc expose service s2i-dotnetcore-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow 共有可能な URL を取得します。
oc get route s2i-dotnetcore-ex
$ oc get route s2i-dotnetcore-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.6. CRUD サンプルアプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
s2i-dotnetcore-persistent-ex は、PostgreSQL データベースにデータを格納する単純な Create、Read、Update、Delete (CRUD) の .NET Core Web アプリケーションです。
手順
oc を使用してサンプルアプリケーションを作成するには、以下を行います。
データベースを追加します。
oc new-app postgresql-ephemeral
$ oc new-app postgresql-ephemeralCopy to Clipboard Copied! Toggle word wrap Toggle overflow .NET Core アプリケーションを追加します。
oc new-app dotnet:3.1~https://github.com/redhat-developer/s2i-dotnetcore-persistent-ex#dotnetcore-3.1 --context-dir app
$ oc new-app dotnet:3.1~https://github.com/redhat-developer/s2i-dotnetcore-persistent-ex#dotnetcore-3.1 --context-dir appCopy to Clipboard Copied! Toggle word wrap Toggle overflow postgresqlシークレットおよびデータベースサービス名環境変数から環境変数を追加します。oc set env dc/s2i-dotnetcore-persistent-ex --from=secret/postgresql -e database-service=postgresql
$ oc set env dc/s2i-dotnetcore-persistent-ex --from=secret/postgresql -e database-service=postgresqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アプリケーションによる外部アクセスを可能にします。
oc expose service s2i-dotnetcore-persistent-ex
$ oc expose service s2i-dotnetcore-persistent-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow 共有可能な URL を取得します。
oc get route s2i-dotnetcore-persistent-ex
$ oc get route s2i-dotnetcore-persistent-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow