This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.2.6. 使用 odo 创建多组件应用程序
通过使用 odo
,可以创建多组件应用程序,修改该应用程序,并以方便和自动的方式链接其组件。
这个例子描述了如何部署多组件应用程序 - 一个射击游戏。应用程序由一个前端 Node.js 组件和一个后端 Java 组件组成。
2.6.1. 先决条件 复制链接链接已复制到粘贴板!
-
已安装了
odo
。 - 有一个正在运行的 OpenShift Container Platform 集群。开发人员可以使用 CodeReady Containers (CRC) 来快速部署一个本地的 OpenShift Container Platform 集群。
- 已安装 Maven。
2.6.2. 创建一个项目 复制链接链接已复制到粘贴板!
创建一个项目来在一个独立的空间内保存源代码、测试并对库进行管理。
流程
登陆到一个OpenShift Container Platform集群。
odo login -u developer -p developer
$ odo login -u developer -p developer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个项目:
odo project create myproject
$ odo project create myproject ✓ Project 'myproject' is ready for use ✓ New project created and now using project : myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.3. 部署后端组件 复制链接链接已复制到粘贴板!
要创建一个 Java 组件,请导入 Java 构建器镜像(builder image),下载 Java 应用程序并使用 odo
将源代码推送到您的集群中。
流程
将
openjdk18
导入集群:oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
$ oc import-image openjdk18 \ --from=registry.access.redhat.com/redhat-openjdk-18/openjdk18-openshift --confirm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像标记为
builder
,使它可以被 odo 访问:oc annotate istag/openjdk18:latest tags=builder
$ oc annotate istag/openjdk18:latest tags=builder
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
odo catalog list components
查看创建的镜像:odo catalog list components Odo Supported OpenShift Components: NAME PROJECT TAGS nodejs openshift 10,8,8-RHOAR,latest openjdk18 myproject latest
$ odo catalog list components Odo Supported OpenShift Components: NAME PROJECT TAGS nodejs openshift 10,8,8-RHOAR,latest openjdk18 myproject latest
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为您的组件创建一个新目录:
mkdir my_components $$ cd my_components
$ mkdir my_components $$ cd my_components
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载后端应用程序示例:
git clone https://github.com/openshift-evangelists/Wild-West-Backend backend
$ git clone https://github.com/openshift-evangelists/Wild-West-Backend backend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将目录改为后端源目录,检查目录中有正确的文件:
cd backend ls
$ cd backend $ ls debug.sh pom.xml src
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Maven 构建后端源文件以创建一个 JAR 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
backend
的 Java 组件类型组件配置:odo create openjdk18 backend --binary target/wildwest-1.0.jar
$ odo create openjdk18 backend --binary target/wildwest-1.0.jar ✓ Validating component [1ms] Please use `odo push` command to create the component with source deployed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 现在,配置文件
config.yaml
位于后端组件的本地目录中,其中包含用于部署的组件信息。使用以下方法检查
config.yaml
文件中后端组件的配置设置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将组件推送到 OpenShift Container Platform 集群。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
odo push
,OpenShift Container Platform 创建一个容器来托管后端组件,将容器部署到运行在 OpenShift Container Platform 集群上的 Pod 中,并启动backend
组件。验证:
odo 中操作的状态:
odo log -f 2019-09-30 20:14:19.738 INFO 444 --- [ main] c.o.wildwest.WildWestApplication : Starting WildWestApplication v1.0 onbackend-app-1-9tnhc with PID 444 (/deployments/wildwest-1.0.jar started by jboss in /deployments)
odo log -f 2019-09-30 20:14:19.738 INFO 444 --- [ main] c.o.wildwest.WildWestApplication : Starting WildWestApplication v1.0 onbackend-app-1-9tnhc with PID 444 (/deployments/wildwest-1.0.jar started by jboss in /deployments)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 后端组件的状态:
odo list
$ odo list APP NAME TYPE SOURCE STATE app backend openjdk18 file://target/wildwest-1.0.jar Pushed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.4. 部署前端组件 复制链接链接已复制到粘贴板!
要创建并部署前端组件,请下载 Node.js 应用程序并使用 odo
将源代码推送到集群中。
流程
下载前端应用程序示例:
git clone https://github.com/openshift/nodejs-ex
$ git clone https://github.com/openshift/nodejs-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将当前目录改为前端目录:
cd <directory-name>
$ cd <directory-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出目录的内容,以查看前端是一个 Node.js 应用程序。
ls
$ ls assets bin index.html kwww-frontend.iml package.json package-lock.json playfield.png README.md server.js
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意前端组件使用解释语言 (Node.js) 编写,不需要构建它。
创建名为
frontend
的 Node.js 组件类型组件配置:odo create nodejs frontend
$ odo create nodejs frontend ✓ Validating component [5ms] Please use `odo push` command to create the component with source deployed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将组件推送到正在运行的容器中。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6.5. 连接两个组件 复制链接链接已复制到粘贴板!
集群中运行的组件需要连接才能进行交互。OpenShift Container Platform 提供了链接机制以发布一个程序到其客户端的通信绑定。
流程
列出在集群中运行的所有组件:
odo list
$ odo list APP NAME TYPE SOURCE STATE app backend openjdk18 file://target/wildwest-1.0.jar Pushed app frontend nodejs file://./ Pushed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将当前的前端组件链接到后端:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 后端组件的配置信息被添加到前端组件中,前端组件重新启动。
2.6.6. 公开组件 复制链接链接已复制到粘贴板!
流程
为应用程序创建一个外部 URL:
cd frontend odo url create frontend --port 8080
$ cd frontend $ odo url create frontend --port 8080 ✓ URL frontend created for component: frontend To create URL on the OpenShift cluster, use `odo push`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用更改:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在一个浏览器中使用 URL 来查看应用程序。
如果一个应用程序需要一个有效的服务账户( Service Account)来访问 OpenShift Container Platform 命名空间并删除活跃的 pod 时,后端组件的 odo log
中可能会出现以下错误:
Message: Forbidden!Configured service account doesn’t have access.Service account may have been revoked
要解决这个错误,请为 Service Account 角色添加权限:
oc policy add-role-to-group view system:serviceaccounts -n <project> oc policy add-role-to-group edit system:serviceaccounts -n <project>
$ oc policy add-role-to-group view system:serviceaccounts -n <project>
$ oc policy add-role-to-group edit system:serviceaccounts -n <project>
不要在生产环境集群中使用它。
2.6.7. 修改正在运行的应用程序 复制链接链接已复制到粘贴板!
流程
将本地目录改为前端目录:
cd ~/frontend
$ cd ~/frontend
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下方法监控文件系统中的更改:
odo watch
$ odo watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
index.html
文件,为游戏更改显示的名称。注意在 odo 可以识别更改前可能会有一些延迟。
odo 将更改推送到前端组件,并将其状态输出到终端:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在浏览器中刷新应用程序页面。现在会显示新名称。
2.6.8. 删除应用程序 复制链接链接已复制到粘贴板!
删除应用程序将删除与应用程序关联的所有组件。
流程
列出当前项目中的应用程序:
odo app list
$ odo app list The project '<project_name>' has the following applications: NAME app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出与应用程序关联的组件。这些组件将随应用程序一起删除:
odo component list
$ odo component list APP NAME TYPE SOURCE STATE app nodejs-nodejs-ex-elyf nodejs file://./ Pushed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除应用程序:
odo app delete <application_name>
$ odo app delete <application_name> ? Are you sure you want to delete the application: <application_name> from project: <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
使用
Y
确认删除。您可以使用-f
标记来阻止确认提示。