首页 » 漏洞 » 通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

 
文章目录

您可能想知道如何结合企业级决策管理与云微服务架构的优势。是否可以在云上的容器平台中编写、测试和运行决策服务,并从开源技术中获益?

本教程将了解如何将 IBM® Operational Decision Manager (ODM) Standard 部署在 IBM Bluemix 上的 Kubernetes 集群中。您将了解如何从 Docker 镜像开始,然后使用 Kubernetes 实现一个正常运行的、集群化的 IBM ODM 平台。

IBM ODM 是一个用于自动化业务策略的决策平台。业务用户和开发人员可以设计一个决策模型,自动化业务词汇表上的决策逻辑,并将它作为一个 Web 决策服务运行。IBM ODM 包含两个主要组件:IBM Decision Center 和 IBM Decision Server。它们形成了管理和运行业务规则的平台,能帮助企业更快制定决策和提高响应能力。将业务规则(无论使用英语、中文还是另一种受支持的语言编写)打包到决策服务中,并公开为 Web 服务(包括 REST/JavaScript Object Notation 样式)。

使用 Docker Compose 部署 IBM Operational Decision Manager 拓扑结构 中,重点介绍了 IBM ODM Docker 镜像的构建,本教程将以这篇文章中的信息为基础展开介绍。Kubernetes 和 Docker Compose 是使用相同 Docker 镜像组装容器的两种备选方法。

在本教程中,将学习如何使用 IBM ODM Docker 文件构建镜像,这些镜像在 IBM WebSphere Application Server Liberty 上与一个 Derby 数据库相连。将 IBM ODM Docker 镜像推送到 Bluemix,并使用 Kubernetes Cluster 应用程序在云上托管的 Kubernetes 集群中将其实例化。

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过在 Bluemix 上的 Kubernetes 集群中运行 IBM ODM 运行时环境,您的决策应用程序业务用户可以编写决策服务,并在云中快速测试和部署它们。此方法通过 Kubernetes 的实用 IT 特性提高了平台的可用性和可扩展性。

构建您的应用程序需要做的准备工作

确保您拥有以下的工具和工作环境:

  • 在本地机器上安装 IBM ODM Standard V8.9.0 或 V8.8.x。
  • 一个 IBM Bluemix 帐户。如果您还没有 Bluemix 帐户,可以先注册一个 免费试用 帐户。
  • 在本地机器上构建 IBM ODM Docker 镜像。

请完成下面的安装步骤:

1

将您的 IBM ODM Docker 镜像推送到 Bluemix

在本节中,会将本地机器上的 IBM ODM Docker 镜像推送到 Bluemix。

  1. 登录您的 Bluemix 账户:
    bx login -a https://api.ng.bluemix.net


    如果您有一个连锁 ID,那么可以使用 bx login --sso 登录到 Bluemix CLI。

  2. 安装 IBM Bluemix Container Registry 插件:
    bx plugin install container-registry -r bluemix

  3. 安装该插件后,可以登录到 Bluemix Container Registry:
    bx cr login

  4. 如果这是您第一次使用 Bluemix Container Registry,还必须设置一个命名空间来标识您的私有 Bluemix 镜像注册表。它可以在 4 到 30 个字符之间:
    bx cr namespace-add namespace

    例如,在屏幕截图中给出的示例中,注册表命名空间为 odmlab

  5. 构建您的 IBM ODM 镜像。

    odm-ondocker 文件夹中,运行以下命令:

    docker-compose build docker images

    您现在会在本地 Docker 注册表中看到以下 IBM ODM 镜像。

    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

  6. 标记并推送以下 IBM ODM 镜像:
    • DBServer
      docker tag odmdocker/dbserver:8.9.0 registry.ng.bluemix.net/odmlab/ibm-odm-dbserver:8.9.0  docker push registry.ng.bluemix.net/odmlab/ibm-odm-dbserver:8.9.0

    • HTDS
      docker tag odmdocker/decisionserverruntime:8.9.0 registry.ng.bluemix.net/odmlab/ibm-odm-decisionserverruntime:8.9.0  docker push registry.ng.bluemix.net/odmlab/ibm-odm-decisionserverruntime:8.9.0

    • Decision Center
      docker tag odmdocker/decisioncenter:8.9.0 registry.ng.bluemix.net/odmlab/ibm-odm-decisioncenter:8.9.0  docker push registry.ng.bluemix.net/odmlab/ibm-odm-decisioncenter:8.9.0

    • Decision Server Console
      docker tag odmdocker/decisionserverconsole:8.9.0 registry.ng.bluemix.net/odmlab/ibm-odm-decisionserverconsole:8.9.0  docker push registry.ng.bluemix.net/odmlab/ibm-odm-decisionserverconsole:8.9.0

    • DecisionRunner
      docker tag odmdocker/decisionrunner:8.9.0 registry.ng.bluemix.net/odmlab/ibm-odm-decisionrunner:8.9.0  docker push registry.ng.bluemix.net/odmlab/ibm-odm-decisionrunner:8.9.0

  7. 确认您的 Bluemix Container Registry 注册表中存在以下 IBM ODM 镜像: 通过 IBM Bluemix 在 Kubernetes 中运行业务决策
    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

