Skip to content

运行 Cloud Foundry 托管应用 - 用于 Java 开发者

本指南介绍了如何部署、注册和测试第一个应用,以及如何注销和删除该应用。

有关 MindSphere 上 Cloud Foundry 托管应用的更多信息,请参见 Cloud Foundry 应用基础知识

入门指南

先决条件

在将应用部署到 Cloud Foundry 和 MindSphere 时,必须满足以下先决条件:

  • 开发者租户上存在 MindSphere 用户账户。
    如果没有账户,请联系您的租户管理员。有关说明,请参见为新用户提供访问
  • Cloud Foundry 命令行接口 (CF CLI)
    https://github.com/cloudfoundry/cli下载最新版本,并按安装说明操作。
  • 一个 Cloud Foundry 角色,允许推送应用,例如 SpaceDeveloper
  • 一个 MindSphere 开发者角色,可以是 mdsp:core:Developer,也可以是 mdsp:core:DeveloperAdmin

Cloud Foundry

必须为新用户分配一个 Cloud Foundry 角色(参见 向 Cloud Foundry 添加新用户)。

要使用示例应用,还必须满足以下先决条件:

  • 用于编辑示例应用的源代码编辑器或 IDE。
  • 用于编译示例应用的 JDK 1.8Maven

代理服务器

如果使用公司代理服务器操作,则必须为 gradle 设置相应的系统属性,例如,通过环境变量 JAVA_TOOL_OPTIONS。 此外,还必须为 Maven 配置代理服务器。示例配置如下:

Maven配置示例

将 Maven 的以下配置复制到 ~/.m2/settings.xml 文件中:

<settings>
  <proxies>
      <proxy>
        <id>http_proxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <username>proxyuser</username>
        <password>proxypass</password>
        <host>{yourProxyIP}</host>
        <port>{yourProxyPort}</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
      </proxy>
      <proxy>
        <id>https_proxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <username>proxyuser</username>
        <password>proxypass</password>
        <host>{yourProxyIP}</host>
        <port>{yourProxyPort}</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
      </proxy>
  </proxies>
</settings>

Windows 上的环境路径

在 Windows 上,可能需要将 Maven 和 JDK 路径添加到 PATH variable 中。

部署和注册应用

本部分介绍如何在 Cloud Foundry 上部署示例应用,并使用 Developer Cockpit 在 MindSphere 网关上公开该应用。

准备示例应用

  1. 下载 Hello World 应用 (Java)。
  2. 使用以下程序构建仓库中描述的应用:

    mvn install
    
  3. 按如下所示调整 manifest.yml

    applications:
    - name: hello-spring-cloud
      instances: 1
      random-route: true
      path: target/hello-spring-cloud-0.0.1.BUILD-SNAPSHOT.jar
      memory: 1G
    

通过 CF CLI 将应用部署到 Cloud Foundry

  1. 在要部署应用的文件夹中打开命令行接口(CLI)。
  2. 如果必要,请配置代理设置。

    有关代理设置的详细信息请点击这里

    如果您在代理背后的公司网络中,您可能必须设置代理才能到达 Cloud Foundry 端点。 如果您遇到超时或连接问题,请与管理员联系。

    像如下展示一样,为 Cloud Foundry CLI 设置代理:

    ```cmd tab="CMD" set http_proxy=http://PROXY_IP:PROXY_PORT set https_proxy=http://PROXY_IP:PROXY_PORT

    ```bash tab="BASH"
    export http_proxy=http://PROXY_IP:PROXY_PORT
    export https_proxy=http://PROXY_IP:PROXY_PORT
    

  3. 输入 cf login -a https://api.cf.{region}.{mindsphere-domain} --sso

  4. 打开由 CLI 打印的 URL 并使用您的 WebKey 凭证登陆,以获得一次性代码。
  5. 在 CLI 中输入一次性代码。
  6. 使用以下命令选择您的 Cloud Foundry org 和 space:

    cf target -o {org_name} -s {space_name}
    

    没有 Cloud Foundry Orgs 显示

    如果您没有看见任何 Cloud Foundry orgs,您需要将您自己添加到 org 中。请参考How Tos for Cloud Foundry

  7. 使用以下命令推送应用到您的 Cloud Foundry space:

    cf push
    

    Vendoring China 1 的依赖关系

    由于中国国际网络访问不稳定,在下载依赖关系时,将应用推送到 China 1 的 MindSphere Cloud Foundry有时会失败。请参考Cloud Foundry buildpack's文档,以vendoring应用的依赖关系:

    应用路由

    部署后显示的路由不会在 internet 上公开。您需要在 Developer Cockpit 中注册您的应用程序,然后才能通过 internet 访问它。

