在Kubernetes上基于Istio服务网格建立Spring Boot应用源码
该开源项目在kubernetes集群中部署了两个微服务,并将这些服务与istio 服务网格互连。
为什么这样做?
我们通过建立Spring Cloud Netflix环境已经非常成功。我们无需太多努力就能创建可扩展且容错的应用程序基础架构。虽然我们已经是站在巨人的肩膀上,可以用spring boot starter把一切粘合起来,但我们仍然需要在代码中放置基础设施逻辑。我们需要在代码中明确处理服务发现、失败请求等等。
Istio通过在应用程序的每个pod中提供sidecar代理,这是另外一种方法。应用程序之间调用可以通过调用代表服务网格的代理实现,由此将基础逻辑移出了微服务。
在minikube上安装
请按照以下链接在新的minikube群集中安装istio。按照这些步骤操作后,将边车代理自动注入K8s。Istio的基础设施会自动注入POD。因此,您无需扩展配置即可从istio中受益。
https://istio.io/docs/setup/kubernetes/download-release/
https://istio.io/docs/setup/kubernetes/platform-setup/minikube/ https://istio.io/docs/setup/kubernetes/helm-install/installation-steps https://istio.io/docs/setup/kubernetes/helm-install/option-2-install-with-helm-and-tiller-via-helm-install
启用自动边车注入
在执行安装步骤之后,部署了istio并且可以自动将边车注入K8s的POD以后。需要通过将istio-injection = enabled - 设置为所需的命名空间来启用。
kubectl label namespace default istio-injection=enabled
部署应用程序
helm upgrade test . -i -w
访问该应用程序
你可以定义入口资源以使流量可用于外部世界。这是非常简单的方法,但你会错过重要的功能。
#
因此,发布服务的首选方式是使用自定义的Istio资源。
首先,我们定义一个Gateway处理负载平衡,其次是用VirtualService定义路由逻辑。
相关文档:
https://istio.io/docs/tasks/traffic-management/ingress/configuring-ingress-using-an-istio-gateway
下面需要了解如何访问服务。istio ingress服务已经绑定到我们需要查找的随机节点端口。只需运行以下命令即可从群集中检索到信息。
|
在浏览器中打开该页面并查看应用程序输出。
Istio代理状态
检查istio网格的状态:
istioctl proxy-status
输出:
|
按照日志查看istio的运行情况。您可以使用kail之类的工具在一个位置查看所有日志消息。
marcopaga/sample-istio-service-mesh-on-kubernetes:
[该贴被banq于2018-08-16 18:47修改过]