在 IBM Bluemix Kubernetes Cluster 上设置 MobileFirst Server

improve this page | report issue

概述

遵循以下指示信息在 IBM Bluemix 上配置 MobileFirst Server 实例和 MobileFirst Analytics 实例。 为此您需要完成以下步骤:

  • 创建以下类型的 Kubernetes Cluster:Standard(已付费集群)。
  • 使用所需的工具(Docker、Cloud Foundry CLI (cf)、Bluemix CLI (bx)、Container Service Plugin for Bluemix CLI (bx cs)、Container Registry Plugin for Bluemix CLI (bx cr) 或 Kubernetes CLI (kubectl))来设置主计算机。
  • 构建 MobileFirst Server Docker 映像并将其推送到 Bluemix 存储库。
  • 最后,在 Kubernetes Cluster 上运行 Docker 映像。

注:

  • 当前不支持在 Windows 操作系统上运行这些脚本。
  • MobileFirst Server 配置工具不能用于部署到 IBM Container。

跳转至:

在 Bluemix 上注册帐户

如果还没有帐户,请访问 Bluemix Web 站点,然后单击免费开始使用注册。 您需要填写注册表单,然后才能进入下一步。

Bluemix 仪表板

在登录 Bluemix 后,会显示 Bluemix 仪表板,其中提供了活动的 Bluemix 空间的概述。 缺省情况下,此工作区命名为“dev”。 如果需要,您可以创建多个工作区/空间。

设置主机

要管理容器和映像,您需要安装以下工具:

  • Docker
  • Bluemix CLI (bx)
  • Container Service Plugin for Bluemix CLI (bx cs)
  • Container Registry Plugin for Bluemix CLI (bx cr)
  • Kubernetes CLI (kubectl)

请参阅 Bluemix 文档以了解设置必备 CLI 的步骤

使用 IBM Bluemix Container Service 创建并设置 Kubernetes Cluster

请参阅 Bluemix 文档以在 Bluemix 上设置 Kubernetes Cluster

注:部署 Mobile Foundation 需要 Kubernetes Cluster 类型:Standard(已付费集群)。

下载 ibm-mfpf-container-8.0.0.0 归档

要使用 Bluemix 容器将 Mobile Foundation 设置为 Kubernetes Cluster,必须首先创建一个映像,稍后将其推送至 Bluemix。
IBM Containers 上的 MobileFirst Server 的临时修订可从 IBM Fix Central 获取。
从 Fix central 下载最新临时修订。 从 iFix 8.0.0.0-IF201707051849 起,提供 Kubernetes 支持。

此归档文件包含用于构建映像(dependenciesmfpf-libs)的文件,以及用于在 Kubernetes (bmx-kubenetes) 上构建和部署 MobileFirst Server 和 MobileFirst Analytics 的文件。

显示归档文件的文件系统结构的图像

bmx-kubernetes 文件夹

包含使用 IBM Bluemix Container Service 部署到 Kubernetes Cluster 所需的定制文件和脚本。

