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标记来阻止确认提示。