使用脚本在 IBM Cloud Kubernetes 集群上设置 MobileFirst Application Center

improve this page | report issue



注:Helm 是用于在 Kubernetes 集群上部署软件的推荐方法。了解有关在 IBM Cloud Kubernetes 集群上使用 helm 图表部署 Mobile Foundation 的信息。

概述

遵循以下指示信息,在 IBM Cloud 上配置 MobileFirst Application Center 实例。 为此您需要完成以下步骤:

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

注:

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

跳转至:

在 IBM Cloud 上注册帐户

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

IBM Cloud 仪表板

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

设置主机

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

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

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

使用 IBM Cloud Container Service 创建并设置 Kubernetes 集群

请参阅 IBM Cloud 文档以在 IBM Cloud 上设置 Kubernetes 集群

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

下载 ibm-mfpf-container-8.0.0.0 归档

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

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

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

bmx-kubernetes 文件夹

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

Dockerfile-mfp-appcenter

  • Dockerfile-mfp-appcenter:包含构建 MobileFirst Application Center 映像所需的所有命令的文本文档。
  • scripts 文件夹:此文件夹包含 args 文件夹,其中包含一组配置文件。 它还包含登录 IBM Cloud 时所需的脚本,可构建 MobileFirst Application Center 映像,以及用于在 IBM Cloud 上推送与运行此映像。 您可以选择以交互方式运行这些脚本,或者通过对配置文件进行预配置的方式来运行脚本(如后文所述)。 除可定制的 args/*.properties 文件外,请勿修改该文件夹中的任何元素。 要获取脚本用法帮助,请使用 -h--help 命令行参数(例如,scriptname.sh --help)。
  • usr-mfp-appcenter 文件夹:
    • bin 文件夹:包含将在容器启动时执行的脚本文件 (mfp-appcenter-init)。 您可以添加自己的定制代码以执行这些代码。
    • config 文件夹:包含 MobileFirst Application Center 所使用的服务器配置片段(密钥库、服务器属性、用户注册表)。
    • keystore.xml - 用于 SSL 加密的安全证书存储库的配置。 必须在 ./usr/security 文件夹中引用列出的文件。
    • ltpa.xml - 定义 LTPA 密钥及其密码的配置文件。
    • appcentersqldb.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) 的环境属性。

  • 属性 缺省值 描述
    APPCENTER_SERVER_HTTPPORT 9080* 用于客户机 HTTP 请求的端口。 使用 -1 来禁用此端口。
    APPCENTER_SERVER_HTTPSPORT 9443* 通过 SSL (HTTPS) 保护的客户机 HTTP 请求所使用的端口。 使用 -1 来禁用此端口。
    APPCENTER_ROOT applicationcenter MobileFirst Application Center Administration Services 在其中可用的上下文根。
    APPCENTER_CONSOLE_ROOT appcenterconsole 提供 MobileFirst Application Center 控制台的上下文根。
    APPCENTER_ADMIN_GROUP appcenteradmingroup 已分配预定义角色 appcenteradmin 的用户组的名称。
    APPCENTER_USER_GROUP appcenterusergroup 已分配预定义角色 appcenteruser 的用户组的名称。

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

先决条件

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

使用 IBM Containers 在 Kubernetes 集群上设置 MobileFirst Application Center

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

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

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

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

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

initenv.properties

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

prepareappcenterdbs.properties

MobileFirst Application Center 需要外部 DB2 on cloud 实例。
注:您还可以使用自己的 DB2 数据库。 IBM Cloud Kubernetes 集群应配置为连接到此数据库。
在设置 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),请提供以下信息。
    • APPCENTER_DB_SRV_NAME - 用于存储 appcenter 数据的 dashDB 服务实例名称。
  • APPCENTER_SCHEMA_NAME - appcenter 数据的模式名称。 缺省名称为 APPCNTR
  • 注:如果许多用户或多个 MobileFirst Application Center 部署共享 DB2 数据库服务实例,请确保提供唯一的模式名称。

prepareappcenter.properties

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

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

  1. initenv.sh - 登录 IBM Cloud
    运行 initenv.sh 脚本以创建环境,用于在 IBM Containers 上构建和运行 MobileFirst Application Center: 交互方式
    ./initenv.sh
    非交互方式
    ./initenv.sh args/initenv.properties
  2. prepareappcenterdbs.sh - 准备 MobileFirst Application Center 数据库
    prepareappcenterdbs.sh 脚本用于通过 DB2 数据库服务配置 MobileFirst Application Center。 在步骤 1 中登录到的组织和空间内提供了 DB2 服务的服务实例。请运行: 交互方式
    ./prepareappcenterdbs.sh
    非交互方式
    ./prepareappcenterdbs.sh args/prepareappcenterdbs.properties
  3. initenv.sh(可选)- 登录 IBM Cloud
    仅当在除提供 DB2 服务实例的组织和空间以外的其他组织和空间内需要创建容器时,才需要执行此步骤。 如果情况如此,请使用必须在其中创建和启动新组织和空间的容器来更新 initenv.properties,然后重新运行 initenv.sh 脚本:
    ./initenv.sh args/initenv.properties
  4. prepareappcenter.sh - 准备 MobileFirst Application Center 映像
    运行 prepareappcenter.sh 脚本以构建 MobileFirst Application Center 映像,并将其推送到 IBM Cloud 存储库。 要查看 IBM Cloud 存储库中的所有可用映像,请运行:bx cr image-list
    此列表包含映像名称、创建日期和标识。
    交互方式
    ./prepareappcenter.sh
    非交互方式
    ./prepareappcenter.sh args/prepareappcenter.properties
  5. 使用 IBM Cloud Container Service 在 Kubernetes 集群的 Docker 容器上部署 MobileFirst Application Center。
    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. 要获取入口域,请运行以下命令:
      bx cs cluster-get my-cluster
      记下“入口域”。 如果需要配置 TLS,请记下入口密钥
    3. 创建 Kubernetes 部署
      编辑 yaml 文件 args/mfp-deployment-appcenter.yaml,并填写详细信息。 在执行 kubectl 命令之前,所有变量都必须替换为各自的值。
      ./args/mfp-deployment-appcenter.yaml 包含以下部署:
      • MobileFirst Application Center 的 kubernetes 部署,包含 1 个实例(副本),内存为 1024MB 且具有单核 CPU。
      • MobileFirst Application Center 的 kubernetes 服务。
      • 整个设置的入口,包含 MobileFirst Application Center 的所有 REST 端点。
      • configMap,用于使环境变量在 MobileFirst Application Center 实例中可用。
      在 YAML 文件中必须编辑以下值:
      1. 显示的不同 my-cluster.us-south.containers.mybluemix.net,含入口域的输出(来自上述 bx cs cluster-get 命令的输出)。
      2. registry.ng.bluemix.net/repository/mfpappcenter:latest - 使用您在 prepareappcenter.sh 中所使用的名称来上传映像。
      执行以下命令:
      kubectl create -f ./args/mfp-deployment-appcenter.yaml
      注:
      已提供以下模板 yaml 文件:
      • mfp-deployment-appcenter.yaml:使用 HTTP 部署 MobileFirst Application Center。
      • mfp-deployment-appcenter-with-tls.yaml:使用 HTTPS 部署 MobileFirst Application Center。
      创建后,要使用 Kubernetes 仪表板,请执行以下命令:
      kubectl proxy
      在浏览器中打开 localhost:8001/ui

从 IBM Cloud 中除去容器

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

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

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

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

从 IBM Cloud 中除去 Kubernetes 部署

运行以下命令以从 IBM Cloud Kubernetes 集群中除去已部署的实例:

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

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

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

从 IBM Cloud 中除去数据库服务配置

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

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

  1. 从 IBM Cloud 仪表板,选择使用的 DB2 on cloud 服务。 选择在运行 prepareappcenterdbs.sh 脚本时作为参数提供的 DB2 服务名称。
  2. 启动 DB2 控制台以使用选中的 DB2 服务实例的模式和数据库对象。
  3. 选择与 IBM MobileFirst Server 配置相关的模式。 模式名称是在运行 prepareappcenterdbs.sh 脚本时作为参数提供的名称。
  4. 在仔细检查每个模式名称以及其下的对象后,删除模式。 这将从 IBM Cloud 中除去数据库配置。
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.
Last modified on June 01, 2020