您可以使用以下内容检查应用是否已经上传到您的 Cloud Foundry Space:

cf apps

Outbound IP Addresses

MindSphere 应用通过 NAT 网关 在 Cloud Foundry 上运行。 如果这些应用需要访问您的企业网络,您的入站防火墙必须允许 NAT 网关的IP地址:

``` cmd tab="Europe 1 / Europe 2" 35.156.223.10 18.194.162.141 18.194.195.179

``` cmd tab="China 1"
101.132.123.180
106.15.159.73
47.102.201.47
47.102.210.119

将后端服务绑定到应用(可选)

下面的说明介绍了如何创建后端服务并将其绑定到先前部署的应用。使用 cf marketplace 获取可用后端服务的列表。

如果想要使用示例应用,请将 MongoDB Service 绑定到应用。用以下术语替换占位符:

占位符 术语
{service_name} mongodb34
{service_plan} mongodb-xs
{instance_name} mongo
{app_name} hello-spring-cloud
  1. 创建服务实例。请注意这会占用一些时间直到实例完成并运行。

    cf create-service {service_name} {service_plan} {instance_name}
    
  2. 使用以下命令检查您的服务实例是否在运行:

    cf services
    
  3. 将服务实例绑定到您的应用中:

    cf bind-service {app_name} {instance_name}
    
  4. 重新储存应用,以便激活应用中的服务绑定:

    cf restage {app_name}
    

在 Developer Cockpit 中注册应用

组件

MindSphere 上的应用可能由多个 Cloud Foundry 应用组成,这些应用具有多个端点。为了明确区分,Cloud Foundry 应用被称为**组件**。