Dockerfile-mfpf-analytics 和 Dockerfile-mfpf-server

  • Dockerfile-mfpf-server:包含构建 MobileFirst Server 映像所需的所有命令的文本文档。
  • Dockerfile-mfpf-analytics:包含构建 MobileFirst Analytics 映像所需的所有命令的文本文档。
  • scripts 文件夹:此文件夹包含 args 文件夹,其中包含一组配置文件。 它还包含登录 Bluemix、构建 MobileFirst Server/MobileFirst Analytics 映像和在 Bluemix 上推送与运行此映像时所需的脚本。 您可以选择以交互方式运行这些脚本,或者通过对配置文件进行预配置的方式来运行脚本(如后文所述)。 除可定制的 args/*.properties 文件外,请勿修改该文件夹中的任何元素。 要获取脚本用法帮助,请使用 -h--help 命令行参数(例如,scriptname.sh --help)。
  • usr-mfpf-serverusr-mfpf-analytics 文件夹:
    • bin 文件夹:包含将在容器启动时执行的脚本文件 (mfp-init)。 您可以添加自己的定制代码以执行这些代码。
    • config 文件夹:包含 MobileFirst Server/MobileFirst Analytics 所使用的服务器配置片段(密钥库、服务器属性、用户注册表)。
    • keystore.xml - 用于 SSL 加密的安全证书存储库的配置。 必须在 ./usr/security 文件夹中引用列出的文件。
    • ltpa.xml - 定义 LTPA 密钥及其密码的配置文件。
    • mfpfproperties.xml - MobileFirst Server 和 MobileFirst Analytics 的配置属性。 请参阅以下文档主题中列出的受支持属性:
    • mfpfsqldb.xml - 用于连接到 DB2 或 dashDB 数据库的 JDBC 数据源定义。
    • registry.xml - 用户注册表配置。 basicRegistry - 将基于 XML 的基本用户注册表配置作为缺省值提供。 可以为 basicRegistry 配置用户名和密码,或者也可以配置 ldapRegistry。
    • tracespec.xml - 用于启用调试和记录级别的跟踪规范。
  • jre-security 文件夹:您可以通过将 JRE 安全相关文件(信任库、策略 JAR 文件等)放置在本文件夹中来更新这些文件。 将此文件夹中的文件复制到容器中的 JAVA_HOME/jre/lib/security/ 文件夹。
  • security 文件夹:用于存储密钥存储库、信任库和 LTPA 密钥文件 (ltpa.keys)。
  • env 文件夹:包含用于服务器初始化 (server.env) 和定制 JVM 选项 (jvm.options) 的环境属性。

  • 属性 缺省值 描述
    MFPF_SERVER_HTTPPORT 9080* 用于客户机 HTTP 请求的端口。 使用 -1 来禁用此端口。
    MFPF_SERVER_HTTPSPORT 9443* 通过 SSL (HTTPS) 保护的客户机 HTTP 请求所使用的端口。 使用 -1 来禁用此端口。
    MFPF_ADMIN_ROOT mfpadmin MobileFirst Server Administration Services 在其中可用的上下文根。
    MFPF_CONSOLE_ROOT mfpconsole MobileFirst Operations Console 在其中可用的上下文根。
    MFPF_ADMIN_GROUP mfpadmingroup 已分配预定义角色 mfpadmin 的用户组的名称。
    MFPF_DEPLOYER_GROUP mfpdeployergroup 已分配预定义角色 mfpdeployer 的用户组的名称。
    MFPF_MONITOR_GROUP mfpmonitorgroup 已分配预定义角色 mfpmonitor 的用户组的名称。
    MFPF_OPERATOR_GROUP mfpoperatorgroup 已分配预定义角色 mfpoperator 的用户组的名称。
    MFPF_SERVER_ADMIN_USER WorklightRESTUser MobileFirst Server Administration Services 的 Liberty 服务器管理员用户。
    MFPF_SERVER_ADMIN_PASSWORD mfpadmin。 确保在部署到生产环境之前将缺省值更改为专用密码。 MobileFirst Server Administration Services 的 Liberty 服务器管理员用户的密码。

    属性 缺省值 描述
    ANALYTICS_SERVER_HTTP PORT 9080* 用于客户机 HTTP 请求的端口。 使用 -1 来禁用此端口。
    ANALYTICS_SERVER_HTTPS PORT 9443* 用于客户机 HTTP 请求的端口。 使用 -1 来禁用此端口。
    ANALYTICS_ADMIN_GROUP analyticsadmingroup 具有预定义角色 worklightadmin 的用户组的名称。

  • dependencies 文件夹:包含 Mobile Foundation 运行时和 IBM Java JRE 8。
  • mfpf-libs folder 文件夹:包含 MobileFirst 产品组件库和 CLI。

先决条件

您需要具备 Kubernetes 的应用知识。 请参阅 Kubernetes 文档,以了解更多信息。

使用 IBM Containers 在 Kubernetes Cluster 上设置 MobileFirst 和 Analytics Server

如上文所述,您可以选择以交互方式运行这些脚本,或者通过使用配置文件来运行脚本:

  • 使用配置文件 - 运行脚本并传递相应的配置文件作为自变量。
  • 以交互方式 - 运行脚本,不使用任何自变量。

注:如果选择以交互方式运行脚本,可以跳过配置,但是强烈建议查看并了解一下您将需要提供的自变量。

以交互方式运行时,在以下目录中会保存所提供自变量的副本:./recorded-args/。 这样您便可以在首次使用交互方式后复用这些属性文件,作为将来部署的参考。

args 文件夹包含一组配置文件,其中包含运行脚本所需的自变量。 在以下文件中填充自变量值:

initenv.properties

  • BLUEMIX_API_URL - 要执行部署的地理位置或区域。
    例如:api.ng.bluemix.net 表示美国,api.eu-de.bluemix.net 表示德国,api.au-syd.bluemix.net 表示悉尼
  • BLUEMIX_ACCOUNT_ID - 您的帐户标识,该标识为字母数字值,例如,a1b1b111d11e1a11d1fa1cc999999999
    使用 bx target 命令可获取帐户标识。
  • BLUEMIX_USER - Bluemix 用户名(电子邮件)。
  • BLUEMIX_PASSWORD - Bluemix 密码。
  • BLUEMIX_ORG - Bluemix 组织名称。
  • BLUEMIX_SPACE - Bluemix 空间(如上文所述)。

prepareserverdbs.properties

Mobile Foundation 服务需要外部 DB2 on cloud 实例。
注:您还可以使用自己的 DB2 数据库。 Bluemix Kubenetes Cluster 应配置为连接到此数据库。
在设置 DB2 实例后,请提供所需自变量:
  • DB_TYPE - dashDB(使用 DB2 on Cloud 时)或 DB2(使用自己的 DB2 数据库时)。
  • 如果您使用自己的 DB2 数据库(即,DB_TYPE=DB2),请提供以下信息。
    • DB2_HOST - 您的 DB2 设置的主机名。
    • DB2_DATABASE - 数据库的名称。
    • DB2_PORT - 将用于连接到数据库的端口。
    • DB2_USERNAME - DB2 数据库用户(此用户应具备在提供的模式中创建表的权限,或者如果不存在模式,那么此用户应可创建模式)
    • DB2_PASSWORD - DB2 用户密码。
  • 如果使用 DB2 on Cloud(即,DB_TYPE=dashDB),请提供以下信息。
    • ADMIN_DB_SRV_NAME - 用于存储管理数据的 dashDB 服务实例名称。
    • RUNTIME_DB_SRV_NAME - 用于存储运行时数据的 dashDB 服务实例名称。 缺省名称为管理服务名称。
    • PUSH_DB_SRV_NAME - 用于存储运行时数据的 dashDB 服务实例名称。 缺省名称为管理服务名称。
  • ADMIN_SCHEMA_NAME - 管理数据的模式名称。 缺省名称为 MFPDATA
  • RUNTIME_SCHEMA_NAME - 运行时数据的模式名称。 缺省名称为 MFPDATA
  • PUSH_SCHEMA_NAME - 运行时数据的模式名称。 缺省名称为 MFPDATA
  • 注:如果许多用户或多个 Mobile Foundation 部署共享 DB2 数据库服务实例,请确保提供唯一的模式名称。

prepareserver.properties

  • SERVER_IMAGE_TAG - 映像标记。 应采用以下格式:registry-url/namespace/image:tag
  • ANALYTICS_IMAGE_TAG - 映像标记。 应采用以下格式:registry-url/namespace/image:tag
  • 例如:registry.ng.bluemix.net/myuniquenamespace/mymfpserver:v1
    如果尚未创建 Docker 注册表名称空间,请使用以下任一命令创建注册表名称空间:
    • bx cr namespace-add myuniquenamespace
    • bx cr namespace-list

以下指示信息演示了如何使用配置文件来运行脚本。 如果选择以非交互方式来运行,那么还提供了命令行自变量的列表:

  1. initenv.sh - 登录 Bluemix
    运行 initenv.sh 脚本以创建环境,用于在 IBM Containers 上构建和运行 Mobile Foundation: 交互方式
    ./initenv.sh
    非交互方式
    ./initenv.sh args/initenv.properties
  2. prepareserverdbs.sh - 准备 MobileFirst Server 数据库
    prepareserverdbs.sh 脚本用于通过 DB2 数据库服务配置 MobileFirst Server。 在步骤 1 中登录的组织和空间内应提供了 DB2 服务的服务实例。请运行: 交互方式
    ./prepareserverdbs.sh
    非交互方式
    ./prepareserverdbs.sh args/prepareserverdbs.properties
  3. initenv.sh(可选)- 登录 Bluemix
    仅当在除提供 DB2 服务实例的组织和空间以外的其他组织和空间内需要创建容器时,才需要执行此步骤。 如果情况如此,请使用必须在其中创建和启动新组织和空间的容器来更新 initenv.properties,然后重新运行 initenv.sh 脚本:
    ./initenv.sh args/initenv.properties
  4. prepareserver.sh - 准备 MobileFirst Server 映像
    运行 prepareserver.sh 脚本以构建 MobileFirst Server 和 MobileFirst Analytics 映像并将其推送到 Bluemix 存储库。 要查看 Bluemix 存储库中的所有可用映像,请运行:bx cr image-list
    此列表包含映像名称、创建日期和标识。
    交互方式
    ./prepareserver.sh
    非交互方式
    ./prepareserver.sh args/prepareserver.properties
  5. 使用 Bluemix Container Service 在 Kubernetes Cluster 的 Docker 容器上部署 MobileFirst Server 和 MobileFirst Analytics。
    1. 将终端上下文设置为您的集群
      bx cs cluster-config my-cluster
      要了解集群名称,请运行以下命令:
      bx cs clusters
      在输出中,指向配置文件的路径显示为用于设置环境变量的命令,例如:
      export KUBECONFIG=/Users/ibm/.bluemix/plugins/container-service/clusters/my-cluster/kube-config-prod-dal12-my-cluster.yml
      my-cluster 替换为您的集群名称后,复制粘贴以上命令以在您的终端内设置环境变量,然后按 Enter 键。
    2. [Mandatory for MobileFirst Analytics]: 创建持久存储卷申请。 这将用于持久存储分析数据。 这是一次性步骤。 如果先前已创建 PVC,可以进行复用。 编辑 yaml 文件 args/mfpf-persistent-volume-claim.yaml,然后运行此命令。 在执行以下 kubectl 命令之前,所有变量都必须替换为各自的值。
      kubectl create -f ./args/mfpf-persistent-volume-claim.yaml
      记下持久存储卷申请的名称,因为后续步骤中必须提供此名称。
    3. 要获取入口域,请运行以下命令:
      bx cs cluster-get my-cluster
      记下“入口域”。 如果需要配置 TLS,请记下入口密钥
    4. 创建 Kubernetes 部署
      编辑 yaml 文件 args/mfpf-deployment-all.yaml,并填写详细信息。 在执行 kubectl 命令之前,所有变量都必须替换为各自的值。
      ./args/mfpf-deployment-all.yaml 包含以下部署:
      • MobileFirst Server 的 kubernetes 部署,其中包含 3 个实例(副本),内存为 1024MB 且具有单核 CPU。
      • MobileFirst Analytics 的 kubernetes 部署,其中包含 2 个实例(副本),内存为 1024MB 且具有单核 CPU。
      • MobileFirst Server 的 kubernetes 服务。
      • MobileFirst Analytics 的 kubernetes 服务。
      • 整个设置的入口,包含 MobileFirst Server 和 MobileFirst Analytics 的所有 REST 端点。
      • configMap,用于使环境变量在 MobileFirst Server 和 MobileFirst Analytics 实例中可用。
      在 YAML 文件中必须编辑以下值:
      1. 显示的不同 my-cluster.us-south.containers.mybluemix.net,含入口域的输出(来自上述 bx cs cluster-get 命令的输出)。
      2. registry.ng.bluemix.net/repository/mfpfanalytics:latestregistry.ng.bluemix.net/repository/mfpfserver:latest - 使用您在 prepareserver.sh 中所使用的名称来上载映像。
      3. claimNamemfppvc - 使用先前已使用的“持久存储卷申请”名称来创建 PVC。
      执行以下命令:
      kubectl create -f ./args/mfpf-deployment-all.yaml
      注:
      已提供以下模板 yaml 文件:
      • mfpf-deployment-all.yaml:使用 HTTP 部署 MobileFirst Server 和 MobileFirst Analytics。
      • mfpf-deployment-all-tls.yaml:使用 HTTPS 部署 MobileFirst Server 和 MobileFirst Analytics。
      • mfpf-deployment-server.yaml:使用 HTTP 部署 MobileFirst Server。
      • mfpf-deployment-analytics.yaml:使用 HTTP 部署 MobileFirst Analytics。
      创建后,要使用 Kubernetes 仪表板,请执行以下命令:
      kubectl proxy
      在浏览器中打开 localhost:8001/ui

通过使用 IBM Bluemixmay 上运行的 MobileFirst Server,现在您可以启动自己的应用程序开发。 查看 Mobile Foundation 教程

应用 MobileFirst Server 修订

IBM Containers 上的 MobileFirst Server 的临时修订可从 IBM Fix Central 获取。
应用临时修订之前,请备份现有的配置文件。 配置文件位于以下文件夹中:

  • MobileFirst Analytics:package_root/bmx-kubernetes/usr-mfpf-analytics
  • MobileFirst Server Liberty Cloud Foundry 应用程序:package_root/bmx-kubernetes/usr-mfpf-server

应用 iFix 的步骤:

  1. 下载临时修订归档并将内容解压缩到现有安装文件夹,覆盖现有文件。
  2. 将备份配置文件复原到 package_root/bmx-kubernetes/usr-mfpf-serverpackage_root/bmx-kubernetes/usr-mfpf-analytics 文件夹,覆盖新安装的配置文件。
  3. 在编辑器中编辑 package_root/bmx-kubernetes/usr-mfpf-server/env/jvm.options 文件并除去以下行(如果存在):
    -javaagent:/opt/ibm/wlp/usr/servers/mfp/newrelic/newrelic.jar”
    

    现在,您可以构建并部署更新后的服务器。

    a. 运行 prepareserver.sh 脚本以重新构建服务器映像并将其推送到 IBM Containers 服务。

    b. 运行以下命令执行滚动更新: kubectl rolling-update NAME -f FILE

从 Bluemix 中除去容器

从 Bluemix 中除去容器时,还必须从注册表中除去映像名称。
运行以下命令以从 Bluemix 中除去容器:

  1. cf ic ps(列举当前正在运行的容器)
  2. cf ic stop container_id(停止该容器)
  3. cf ic rm container_id(除去该容器)

运行以下 cf ic 命令,从 Bluemix 注册表中除去映像名称:

  1. cf ic images(列举注册表中的映像)
  2. cf ic rmi image_id(从注册表中除去映像)

从 Bluemix 中除去 Kubernetes 部署

运行以下命令以从 Bluemix Kubernetes Cluster 中除去已部署的实例:

kubectl delete -f mfpf-deployment-all.yaml(除去 yaml 中定义的所有 kubernetes 类型)

运行以下命令以从 Bluemix 注册表中除去映像名称:

bx cr image-list(列举注册表中的映像)
bx cr image-rm image-name(从注册表中除去映像)

从 Bluemix 中除去数据库服务配置

如果在配置 MobileFirst Server 映像期间运行了 prepareserverdbs.sh 脚本,那么将创建 MobileFirst Server 所需的配置和数据库表。 此脚本还会针对容器创建数据库模式。

要从 Bluemix 中除去数据库服务配置,请使用 Bluemix 仪表板执行以下过程。

  1. 从 Bluemix 仪表板,选择使用的 DB2 on cloud 服务。 选择在运行 prepareserverdbs.sh 脚本时作为参数提供的 DB2 服务名称。
  2. 启动 DB2 控制台以使用选中的 DB2 服务实例的模式和数据库对象。
  3. 选择与 IBM MobileFirst Server 配置相关的模式。 模式名称是在运行 prepareserverdbs.sh 脚本时作为参数提供的名称。
  4. 在仔细检查每个模式名称以及其下的对象后,删除模式。 这将从 Bluemix 中除去数据库配置。
Last modified on November 17, 2017