istio-ui——一款开源的简易Istio UI介绍和使用教程

Posted ServiceMesher

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了istio-ui——一款开源的简易Istio UI介绍和使用教程相关的知识,希望对你有一定的参考价值。

    开发istio-ui是由于运维: 到时候线上几百个istio配置文件管理会很麻烦。其实在开始接触istio的时候,我们其他同学就有这样的想法,当时大家都认为不久官方或社区就会有相应的产品出来。但等了几个月还是没音讯,所以我们就按照我们自己的需求开发了istio-ui,并且开源。当然现在还是一块滑板。离奔驰还需要慢慢雕琢。 在这个基础上,结合我们当前服务环境,增加了:校验,注入,模板等功能。

校验

校验是必须的,没人能保证自己不犯错,即使是 Ctrl+CCtrl+V

注入

有三种方式

  • 一键注入

基于运行中的服务 Deployment:apps/v1进行注入,使用这种方式服务会被重新部署

  • 文件上传注入

将需要注入的文件发送到远程api接口

 
   
   
 
  1. kubectl apply -f <(curl -F "config=@samples/bookinfo/platform/kube/bookinfo.yaml" http://localhost:9100/inject/file)

  • 内容注入

将需要注入的内容发送到远程api接口

 
   
   
 
  1. kubectl apply -f <(curl -X POST --data-binary @samples/bookinfo/platform/kube/bookinfo.yaml -H "Content-type: text/yaml" http://localhost:9100/inject/context)

    一键注入主要用于测试和学习,因为他需要二次部署,不适用于生产。而api接口注入是为了和持续集成部署结合起来。

模板

    模板这个功能我们还在思考中,在使用istio过程中发现,不同服务的服务治理配置很多是一样的,不会出现 千人千面的情况,所以打算实现通过模板形式管理配置。

k8s编排管理

    这是我们运维的想法,把k8s的编排也放在istio-ui管理,为了方便持续集成部署。但这个功能还没确定是否在istio-ui上开发,因为istio-ui的职责设定是管理istio的配置,如果把k8s的编排也放过来,那时候应该不叫istio-ui了。

安装

安装前先确认已安装k8s

  • docker

需要先设置 KUBECONFIG,这是授权istio-ui访问k8s的api-server接口

 
   
   
 
  1. docker run -itd -v $KUBECONFIG:$HOME/.kube/config -p9100:9100

  2. --name istio-ui --env KUBECONFIG=$HOME/.kube/config registry.cn-shenzhen.aliyuncs.com/jukylin/istio-ui:v0.1

  • k8s

 
   
   
 
  1. apply -f https://raw.githubusercontent.com/jukylin/istio-ui/master/istio-ui.yaml

新手任务

    在任务开始前先确认已安装k8s,istio和istio-ui,在这个任务中我们使用k8s安装istio-ui,用官网的Bookinfo作为例子。

获取Istio-ui的IP

istio-ui.yaml默认使用 LoadBalancer部署

 
   
   
 
  1. export ISTIOUI_IP=kubectl get service istio-ui -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

使用api接口注入部署Bookinfo

 
   
   
 
  1. kubectl apply -f <(curl -F "config=@samples/bookinfo/platform/kube/bookinfo.yaml" http://ISTIOUI_IP:9100/inject/file)

配置Gateway

  • 访问gateway配置页

 
   
   
 
  1. http://ISTIOUI_IP:9100/static/index.html#/global-istio-config?type=gateway

  • 添加下面配置

 
   
   
 
  1. apiVersion: networking.istio.io/v1alpha3

  2. kind: Gateway

  3. metadata:

  4.  name: istio-ui-gateway

  5. spec:

  6.  selector:

  7.    istio: ingressgateway

  8.  servers:

  9.  - hosts:

  10.    - "*"

  11.    port:

  12.      name: gateway-http

  13.      number: 80

  14.      protocol: HTTP

istio-ui——一款开源的简易Istio UI介绍和使用教程

配置VirtualService

  • 访问Deployment配置页

 
   
   
 
  1. http://ISTIOUI_IP:9100/static/index.html#/deploy

  • 点击productpage-v1的 istio配置,添加下面配置

 
   
   
 
  1. apiVersion: networking.istio.io/v1alpha3

  2. kind: VirtualService

  3. metadata:

  4.  name: productpage-vs

  5. spec:

  6.  hosts:

  7.  - "productpage.example.com"

  8.  gateways:

  9.  - istio-ui-gateway

  10.  http:

  11.  - match:

  12.    route:

  13.    - destination:

  14.        host: productpage

  15.        port:

  16.          number: 9080

istio-ui——一款开源的简易Istio UI介绍和使用教程

绑定host

  • 获取 INGRESS_IP

 
   
   
 
  1. export INGRESS_IP=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')

  • 将productpage.example.com 和 INGRESS_IP进行绑定

浏览器预览结果

 
   
   
 
  1. http://productpage.example.com/productpage?u=normal

istio-ui——一款开源的简易Istio UI介绍和使用教程

    至此新手任务已经完成,istio-ui和官方提供的配置方式区别只是在于线上和线下配置,直接用来做官方的新手任务是一样的效果,而且为了保证原生性,我们并没有对配置进行1byte的修改。

结语

    istio-ui的功能还不算完善,希望有兴趣的同学,可以贡献想法或代码,一起打造一个易用的istio-ui配置管理后台。前段时间听说sofa-mesh也在做对应的istio-ui后台,期待能早点推向社区,让我们参考学习。

点击【阅读原文】跳转到ServiceMesher网站上浏览可以查看文中的链接。

相关阅读




istio-ui——一款开源的简易Istio UI介绍和使用教程

  • SOFAMesh(https://github.com/alipay/sofa-mesh)基于Istio的大规模服务网格解决方案

  • SOFAMosn(https://github.com/alipay/sofa-mosn)使用Go语言开发的高性能Sidecar代理

合作社区

参与社区

以下是参与ServiceMesher社区的方式,最简单的方式是联系我!

  • 社区网址:http://www.servicemesher.com

  • Slack:https://servicemesher.slack.com (需要邀请才能加入)

  • GitHub:https://github.com/servicemesher

  • Istio中文文档进度追踪:https://github.com/servicemesher/istio-official-translation

  • Twitter: https://twitter.com/servicemesher

  • 提供文章线索与投稿:https://github.com/servicemesher/trans





以上是关于istio-ui——一款开源的简易Istio UI介绍和使用教程的主要内容,如果未能解决你的问题,请参考以下文章

Vue2.0 + Element-UI + WebAPI实践:简易个人记账系统

分享一款国内开源实用精美的WinForm UI开发框架

小米开源 Istio 工具 Naftis

Service Mesh 开源实现之 Istio 架构概览

Istio 迎来版本 1.0:一种开源的 Service Mesh

再见 Swagger UI!国人开源了一款超好用的 API 文档生成框架,Star 4.7K+,真香!!