「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
- 「セカンド・ステップ」では、
ASP.NET Coreアプリケーションのデプロイを行う。
立上 †
- いきなり
「まずは手順に従って、imagestreamを設定するのですが、
最初は検証用のプロジェクトを作ってそのプロジェクトに
imagestreamを作ってみましょう。」
とあって、「imagestream」なんて「ファースト・ステップ」で
出てきてないので、潔く「Red Hat Customer Portal」を読むことに。
詳細 †
dotnetの一覧表示 †
- 既に OpenShift の一部である場合がある。
- 次のコマンドで、名前空間で使用可能なdotnetを一覧表示する。
>oc describe is dotnet --namespace openshift
Name: dotnet
Namespace: openshift
Created: 51 minutes ago
Labels: <none>
Annotations: openshift.io/display-name=.NET Core Builder Images
openshift.io/image.dockerRepositoryCheck=2018-06-05T02:51:14Z
Docker Pull Spec: docker-registry.default.svc:5000/openshift/dotnet
Unique Images: 3
Tags: 4
2.0 (latest)
tagged from registry.access.redhat.com/dotnet/dotnet-20-rhel7:2.0
Build and run .NET Core 2.0 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/redhat-developer/s2i-dotnetcore/tree/master/2.0/build/README.md.
Tags: builder, .net, dotnet, dotnetcore, rh-dotnet20
Supports: dotnet:2.0, dotnet
Example Repo: https://github.com/redhat-developer/s2i-dotnetcore-ex.git
* registry.access.redhat.com/dotnet/dotnet-20-rhel7@sha256:1314e7693a0eb07f5d699f5c0eb878f2e7b92200d0a3e31b6a3dad235efad5c8
51 minutes ago
1.1
tagged from registry.access.redhat.com/dotnet/dotnetcore-11-rhel7:1.1
Build and run .NET Core 1.1 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/redhat-developer/s2i-dotnetcore/tree/master/1.1/README.md.
Tags: builder, .net, dotnet, dotnetcore, rh-dotnetcore11
Supports: dotnet:1.1, dotnet
Example Repo: https://github.com/redhat-developer/s2i-dotnetcore-ex.git
* registry.access.redhat.com/dotnet/dotnetcore-11-rhel7@sha256:6016edaadc99a516aa0d3d1db22a5384739647bcd8cc6a3420d793e214e62c43
51 minutes ago
1.0
tagged from registry.access.redhat.com/dotnet/dotnetcore-10-rhel7:1.0
Build and run .NET Core 1.0 applications on RHEL 7. For more information about using this builder image, including OpenShift considerations, see https://github.com/redhat-developer/s2i-dotnetcore/tree/master/1.0/README.md.
Tags: builder, .net, dotnet, dotnetcore, rh-dotnetcore10
Supports: dotnet:1.0, dotnet
Example Repo: https://github.com/redhat-developer/s2i-dotnetcore-ex.git
* registry.access.redhat.com/dotnet/dotnetcore-10-rhel7@sha256:51b354a03dba498c3ea505c0aa9e3d864da6331c17eea02af0f3f89b48f375be
51 minutes ago
希望のバージョンがない場合、Image Streamsを追加できる。
>oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json
権限があれば、Image Streamsをグローバルに追加できる。
>oc create --namespace openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json
2.2. Deploy Applications †
oc new-app †
github.comのredhat-developer/s2i-dotnetcore-exの
dotnetcore-2.0ブランチのaspnetcore2アプリをappフォルダにデプロイする。
(dotnet:2.0で)読み込んだImage Streamsと紐付け?
>oc new-app --name=exampleapp 'dotnet:2.0~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-2.0' --build-env DOTNET_STARTUP_PROJECT=app
進行状況の確認 †
>oc logs -f bc/exampleapp
サービスのルートを作成する。 †
>oc expose svc/exampleapp
>oc get routes
2.3. Configuration †
概要 †
- .NET Coreイメージは、.NET Core用の環境変数をサポートしている。
- これらの変数は、
- ビルド構成の一部として設定することも、
- リポジトリの「.s2i/environment」ファイルに追加することも
できる。
環境変数の一覧 †
# | 名前 | 説明 | 既定値 |
1 | DOTNET_STARTUP_PROJECT | プロジェクト・ファイルを含むフォルダ | |
2 | DOTNET_ASSEMBLY_NAME | アセンブリ名(.dll拡張子を含めない) | プロジェクト・ファイル名 |
3 | DOTNET_RESTORE_SOURCES | NuGet?パッケージソースのスペース区切りリスト。NuGet?.configを上書き。 | Unset |
4 | DOTNET_NPM_TOOLS | NPMパッケージのリスト | Unset |
5 | DOTNET_TEST_PROJECTS | テストプロジェクトのフォルダのリスト | Unset |
6 | DOTNET_CONFIGURATION | デバッグモード(Release)/リリースモード(Debug) | Release |
7 | ASPNETCORE_URLS | 公開ポート(OpenShiftに於いて変更は非推奨) | http://*:8080 |
2.4. Sample Applications †
3つのサンプルアプリケーションが利用可能
説明 †
# | 名前 | 説明 |
1 | dotnet-example | デフォルトのMVCアプリケーション |
2 | dotnet-runtime-example | ランタイム・イメージとビルド・チェーンを使用して MVCアプリをビルドする方法を示す。 |
3 | dotnet-pgsql-persistent | Music Storeサンプルアプリケーション |
利用 †
- ポータルを使用
- プロジェクトを参照
- [プロジェクトに追加]をクリック
- CLIを使用
- プロジェクトに追加
- dotnet-example
>oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-example.json
- dotnet-runtime-example
>oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-runtime-example.json
- dotnet-pgsql-persistent.json
> oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-pgsql-persistent.json
- グローバルに追加
- dotnet-example
>oc create -n openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-example.json
>oc replace -n openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-example.json
- dotnet-runtime-example
>oc create -n openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-runtime-example.json
>oc replace -n openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-runtime-example.json
- dotnet-pgsql-persistent.json
>oc create -n openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-pgsql-persistent.json
>oc replace -n openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-pgsql-persistent.json
2.5. Create a Runtime Image †
Build Configurationを定義する。
ビルド・イメージ †
- 変更を自動的に再構築するトリガを持つ。
- プロジェクトが変更されたとき
- またはベース・イメージ(dotnet-20-rhel7)が更新されたとき
ランタイム・イメージ †
- dotnet-20-runtime-rhel7ベース・イメージから構築される。
- ビルド・イメージからtar.gzファイルを取得。
- ビルド設定でこのソース定義を使用。
- 変更を自動的に再構築するトリガを持つ。
- プロジェクトの内部Image Streamsでビルドイメージが更新されたとき、
- またはdotnet-20-runtime-rhel7ベースイメージが更新されたときに、
- ランタイムイメージ用に定義されたデプロイメントを持つ。
トリガ †
トリガを使用すると、イメージやコードが更新されたときに、
チェーン内のオブジェクトが必要に応じて再構築される。
演習 †
dotnet-example †
- プロジェクトを生成
>oc new-project pj11
- アプリケーションを生成
>oc new-app --name=exampleapp "dotnet:2.0~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-2.0" --build-env DOTNET_STARTUP_PROJECT=app
--> Found image 98871f3 (8 days old) in image stream "pj11/dotnet" under tag "2.0" for "dotnet:2.0"
.NET Core 2.0
-------------
Platform for building and running .NET Core 2.0 applications
Tags: builder, .net, dotnet, dotnetcore, rh-dotnet20
* A source build using source code from https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnetcore-2.0 will be created
* The resulting image will be pushed to image stream "exampleapp:latest"
* Use 'start-build' to trigger a new build
* This image will be deployed in deployment config "exampleapp"
* Port 8080/tcp will be load balanced by service "exampleapp"
* Other containers can access this service through the hostname "exampleapp"
--> Creating resources ...
imagestream "exampleapp" created
buildconfig "exampleapp" created
deploymentconfig "exampleapp" created
service "exampleapp" created
--> Success
Build scheduled, use 'oc logs -f bc/exampleapp' to track its progress.
Run 'oc status' to view your app.
- 進行状況の確認
>oc logs -f bc/exampleapp
Cloning "https://github.com/redhat-developer/s2i-dotnetcore-ex" ...
Commit: 0543be02d0be779d08e6c43f82ef9f0610f5d4e3 (Update for .NET Core 2.0 release. (#32))
Author: Severin Gehwolf <jerboaa@gmail.com>
Date: Mon Aug 21 18:00:03 2017 +0200
Using SDK: 2.0.3
---> Copying application source ...
---> Restoring application dependencies...
Restoring packages for /opt/app-root/src/app/app.csproj...
Restoring packages for /opt/app-root/src/app/app.csproj...
Installing System.Xml.XmlSerializer 4.0.11.
・・・
Generating MSBuild file /opt/app-root/src/app/obj/app.csproj.nuget.g.props.
Generating MSBuild file /opt/app-root/src/app/obj/app.csproj.nuget.g.targets.
Restore completed in 20.24 sec for /opt/app-root/src/app/app.csproj.
---> Publishing application...
Microsoft (R) Build Engine version 15.4.8.50081 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
app -> /opt/app-root/src/app/bin/Release/netcoreapp2.0/app.dll
app -> /opt/app-root/app/
Pushing image docker-registry.default.svc:5000/pj11/exampleapp:latest ...
Pushed 0/5 layers, 5% complete
Pushed 1/5 layers, 30% complete
Pushed 2/5 layers, 44% complete
Pushed 3/5 layers, 79% complete
Pushed 4/5 layers, 96% complete
Pushed 5/5 layers, 100% complete
Push successful
- サービスにアクセスする。
プレーンなMVCアプリが起動する。
テンプレートからデプロイする。 †
- プロジェクトを生成
>oc new-project pj12
- アプリケーションを生成
>oc new-app dotnet-example --name=exampleapp
--> Deploying template "openshift/dotnet-example" to project pj12
.NET Core Example
---------
An example .NET Core application.
* With parameters:
* Name=dotnet-example
* Memory Limit=512Mi
* .NET builder=dotnet:2.0
* Namespace=openshift
* Git Repository URL=https://github.com/redhat-developer/s2i-dotnetcore-ex.git
* Git Reference=dotnetcore-2.0
* Context Directory=
* Application Hostname=
* GitHub Webhook Secret=Hagf1B7MCijAH1myO8dWjQRcMvl8Xs3WwrfoK2WB # generated
* Generic Webhook Secret=FjstfIOXLbWdFixVqo0cyJ5qT1gUDbyBpqgSocs0 # generated
* Startup Project=app
* Startup Assembly=
* Npm Tools=bower gulp
* Test projects=
* Configuration=Release
* NuGet package sources=
--> Creating resources ...
route "dotnet-example" created
service "dotnet-example" created
imagestream "dotnet-example" created
buildconfig "dotnet-example" created
deploymentconfig "dotnet-example" created
--> Success
Build scheduled, use 'oc logs -f bc/dotnet-example' to track its progress.
Run 'oc status' to view your app.
- 進行状況の確認
>oc logs -f bc/dotnet-example
C:\Users\nishi>oc logs -f bc/dotnet-example
Cloning "https://github.com/redhat-developer/s2i-dotnetcore-ex.git" ...
Commit: 0543be02d0be779d08e6c43f82ef9f0610f5d4e3 (Update for .NET Core 2.0 release. (#32))
Author: Severin Gehwolf <jerboaa@gmail.com>
Date: Mon Aug 21 18:00:03 2017 +0200
---> Installing npm tools ...
・・・
---> Copying application source ...
---> Restoring application dependencies...
Restoring packages for /opt/app-root/src/app/app.csproj...
Restoring packages for /opt/app-root/src/app/app.csproj...
Installing System.Xml.XmlSerializer 4.0.11.
・・・
Generating MSBuild file /opt/app-root/src/app/obj/app.csproj.nuget.g.props.
Generating MSBuild file /opt/app-root/src/app/obj/app.csproj.nuget.g.targets.
Restore completed in 20.62 sec for /opt/app-root/src/app/app.csproj.
---> Publishing application...
Microsoft (R) Build Engine version 15.4.8.50081 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
app -> /opt/app-root/src/app/bin/Release/netcoreapp2.0/app.dll
app -> /opt/app-root/app/
Pushing image docker-registry.default.svc:5000/pj12/dotnet-example:latest ...
Pushed 4/5 layers, 82% complete
Pushed 5/5 layers, 100% complete
Push successful
- サービスにアクセスする。
プレーンなMVCアプリが起動する。
dotnet-runtime-example †
テンプレートからデプロイする。 †
- プロジェクトを生成
>oc new-project pj2
- サービスにアクセスする。
プレーンなMVCアプリが起動する。
dotnet-pgsql-persistent †
テンプレートからデプロイする。 †
- プロジェクトを生成
>oc new-project pj3
- サービスにアクセスする。
musicstoreアプリが起動するハズだったが...。
自作アプリ †
https://github.com/daisukenishino2/opneshift
- プロジェクトを生成
>oc new-project pj4
- サービスにアクセスする。
プレーンなMVCアプリが起動する。
参考 †
銀の光と碧い空 †
redhat.com †
Red Hat Customer Portal †
- 2.1. Install Image Streams
- 2.2. Deploy Applications
- 2.3. Configuration
- 2.4. Sample Applications
- 2.5. Create a Runtime Image
openshift.com †