示例应用由一个组件和一个端点组成。 实际应用通常由具有多个端点的更多组件组成。

  1. 从 Launchpad 中打开 Developer Cockpit 并选择**仪表盘**选项卡。
  2. 单击**创建新的应用**。
  3. 选择 类型 Standard 和 基础设施 MindSphere Cloud Foundry。
  4. 输入一个任意的**显示名称**和**内部名称**,这将会为成为应用 URL的一部分。初始化创建后,**内部名称**不能被更改! 像示例应用的**内部名称**一样使用 myfirstapp创建应用
  5. 输入版本编号。
    • MindSphere 支持 Major.Minor.Patch 方案。
    • 版本必须以 >=1 的主号码开头。
    • 保存之后版本不能被更改。
  6. 为您的应用上传一个图标。
  7. 输入组件名称。 示例应用的组件名称为hello-spring-cloud

    组件名称

    组件名称必须与 manifest.yml 中的 Cloud Foundry 应用名称匹配。否则,生产系统中的自动注册将会失败。

  8. 为您的组件添加至少一个端点。如下所示,使用 /** 来匹配您应用的所有路径。

    • 您可以为端点使用任意路径。
    • 不允许使用 /api,因为这是为从相对路径(例如 /api/iot/v3/timeseries)调用 MindSphere api 预留的。
    • 避免使用keywords,因为这是为 SQL 操作预留的。
    • 您可以使用通配符。 * 匹配路径中任何字符,** 匹配任何字符和子路径。 DC 创建新的应用

    组件路径

    在 MindSphere 网关中定义的路径值必须和相应的组件匹配。查看MindSphere 网关以获得网关到组件路径的可能映射的完整列表。组件可以有一个基本路径,这在 MindSphere 网关中是不可见的。组件 URL 需要由基本路径追加。

  9. 输入您应用的 Cloud Foundry URL。

    • 使用 cf app {app_name} 来获取您部署的应用的 URL。 示例应用的 URL 为https://hello-spring-cloud-myMindsphereTenant.apps.eu1.mindsphere.io
  10. 点击**保存**。

您将被重定向到应用详细信息。 您的应用程序处于In-Development状态,并且准备好注册了。

配置应用角色和范围

MindSphere 中的每个应用都受到特定角色和范围的保护以防止未经授权的访问。MindSphere 自动为新应用创建两个默认角色:

  • admin (mdsp:{tenant_name}:{app_name}.admin)
  • user (mdsp:{tenant_name}:{app_name}.user)

关于创建自定义应用角色,请参见保护您的应用。使用 Developer Cockpit 配置这些角色的权限。您可以分配核心角色,该角色授权访问 MindSphere APIs,并定义应用范围:

  1. 切换到**授权管理**选项卡。
  2. 选择应用。
  3. 创建一个应用范围并选择分配给哪个角色。
    添加应用范围
  4. 添加一个核心角色,使其能够访问各自的 API(可选)。下面的图片展示了如何获取 Time Series APIs 的只读权限。
    添加核心角色
  5. 保存不是必须的,除非您在之后将其中一个关联更改为应用特定的角色。

应用的 Authorization Management

应用的角色和范围配置并不特定于应用版本。

注册应用

应用必须在 MindSphere 网关 上已注册,才能从 Launchpad 对其进行访问。这将启用从租户特定 MindSphere URL 到内部 Cloud Foundry 应用的路由。注册过程遵循积极的安全概念,即要求明确注册应用的每个端点。

  1. 切换到**仪表盘**选项卡。
  2. 打开应用详细信息。
  3. 单击**注册**。

MindSphere 使用以下方案注册应用:{tenant_name}-{app_name}-{tenant_name}.{region}.{mindsphere-domain} 在此示例中,可以在 myMindsphereTenant-myfirstapp-myMindsphereTenant.eu1.mindsphere.io 下找到应用。

分配应用角色

只有当用户的 OAuth 令牌中存在一个应用范围,应用才在 Launchpad 上出现。在这种情况下,如果分配给用户一个应用角色:

  1. 从 Launchpad 中打开 Settings 应用,并切换到**角色**选项卡。 搜寻应用角色
  2. 选择一个应用角色并单击**编辑分配**。
  3. 分配一个或多个用户到应用角色。
  4. 单击**结束编辑**。
  5. 登出 MindSphere 并重新登陆。

退出

用户令牌只有在登出和再次登录之后才使用新范围更新。在极少数情况下,可能需要几分钟直到角色分配在系统中传播完毕。

您的应用现在可以在 Launchpad 中使用。您的 OAuth 令牌包含应用角色中定义的所有范围和核心角色。如果没有看到应用,请验证是否已为您自己分配了应用特定角色。

从 Cloud Foundry 中注销和删除应用

本部分介绍如何使用 Developer Cockpit 从 MindSphere 网关注销应用,以及如何通过 CF CLI 从 Cloud Foundry 删除应用。

取消分配应用角色

从用户中取消分配应用角色将从 Launchpad 中删除应用。

  1. 从 Launchpad 启动设置并打开**角色**选项卡。
  2. 将用户从**已分配用户**拖动到**未分配用户**。
  3. 单击**结束编辑**。

您应该不能再在 Launchpad 上看到您的应用了。

注销应用

MindSphere 网关 注销应用将禁用从租户特定 MindSphere URL 到内部 Cloud Foundry 应用的路由。

  1. 导航至 Developer Cockpit。
  2. 选择应用。
  3. 单击**注销**并确认。

通过 Developer Cockpit 删除应用

  1. 在 Developer Cockpit 中选择应用。
  2. 单击**删除**并确认。

通过 CF CLI 从 Cloud Foundry 中删除应用

  1. 打开命令行接口(CLI)。
  2. 如果必要,请配置代理设置。

    有关代理设置的详细信息请点击这里

    如果您在代理背后的公司网络中,您可能必须设置代理才能到达 Cloud Foundry 端点。 如果您遇到超时或连接问题,请与管理员联系。

    像如下展示一样,为 Cloud Foundry CLI 设置代理:

    ```cmd tab="CMD" set http_proxy=http://PROXY_IP:PROXY_PORT set https_proxy=http://PROXY_IP:PROXY_PORT

    ```bash tab="BASH"
    export http_proxy=http://PROXY_IP:PROXY_PORT
    export https_proxy=http://PROXY_IP:PROXY_PORT
    

  3. 输入 cf login -a https://api.cf.{region}.{mindsphere-domain} --sso

  4. 打开由 CLI 打印的 URL 并使用您的 WebKey 凭证登陆,以获得一次性代码。
  5. 在 CLI 中输入一次性代码。
  6. 使用以下命令选择您的 Cloud Foundry Org 和 space:

    cf target -o {org_name} -s {space_name}
    
  7. 使用 cf apps 获取所有可用应用的列表。

  8. 通过 cf delete hello-spring-cloud 从 Cloud Foundry 中删除应用并确认。

Last update: March 22, 2023