在 OpenShift Container Platform 中使用 .NET
在 OpenShift Container Platform 上安装并运行 .NET 9.0
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 概述 复制链接链接已复制到粘贴板!
通过从 s2i-dotnetcore 导入镜像流定义,将 .NET 镜像添加到 OpenShift。
镜像流定义包括 dotnet 镜像流,其中包含用于不同支持的 .NET 版本的 sdk 镜像。.NET 程序的生命周期和支持政策 提供了支持版本的最新概述。
| Version | Tag | Alias |
|---|---|---|
| .NET 8.0 | dotnet:8.0-ubi8 | dotnet:8.0 |
| .NET 9.0 | dotnet:9.0-ubi8 | dotnet:9.0 |
sdk 镜像具有对应的运行时镜像,它们在 dotnet-runtime 镜像流下定义。
容器镜像在不同的 Red Hat Enterprise Linux 和 OpenShift 版本间工作。基于 UBI-8 的镜像(suffix -ubi8)托管在 registry.access.redhat.com 上,不需要身份验证。
第 2 章 安装 .NET 镜像流 复制链接链接已复制到粘贴板!
要安装 .NET 镜像流,请使用 s2i-dotnetcore 中的镜像流定义以及 OpenShift Client (oc)二进制文件。镜像流可以从 Linux、Mac 和 Windows 安装。
您可以在全局 openshift 命名空间中或本地在项目命名空间中定义 .NET 镜像流。更新 openshift 命名空间定义需要足够的权限。
流程
安装(或更新)镜像流:
oc apply [-n namespace] -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/main/dotnet_imagestreams.json
$ oc apply [-n namespace] -f https://raw.githubusercontent.com/redhat-developer/s2i-dotnetcore/main/dotnet_imagestreams.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 3 章 使用 OpenShift 客户端部署应用程序 复制链接链接已复制到粘贴板!
您可以使用 OpenShift Client (oc)进行应用程序部署。
流程
创建新的 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:9.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnet-9.0' --build-env DOTNET_STARTUP_PROJECT=app
$ oc new-app --name=example-app 'dotnet:9.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnet-9.0' --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
第 4 章 .NET 9.0 的环境变量 复制链接链接已复制到粘贴板!
.NET 镜像支持多个环境变量来控制 .NET 应用程序的构建行为。您可以将这些变量设置为构建配置的一部分,或者将它们添加到应用程序源代码存储库中的 .s2i/environment 文件中。
| 变量名称 | 描述 | default |
|---|---|---|
| DOTNET_STARTUP_PROJECT |
选择要运行的项目。这必须是项目文件(如 |
|
| DOTNET_ASSEMBLY_NAME |
选择要运行的 assembly。这不得包含 |
|
| DOTNET_PUBLISH_READYTORUN |
当设置为 |
|
| DOTNET_RESTORE_SOURCES |
指定恢复操作中使用的 NuGet 软件包源的空格分隔列表。这会覆盖 | |
| DOTNET_RESTORE_CONFIGFILE |
指定用于恢复操作的 | |
| DOTNET_TOOLS |
指定在构建应用程序前要安装的 .NET 工具列表。可以通过发布待处理软件包名称(带有 | |
| DOTNET_TEST_PROJECTS |
指定要测试的测试项目列表。这必须是包含单个项目文件的项目文件或文件夹。为每个项目调用 | |
| DOTNET_CONFIGURATION |
以 Debug 或 Release 模式运行应用程序。这个值应该是 |
|
| DOTNET_VERBOSITY |
指定 | |
| HTTP_PROXY, HTTPS_PROXY | 配置分别构建和运行应用时使用的 HTTP 或 HTTPS 代理。 | |
| DOTNET_RM_SRC |
当设置为 | |
| SSL_CERT_DIR |
指定要信任的额外 SSL 证书的文件夹或文件列表。证书由构建期间运行的每个进程以及构建后在镜像中运行的所有进程(包括构建的应用程序)信任。这些项目可以是绝对路径(从 | |
| ASPNETCORE_URLS |
这个变量设定为 |
|
| DOTNET_RESTORE_DISABLE_PARALLEL |
当设置为 |
|
| DOTNET_INCREMENTAL |
当设置为 |
|
| DOTNET_PACK |
当设置为 |
第 5 章 使用 .NET 9.0 创建示例应用程序 复制链接链接已复制到粘贴板!
5.1. 创建 MVC 示例应用程序 复制链接链接已复制到粘贴板!
s2i-dotnetcore-ex 是 .NET 的默认 Model, View, Controller (MVC)模板应用程序。
此应用程序被 .NET S2I 镜像用作示例应用程序,可以使用 Try 示例 链接直接从 OpenShift UI 创建。
也可以使用 OpenShift 客户端二进制文件(oc)创建应用。
流程
使用 oc 创建示例应用程序:
添加 .NET 应用程序:
oc new-app dotnet:9.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnet-9.0 --context-dir=app
$ oc new-app dotnet:9.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-ex#dotnet-9.0 --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 获取 sharable URL:
oc get route s2i-dotnetcore-ex
$ oc get route s2i-dotnetcore-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2. 创建 CRUD 示例应用程序 复制链接链接已复制到粘贴板!
s2i-dotnetcore-persistent-ex 是一个一个简单的 Create, Read, Update, Delete (CRUD).NET web 应用程序,它将数据存储在 PostgreSQL 数据库中。
流程
使用 oc 创建示例应用程序:
添加数据库:
oc new-app postgresql-ephemeral
$ oc new-app postgresql-ephemeralCopy to Clipboard Copied! Toggle word wrap Toggle overflow 添加 .NET 应用程序:
oc new-app dotnet:9.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-persistent-ex#dotnet-9.0 --context-dir app
$ oc new-app dotnet:9.0-ubi8~https://github.com/redhat-developer/s2i-dotnetcore-persistent-ex#dotnet-9.0 --context-dir appCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从
postgresqlsecret 和数据库服务名称环境变量添加环境变量: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 获取 sharable URL:
oc get route s2i-dotnetcore-persistent-ex
$ oc get route s2i-dotnetcore-persistent-exCopy to Clipboard Copied! Toggle word wrap Toggle overflow