您的 IBM ODM 镜像现在已准备好在 Bluemix 中实例化。

2

在 Bluemix 中创建一个 Kubernetes 集群

要在 Bluemix 中创建一个简单的集群,请完成以下步骤:

  1. 在 Bluemix 目录中的 Apps 下,单击 Containers 并选择 Kubernetes Cluster
  2. 输入集群细节。默认集群类型为 精简版 ,所以您只需要自定义一些值。
    1. 输入集群名称。
    2. 选择部署集群的位置。可以使用的位置取决于与您的 Bluemix 帐户相关的地区。
  3. 单击 Create Cluster 。此时将会打开集群的细节视图,但集群中的工作节点需要花费几分钟才能完成配备。可以在 Worker nodes 选项卡中看到工作节点的状态。当列出的状态为 Ready 时,就可以使用工作节点了。

您的 Kubernetes 集群现在已准备好执行本教程中的步骤。请注意,我们专门配备了一个精简集群来方便访问教程,而且它只有一个节点。对于企业用途,可以创建一个标准集群。在两种情况下,IBM ODM Docker 镜像都保持不变。

现在执行以下步骤,在 Bluemix 中完成 Kubernetes 集群的设置:

  1. 初始化 Bluemix Container 服务插件:
    bx cs init
  2. 将终端上下文设置为您的集群:
    bx cs cluster-config ODMCluster
    在输出中,您的配置文件的路径显示为一个设置环境变量的命令,例如:
    export KUBECONFIG=/Users/ibm/.bluemix/plugins/container-service/clusters/ODMCluster/kube-config-prod-hou02-ODMCluster.yml

  3. 复制并粘贴该命令,以便在您的终端中设置环境变量,然后按下 ENTER。
    也可以直接 下载 您的 kubeconfig 文件来手动配置上下文。

您已准备就绪。可以运行以下 Kubernetes 命令来验证您的工作节点:

kubectl get nodes

也可以使用以下命令访问您的 Kubernetes 仪表板:

kubectl proxy

使用 http://127.0.0.1:8001/ui 查看您的 Kubernetes 仪表板,它类似于下面这个屏幕截图:

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

3

在 Bluemix 上的 Kubernetes 容器中配备 IBM ODM 决策平台

我们根据 Kubernetes pod、服务和部署抽象定义了一种 IBM ODM 拓扑结构。

对于每个 IBM ODM 模块,都可以查看样本 YAML 描述符文件,其中指定了以下信息:

  • 一个 pod,其中包含您从 Docker 注册表中的镜像实例化得到的一组 Docker 容器
  • 一个服务,用于选择您在其中声明要连接的外部端点的 Pod
  • 一种部署

例如,请查看 IBM ODM Decision Server 运行时环境(托管的透明决策服务)的以下样本代码:

apiVersion: extensions/v1beta1 # for versions before 1.6.0 use extensions/v1beta1 kind: Deployment metadata:   name: odm-decisionserverruntime spec:   replicas: 2   template:     metadata:       labels:         run: odm-decisionserverruntime     spec:       containers:       - name: odm-decisionserverruntime         image: registry.ng.bluemix.net/odmlab/ibm-odm-decisionserverruntime:8.9.0         ports:         - containerPort: 9080 --- apiVersion: v1 kind: Service metadata:   name: odm-decisionserverruntime   labels:     run: odm-decisionserverruntime spec:   selector:     run: odm-decisionserverruntime   type: NodePort   ports:    - protocol: TCP      port: 9080

第 1 部分是部署,由 kind:Deployment 定义,它的大小被设置为 2 个 pod,由 replica 值指定。Docker 镜像是 registry.ng.bluemix.net/odmlab/ibm-odm-decisionserverruntime:8.9.0 。内部端口由 containerPort:9080 定义。

代码样本的第 2 部分是服务,由 kind:Service 定义。连接类型由 type:NodePort 定义,外部端口由 port:9080 定义。这个服务保留同一个端口号,但 DecisionCenter 等其他服务会将其内部 HTTP 端口映射到一个新的外部端口(避免在同一个主机中运行时发生冲突)。

所有这些描述符部分都被汇编到 Github 上的两个 YAML 文件中:

获取并运行 Kubernetes 描述符:

  1. 将 Kubernetes 描述符文件克隆到您的本地目录:
    git clone https://github.com/PierreFeillet/IBM-ODM-Kubernetes.git
    cd IBM-ODM-Kubernetes/Bluemix
  2. 运行以下命令:
    • 如果使用了精简集群,则使用此命令:
      kubectl create –f odm-standard-bx-lite.yaml

    • 如果使用了标准集群,则使用此命令:
      kubectl create –f odm-standard-bx-standard.yaml

