自托管应用 - 集成到 MindSphere
MindSphere 支持集成在 MindSphere 之外托管的应用。在 MindSphere 之外托管的应用称为自托管应用,因为 MindSphere 不对这些应用的基础架构进行管理和操作。本部分介绍了如何开发此类应用以及如何将其集成到 MindSphere 中。
自托管应用的要求
将自托管应用集成到 MindSphere 中需满足以下要求:
- 进行出站流量升级 - 包括用于在 MindSphere 平台之外使用 MindSphere 服务所需的数据量。要进行升级,您的租户管理员需要联系其指定的客户经理或客户成功经理。
- 自托管应用要通过 DNS 和有效的 SSL 证书访问(不允许使用自签名证书)。
- 自托管应用要提供一个健康端点,以便实施 MindSphere 的内部监控。
- 自托管应用使用 MindSphere Identity Management。
- 自托管应用已在 MindSphere 网关 中注册。
准备应用
先决条件
- 您需要访问某些基础设施,这些设施可通过互联网进行访问,例如服务器。
- 托管应用必须通过 DNS 名称访问,并且必须通过 SSL 进行保护(不允许使用自签名证书)。
应用的部署
- 连接到要在其上部署应用的基础架构。
-
确保您的应用在基础架构中可用。或者,您也可以将以下 python 示例复制到合适的位置:
Python 示例
from flask import Flask, request, jsonify import requests import os from datetime import datetime # Read MDSP environment from environment variables ENV = os.getenv("MDSP-ENV", 'eu1') ASSET_PATH = 'https://gateway.{0}.mindsphere.io/api/assetmanagement/v3/assets'.format(ENV) app = Flask(__name__) # Get port from environment variable or use default port = int(os.getenv("PORT", 80)) @app.route('/') def hello_world(): auth_header = request.headers.get('Authorization', None) if auth_header is not None: # Add headers for authorization (use token from requesting user) and the accept type headers = {'Authorization': auth_header, 'Accept': 'application/hal+json'} try: r = requests.get(ASSET_PATH, headers=headers) resp = r.json() # response as json except Exception as err: resp = str(err) try: return jsonify(resp) # return json response from MindSphere API except Exception as err: print('Failed to jsonify', err) else: return 'Retrieved no authorization header' @app.route('/health') def health_check(): # do some checks and then return the result health = { 'healthStatus': 'green', 'time': datetime.utcnow().replace(tzinfo=datetime.timezone.utc).isoformat() } return jsonify(health) if __name__ == '__main__': app.run(host='0.0.0.0', port=port)
-
使用以下命令启动应用:
python <filename>.py
-
确保您的应用可以通过 Internet 进行访问,例如通过配置安全策略。
-
尝试通过 `https:\\L105\
Retrieved no authorization header
在此示例中,应用期望请求中提供 MindSphere 授权消息头。授权消息头用于标识要从中检索数据的访问用户及相关租户。接下来,必须在 Developer Cockpit 中配置应用,将应用与 MindSphere 的 Identity 和 Access Management 角色和范围进行集成。
生产用途
上述过程不适用于生产。我们建议使用合适的概念来托管和运行您的应用。
在 Developer Cockpit 中配置自托管应用
先决条件
- 已按照上一章所述内容成功部署了您的自托管应用。
- 自托管应用正在运行并可从 Internet 进行访问。
创建应用
- 打开 Developer Cockpit 的“仪表盘”选项卡。
- 单击“新建应用”。
- 填写必填项(例如,
Name
、Display Name
、Version
和App Icon
)。 - 选中“自托管应用”复选框。
- 添加至少一个带有外部 URL 的组件,例如
https://myapplication-123456789.eu-west-1.elb.amazonaws.com
。 - 单击“保存”以创建应用。
注册应用
- 导航到“角色和范围”选项卡。
- 选择应用。
- 添加至少一个默认范围,例如
myselfhosted.default
。 - 添加核心角色
mdsp:core:assetmanagement:standarduser
(python 示例所需)。 - 导航回应用的“应用详细信息”屏幕。
- 单击应用的“注册”按钮。
测试应用
- 打开应用的“设置”。
- 搜索并选择您的用户名,然后单击“编辑角色分配”。
- 搜索角色
mdsp:<tenant>:<application>.<role>
(在此示例中是mdsp:<tenant>:myselfhosted.user
)。 - 注销并再次登录。
您的应用图标现在显示在 Launchpad 上并打开应用。如果您使用的是示例应用,则应用会显示租户中所有可用资产的列表。
防火墙设置
在 Cloud Foundry 上运行的 MindSphere 应用通过 NAT 网关访问 Internet。如果要允许这些应用访问应用服务器,则入站防火墙必须允许 NAT 网关的 IP 地址:
-
在 Europe 1/ Europe 2:
35.156.223.10 18.194.162.141 18.194.195.179
-
在 China 1:
101.132.123.180 106.15.159.73 47.102.201.47 47.102.210.119
将自托管应用提交到 MindSphere Store
先决条件
- 您的应用已在 Developer Cockpit 中进行了配置和注册。
- 应用中已集成 MindSphere OS Bar。
- 提供应用的屏幕截图,其中显示包含 MindSphere OS Bar 在内的顶级站点。
- 提供应用的描述。
- 具有角色
mdsp:core:DeveloperAdmin
。
准备发布
- 导航到应用的详细信息视图。
- 单击“准备发布”。
- 选择应用的屏幕截图,然后单击“上传”。
- 填写应用说明。
- 单击“提交”。
批准上传
- 导航到应用的详细信息视图。
- 单击“批准上传”。
- 在“备用电子邮件”中输入备用联系人的邮件地址。
- 阅读并接受“重要通知”。
- 单击“批准”。
您的应用已成功提交到应用仓库。如果应用已可以进行分配或者它不符合 MindSphere 要求,您和备用联系人就会收到通知。
还有问题?
除非另行声明,该网站内容遵循MindSphere开发许可协议.
Last update: April 1, 2020