「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>OpenShift]] *目次 [#x4916341] #contents *概要 [#lf3cae5d] -「[[ファースト・ステップ>OpenShiftファースト・ステップ]]」では、~ 基本的操作とJBossアプリケーションのデプロイを行った。 -「セカンド・ステップ」では、~ ASP.NET Coreアプリケーションのデプロイを行う。 -いきなり >「まずは手順に従って、imagestreamを設定するのですが、~ 最初は検証用のプロジェクトを作ってそのプロジェクトに~ imagestreamを作ってみましょう。」 >とあって、「[[imagestream>OpenShift#r01d6b00]]」なんて「[[ファースト・ステップ>OpenShiftファースト・ステップ]]」で~ 出てきてないので、潔く「[[Red Hat Customer Portal>#we8ccdea]]」を読むことに。 -「[[ファースト・ステップ>OpenShiftファースト・ステップ]]」のツールのバージョンが古いようなので、新しいバージョンを取得する。~ https://github.com/openshift/origin/releases/download/v1.4.1/openshift-origin-client-tools-v1.4.1-3f9807a-windows.zip *詳細 [#sf031fab] **2.1. Install [[Image Streams>OpenShift#r01d6b00]] [#v517c590] ***dotnetの一覧表示 [#d86a025e] --既に 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>OpenShift#r01d6b00]]を追加 [#h6fe4348] 希望のバージョンがない場合、[[Image Streams>OpenShift#r01d6b00]]を追加できる。 >oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json ***[[Image Streams>OpenShift#r01d6b00]]をグローバルに追加 [#n9eb2b8c] 権限があれば、[[Image Streams>OpenShift#r01d6b00]]をグローバルに追加できる。 >oc create --namespace openshift -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json **2.2. Deploy Applications [#d7ebdc73] ***oc new-app [#b8fa42da] github.comのredhat-developer/s2i-dotnetcore-exの~ dotnetcore-2.0ブランチのaspnetcore2アプリをappフォルダにデプロイする。~ (dotnet:2.0で)読み込んだ[[Image Streams>OpenShift#r01d6b00]]と紐付け? >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 ***進行状況の確認 [#ka02c0ae] >oc logs -f bc/exampleapp ***[[サービス>OpenShift#l875353c]]のルートを作成する。 [#u220d51a] >oc expose svc/exampleapp >oc get routes **2.3. Configuration [#k34561d1] ***概要 [#s621136d] -.NET Coreイメージは、.NET Core用の環境変数をサポートしている。 -これらの変数は、 --ビルド構成の一部として設定することも、 --リポジトリの「.s2i/environment」ファイルに追加することも >できる。 ***環境変数の一覧 [#y7b1efea] |#|名前|説明|既定値|h |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 [#s4593bee] 3つのサンプルアプリケーションが利用可能 ***説明 [#caaf8051] |#|名前|説明|h |1|dotnet-example|デフォルトのMVCアプリケーション| |2|dotnet-runtime-example|ランタイム・イメージとビルド・チェーンを使用して&br;MVCアプリをビルドする方法を示す。| |3|dotnet-pgsql-persistent|Music Storeサンプルアプリケーション| ***利用 [#u35c1046] -ポータルを使用 --プロジェクトを参照 --[プロジェクトに追加]をクリック -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 [#mb1e4050] -[[chaining-buildsのBuild Configuration>OpenShift#tf47d740]]は、~ dotnet-runtime-example templateが参考になる。 -このテンプレートでは、 --「*-build」と --「*-runtime」の >[[Build Configuration>OpenShift#tf47d740]]を定義する。 ***ビルド・イメージ [#i8f20e54] -GitHubプロジェクトから構築され、 -変更を自動的に再構築するトリガを持つ。 --プロジェクトが変更されたとき --またはベース・イメージ(dotnet-20-rhel7)が更新されたとき ***ランタイム・イメージ [#t6a48587] -dotnet-20-runtime-rhel7ベース・イメージから構築される。 --ビルド・イメージからtar.gzファイルを取得。 --ビルド設定でこのソース定義を使用。 -変更を自動的に再構築するトリガを持つ。 --プロジェクトの内部[[Image Streams>OpenShift#r01d6b00]]でビルドイメージが更新されたとき、 --またはdotnet-20-runtime-rhel7ベースイメージが更新されたときに、 -ランタイムイメージ用に定義されたデプロイメントを持つ。 --ビルドイメージにはデプロイメントは必要ない。 ***トリガ [#pca91ef7] トリガを使用すると、イメージやコードが更新されたときに、~ チェーン内のオブジェクトが必要に応じて再構築される。 *演習 [#x661662d] -ログイン >oc login https://opnshdnsxx.centralus.cloudapp.azure.com --token=XXXXX **dotnet-example [#b08fcd4a] ***[[Image Streams>OpenShift#r01d6b00]] + GitソースURIからデプロイする。 [#s0e2e5f5] -プロジェクトを生成 >oc new-project pj11 -[[Image Streams>OpenShift#r01d6b00]]の読込。 >oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json imagestream "dotnet" created imagestream "dotnet-runtime" created -アプリケーションを生成 >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 -[[サービス>OpenShift#l875353c]]のルートを作成する。 >oc get routes No resources found. >oc expose svc/exampleapp route "exampleapp" exposed >oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION exampleapp exampleapp-pj11.XXX.XXX.XXX.XXX.nip.io exampleapp 8080-tcp None -[[サービス>OpenShift#l875353c]]にアクセスする。~ プレーンなMVCアプリが起動する。 ***テンプレートからデプロイする。 [#z54b90a2] -プロジェクトを生成 >oc new-project pj12 -テンプレートの読込 >oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-example.json template "dotnet-example" created -アプリケーションを生成 >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 -[[サービス>OpenShift#l875353c]]のルートを確認。 >oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION dotnet-example dotnet-example-pj12.XXX.XXX.XXX.XXX.nip.io dotnet-example <all> -[[サービス>OpenShift#l875353c]]にアクセスする。~ プレーンなMVCアプリが起動する。 **dotnet-runtime-example [#z9e1fb1d] ***テンプレートからデプロイする。 [#y8812782] -プロジェクトを生成 >oc new-project pj2 -テンプレートの読込 >oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-runtime-example.json template "dotnet-runtime-example" created -アプリケーションを生成 >oc new-app dotnet-runtime-example --name=runtimeexampleapp -進行状況の確認~ >oc logs -f bc/dotnet-runtime-example-build >oc logs -f bc/dotnet-runtime-example-runtime -[[サービス>OpenShift#l875353c]]のルートを確認。 >oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD dotnet-runtime-example dotnet-runtime-example-pj2.XXX.XXX.XXX.XXX.nip.io dotnet-runtime-example <all> None -[[サービス>OpenShift#l875353c]]にアクセスする。~ プレーンなMVCアプリが起動する。 **dotnet-pgsql-persistent [#r7fc29bf] ***テンプレートからデプロイする。 [#v2a7923f] -プロジェクトを生成 >oc new-project pj3 -テンプレートの読込 > oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/templates/dotnet-pgsql-persistent.json template "dotnet-pgsql-persistent" created -アプリケーションを生成 >oc new-app dotnet-pgsql-persistent --name=persistentapp -進行状況の確認~ >oc logs -f bc/musicstore -[[サービス>OpenShift#l875353c]]のルートを確認。 >oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD musicstore musicstore-pj3.XXX.XXX.XXX.XXX.nip.io musicstore <all> None -エラーになって起動できない。 >oc get pods NAME READY STATUS RESTARTS AGE musicstore-1-build 0/1 Completed 0 16m musicstore-1-deploy 0/1 Error 0 14m postgresql-1-deploy 0/1 Error 0 16m -[[サービス>OpenShift#l875353c]]にアクセスする。~ musicstoreアプリが起動する。 **自作アプリ [#ga229368] https://github.com/daisukenishino2/opneshift ***[[Image Streams>OpenShift#r01d6b00]] + GitソースURIからデプロイする。 [#h6aa773d] -プロジェクトを生成 >oc new-project pj4 -[[Image Streams>OpenShift#r01d6b00]]の読込。 >oc create -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/master/dotnet_imagestreams.json imagestream "dotnet" created imagestream "dotnet-runtime" created -アプリケーションを生成 >oc new-app --name=daisukenishino2opneshift "dotnet:2.0~https://github.com/daisukenishino2/opneshift#master" --build-env DOTNET_STARTUP_PROJECT=WebApplication1 -進行状況の確認~ >oc logs -f bc/daisukenishino2opneshift -[[サービス>OpenShift#l875353c]]のルートを作成する。 >oc get routes No resources found. >oc expose svc/daisukenishino2opneshift route "daisukenishino2opneshift" exposed >oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD daisukenishino2opneshift daisukenishino2opneshift-pj4.XXX.XXX.XXX.XXX.nip.io daisukenishino2opneshift 8080-tcp None -[[サービス>OpenShift#l875353c]]にアクセスする。~ プレーンなMVCアプリが起動する。 *参考 [#sa74f43c] **銀の光と碧い空 [#c6a0a798] -OpenShift で .NET Core 2.0を使いはじめる~ http://tech.tanaka733.net/entry/2017/09/06/OpenShift_%E3%81%A7_.NET_Core_2.0%E3%82%92%E4%BD%BF%E3%81%84%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B **redhat.com [#ga8c3948] -Developing .NET Core 2.0 Web Applications on OpenShift - RHD Blog~ https://developers.redhat.com/blog/2017/11/22/developing-net-core-2-0-web-applications-openshift/ ***Red Hat Customer Portal [#we8ccdea] -Getting Started Guide~ https://access.redhat.com/documentation/en-us/net_core/2.0/html/getting_started_guide/ --Chapter 1. .NET Core 2.0 on Red Hat Enterprise Linux~ https://access.redhat.com/documentation/en-us/net_core/2.0/html/getting_started_guide/gs_install_dotnet ---1.1. Install and Register Red Hat Enterprise Linux ---1.2. Install .NET Core ---1.3. Create an Application ---1.4. Publish Applications~ 1.4.1. Publish .NET Core Applications~ 1.4.2. Publish ASP.NET Core Applications ---1.5. Run Applications on Docker --Chapter 2. .NET Core 2.0 on Red Hat OpenShift Container Platform~ https://access.redhat.com/documentation/en-us/net_core/2.0/html/getting_started_guide/gs_dotnet_on_openshift ---2.1. Install Image Streams ---2.2. Deploy Applications ---2.3. Configuration ---2.4. Sample Applications ---2.5. Create a Runtime Image **openshift.com [#n82796b5] -Announcing .NET Core 2.0 Support for OpenShift – OpenShift Blog~ https://blog.openshift.com/announcing-net-core-2-0-support-openshift/