您会看到以下屏幕截图中显示的部署、服务和 pod。

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

4

访问您的 Kubernetes 集群中托管的 Decision Center 和 Decision Server

现在设置对 Decision Center 和 Decision Server 的访问,它们作为 Docker 容器在 Bluemix 中运行。要将 IBM ODM 部署在 Bluemix 上的精简 Kubernetes 集群中,需要依靠一种 NodePort 配置。所有声明的访问创作和执行端点的服务都基于主机 IP 地址和映射的端口号。对于标准集群,Decision Center 和 Decision Server 服务利用一个 LoadBalancer 连接。

  1. 运行以下命令:
    kubectl get nodes
    请注意,节点 IP 地址为 <host> 。在此示例中,节点 IP 地址为 YYY

    您会看到类似下面这个屏幕截图的结果:

    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

  2. 运行以下命令:
    kubectl get services

    请注意,与容器的连接需要几分钟才能到达 HTTP 端点。然后您会看到类似下面这个屏幕截图的结果:

    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

    通过 IBM Bluemix 在 Kubernetes 中运行业务决策

  3. 请注意您想访问的服务器的映射端口。例如,Decision Center 在 XXX 端口上响应。

参见下面这个 URL 凭证列表:

组件 URL 用户名和密码
Decision Center http:// < host > : < mapped port> /decisioncenter/t/library rtsAdmin / rtsAdmin
Decision Server 控制台 http://<host>:<mappedport>/res resAdmin / resAdmin
Decision Server 运行服务 http://<host>:<mappedport>/DecisionService/ 不需要用户名或密码。
Decision Runner 应用程序 http://<host>:<mappedport>/DecisionRunner/ 不需要用户名或密码。

5

扩展决策平台

借助 Kubernetes,您可以轻松地扩展在 pod 中运行的容器。例如,您可能想向已在为决策服务运行时运行的两个容器中添加另外两个容器。

运行下图中所示的命令:

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

检查现在集群中是否有 4 个 odm-decisionserviceruntime pod,如下面的屏幕截图所示:

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

通过 IBM Bluemix 在 Kubernetes 中运行业务决策

使用 Kubernetes 的另一个好处是自我修复。对于 IBM ODM,包括 Rule Execution Server Console(以 odm-decisionserverconsole 形式运行)在内的所有容器都会自动重新启动。宕机的控制台会在几秒内完成重启,并准备好接受新决策服务部署。其次,控制台容器的切换对决策执行容器完全透明。

最后,您可以通过运行以下命令,轻松地解除 IBM ODM 拓扑结构的配备:

  • 如果使用了精简集群,则使用此命令:
    kubectl delete –f odm-standard-bx-lite.yaml

  • 如果使用了标准集群,则使用此命令:
    kubectl delete –f odm-standard-bx-standard.yaml

结束语

您学习了如何将 IBM ODM Docker 镜像推送到 Bluemix 中,并配备一个由在 Kubernetes 集群中运行的容器组成的 IBM ODM Standard 平台。

通过结合 Docker 和 Kubernetes,可以将 IBM ODM 平台部署在企业内部和任何支持这些行业标准的云平台。此方法使业务用户和开发团队能够大规模地管控和自动化企业决策。

Kubernetes 为 Docker 容器技术提供了补充,它使得集群能提供一个全功能的 IBM ODM 平台来捕获、自动化和管控频繁、反复的业务决策。这种组合使业务用户能定义和部署他们的决策服务,同时 Kubernetes 和 Docker 还为 IT 团队带来了 DevOps 敏捷性。

Bluemix 将 Kubernetes 集群作为一项服务提供,只需几次单击和几个命令即可获得它。您可以首先创建一个 Kubernetes 精简集群来测试 IBM ODM 部署。但是,多节点集群要获得全面的可用性和可扩展性优势,标准集群是首选的配置。

请注意,IBM 授权要求在集群节点上安装审计工具。如有任何问题,请通过 antony.viaud@fr.ibm.com 联系 Antony Viaud。

现在您已经理解了本教程中的概念,您可以针对自己的需求和集成环境来更具体地修改 IBM ODM Docker 文件,首先从数据库和安全性开始。要优化资源分配和控制迁移成本,可以使用 Kubernetes 自动扩展和滚动更新功能。

通过在 Bluemix 中运行一个完整的 IBM ODM 规则平台,可以组合基于规则的决策管理和任何云功能来开展创新。例如,可以包含 Watson Conversation 和其他认知服务,创造下一代人工智能企业应用程序。

致谢

感谢 Antony Viaud 评审本教程。

原文链接:通过 IBM Bluemix 在 Kubernetes 中运行业务决策,转载请注明来源!

0