Skip to content
This repository has been archived by the owner on Jul 18, 2024. It is now read-only.

Latest commit

 

History

History
184 lines (127 loc) · 8.22 KB

README-cn.md

File metadata and controls

184 lines (127 loc) · 8.22 KB

构建状态

将基于 MicroProfile 的 Java 微服务部署到 Kubernetes 上。

阅读本文的其他语言版本:English

本代码将演示如何使用 Kubernetes 上的 MicroProfile 和 Microservice Builder 部署一个基于 Java 的微服务应用程序。

MicroProfile 是一个基准平台定义,它针对微服务架构优化了企业 Java,还提供了跨多个 MicroProfile 运行时的应用程序可移植性。Microservice Builder 提供了使用 Java 和基于 MicroProfile 的编程模型和工具来开发、测试和部署微服务的途径。

Microservice Builder 样本应用程序 是一个用于管理会议的 Web 应用程序,它基于大量离散的微服务。前端是用 Angular 编写的,后端的微服务是用 Java 编写的。所有部分都是在 Kubernetes 管理的 Docker 容器中的 WebSphere Liberty 上运行。

操作流程

包含的组件

入门

Kubernetes

要理解本指南,您需要一个 Kubernetes 集群。如果无法访问现有的 Kubernetes 集群,请按照操作说明(在链接中)提供以下组件之一:

备注:这些操作说明已在 Kubernetes 1.7.3 上经过测试。 如果您使用的版本比此版本低得多,您获得的收益可能有所不同。

安装 Kubernetes(或设置对它的访问权)后,通过运行以下命令并确认获得了客户端和服务器的版本响应,确保您能访问它:

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.3", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-08-31T09:14:02Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"7", GitVersion:"v1.7.3", GitCommit:"17d7182a7ccbb167074be7a87f0a68bd00d58d97", GitTreeState:"clean", BuildDate:"2017-09-18T20:30:29Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

Helm

一些操作说明利用 Helm 来部署应用程序。如果您没有 Helm,那么您应该安装 Helm 并 在您的 Kubernetes 集群上初始化它:

$ helm init
$HELM_HOME has been configured at /home/username/.helm.

Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster.
Happy Helming!

步骤

1.安装 Microservice Builder 附加组件

首先,克隆我们的存储库。

git clone https://github.com/IBM/Java-MicroProfile-on-Kubernetes.git
cd Java-MicroProfile-on-Kubernetes

然后,安装 2 个附加组件:

安装 Microservice Builder Fabric:

$ helm repo add mb http://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/microservices/helm/
$ helm install --name fabric mb/fabric

安装 ELK:

$ helm repo add mb-sample https://wasdev.github.io/sample.microservices.helm.elk/charts
$ helm install --name sample-elk mb-sample/sample-elk

将 Microservice Builder 附加组件安装到您的 Kubernetes 集群上最多需要 20 分钟。如果您想自行构建该应用程序,现在是一个好时机。但是,出于演示目的,您可以使用我们已经构建并上传到 journeycode docker 存储库的映像。

开始部署您的应用程序之前,请确保 Microservice Builder 附加组件已安装并正常运行。

$ kubectl get pods --show-all=true
NAME                                    READY     STATUS      RESTARTS   AGE
fabric-zipkin-4284087195-d6s1t          1/1       Running     0          11m
key-retrieval-deploy-gkr9n              0/1       Completed   0          11m  # Make sure this job is completed
kibana-dashboard-deploy-rd0q5           1/1       Running     0          11m
sample-elk-sample-elk-461262821-rp1rl   3/3       Running     0          11m
secret-generator-deploy-bj1jj           0/1       Completed   0          11m  # Make sure this job is completed

2.可选步骤 - 部署 Istio

如果您想部署并使用 Istio 来控制微服务之间的流量,可以通过以下命令来部署它:

$ kubectl create -f istio
namespace "istio-system" created
clusterrole "istio-pilot-istio-system" created
clusterrole "istio-initializer-istio-system" created
clusterrole "istio-mixer-istio-system" created
...
...
initializerconfiguration "istio-sidecar" created

3.部署微服务

现在,使用以下命令部署微服务:

$ kubectl create -f manifests
persistentvolume "cloudant-pv" created
persistentvolumeclaim "cloudant-pv-claim" created
service "cloudant-service" created
deployment "cloudant-db" created
...
...

备注:这会将所有 Kubernetes 清单部署到 manifests/ 目录中。花点时间浏览它们的内容,以了解用于部署和公开该应用程序的资源。

创建所有这些服务和部署后,等待 10 到 15 分钟。您可以在 Kubernetes UI 上检查部署状态。运行”kubectl proxy”并访问 URL”http://127.0.0.1:8001/ui” ,检查应用程序容器何时准备就绪。

Kubernetes 状态页面

几分钟后,您应该就能访问该应用程序。我们的部署包含一个 Kubernetes 入口资源。如果您的 Kubernetes 集群已有一个入口服务,比如 IBM Cloud Private,那么您应该无需执行进一步更改就能访问该应用程序。

但是,如果您使用的是 minikube 或者没有入口服务的 Kubernetes 集群,那么您在访问集群之前还需要执行一个步骤。在 minikube 上,可以执行以下操作:

$ minikube addons enable ingress
ingress was successfully enabled
$ minikube ip
192.168.99.100

启用入口控制器后,您就可以通过上面的 minikube 提供的 IP 访问该应用程序。

现在可以在浏览器上使用链接 http://[Public IP] 来访问您的应用程序,并使用 http://[Public IP]:30500 访问您的 Kibana 来跟踪指标。

Web 应用程序主页

Web 应用程序主页

当您单击发言人姓名时

发言人信息

当您单击日程表链接时

日程表信息

当您单击投票链接时

投票信息

Kibana 发现页面

Kibana

故障排除

  • 如果您的微服务实例未正确运行,可以使用以下命令来检查日志
    • kubectl logs <your-pod-name>
  • 删除一个微服务
    • kubectl delete -f manifests/<microservice-yaml-file>
  • 删除所有微服务
    • kubectl delete -f manifests
  • 删除 istio & kubectl delete -f istio
  • 删除 Microservice Builder 附加组件
    • helm delete --purge sample-elk
    • helm delete --purge fabric

参考资料