istio 可视化工具 kiali 部署体验

知乎 · · 3782 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Kiali 为网格管理和可观察性提供了良好的用户体验的可视化工具;

Kiali 为我们提供了查看相关服务与配置提供了统一化的可视化界面,并且能在其中展示他们的关联;同时他还提供了界面让我们可以很方便的验证 istio 配置与错误提示;

官方功能介绍大致如下:


目前官方没有提供能够方便用户一键部署的 yaml 配置文件,需要 clone 项目代码并运行 make k8s-deploy进行部署,为了部署方便我整理了一份部署 yaml 如下;将该配置复制保存为文件然后运行 kubectl apply -f deploy-kiali.yaml -n istio-system即可;(注意,一定修改配置里 Secret 里面的用户名密码配置,不然就只是简单的 admin,admin);

注:

目前(18-08-05) kiali 0.5-snapshot 对于 istio1.0 的 prometheus的数据还不是完全兼容,
graph数据不能展示,其他数据页面目测没有问题,作者正在努力进行兼容,兼容后我也会对文章进行修改;


## kiali 运行配置文件
apiVersion: v1
kind: ConfigMap
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
data:
  config.yaml: |
    server:
      port: 20001
      static_content_root_directory: /opt/kiali/console

## 用户命密码配置文件
## 为了安全起见,部署的时候务必修改登录用户与密码
---
apiVersion: v1
kind: Secret
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
type: Opaque
data:
  username: YWRtaW4=    # admin
  password: YWRtaW4=    # admin
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT

## 部署配置文件
---
apiVersion: v1
kind: Service
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
spec:
  type: NodePort
  ports:
  - name: tcp
    protocol: TCP
    port: 20001
  selector:
    app: kiali
    version: v0.5.1-SNAPSHOT
---
apiVersion: v1
kind: Service
metadata:
  name: kiali-jaeger
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
spec:
  type: NodePort
  ports:
  - name: jaeger
    protocol: TCP
    nodePort: 32439
    port: 20002
  selector:
    app: kiali
    version: v0.5.1-SNAPSHOT
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
spec:
  backend:
    serviceName: kiali
    servicePort: 20001
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kiali
      version: v0.5.1-SNAPSHOT
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      name: kiali
      labels:
        app: kiali
        version: v0.5.1-SNAPSHOT
    spec:
      serviceAccount: kiali
      containers:
      - image: kiali/kiali:latest
        name: kiali
        command:
        - "/opt/kiali/kiali"
        - "-config"
        - "/kiali-configuration/config.yaml"
        - "-v"
        - "4"
        env:
        - name: ACTIVE_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: SERVER_CREDENTIALS_USERNAME
          valueFrom:
            secretKeyRef:
              name: kiali
              key: username
        - name: SERVER_CREDENTIALS_PASSWORD
          valueFrom:
            secretKeyRef:
              name: kiali
              key: password
        volumeMounts:
        - name: kiali-configuration
          mountPath: "/kiali-configuration"
      volumes:
      - name: kiali-configuration
        configMap:
          name: kiali
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
rules:
- apiGroups: ["", "apps", "autoscaling"]
  resources:
  - configmaps
  - namespaces
  - nodes
  - pods
  - projects
  - services
  - endpoints
  - deployments
  - horizontalpodautoscalers
  verbs:
  - get
  - list
  - watch
- apiGroups: ["config.istio.io"]
  resources:
  - rules
  - circonuses
  - deniers
  - fluentds
  - kubernetesenvs
  - listcheckers
  - memquotas
  - opas
  - prometheuses
  - rbacs
  - servicecontrols
  - solarwindses
  - stackdrivers
  - statsds
  - stdios
  - apikeys
  - authorizations
  - checknothings
  - kuberneteses
  - listentries
  - logentries
  - metrics
  - quotas
  - reportnothings
  - servicecontrolreports
  - quotaspecs
  - quotaspecbindings
  verbs:
  - get
  - list
  - watch
- apiGroups: ["networking.istio.io"]
  resources:
  - virtualservices
  - destinationrules
  - serviceentries
  - gateways
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kiali
  labels:
    app: kiali
    version: v0.5.1-SNAPSHOT
roleRef:
  kind: ClusterRole
  name: kiali
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: kiali
  namespace: istio-system

部署完成后,我们把service的端口开放既可以访问到 web 页面;这时候需要先用我们配置的用户名与密码进行登录,登陆后可以看到如下页面:

Graph:

该页面是 graph 展示界面,功能与 serviceGraph 相近;

注:

目前(18-08-05) kiali 0.5-snapshot 对于 istio1.0 的 prometheus的数据还不是完全兼容,
graph数据不能展示,其他数据页面目测没有问题,作者正在努力进行兼容,兼容后我也会对文章进行修改;


Service:

service 页面可以查看所有服务,并能区别改服务是否是 istio 服务,同时可以查看服务详情并能在详情页下 istio 相关联的配置信息;可以说比我们在命令行操作查看配置直观和有效率多了;


Istio Config:

改页面展示所有 istio 相关的配置并可以查看 yaml 详情;


Distributed Tracing:

该界面默认需要我们将 istio gaeger 拥有 ExternalIP 才能正常工作,或者我们在 kiali 容器配置中配置了 JAEGER_URL; 这个页面是应该只是一个 iframe 页面引用了 gaeger 页面;


总结

总得来说 kiali 为我们提供了一个可以查看相关信息的聚合的地方,我觉得他大的方向也应该是这样子的,把istio本身提供的或者周边的一些细小功能进行汇总可视化,这样子也方便用户统一查看,同时它的 service 视图帮助我们把配置进行连接,对于我们查看相关的配置和排查问题提供了很多的便利性;


引用

Kialiwww.kiali.io
kiali/kialigithub.com图标Istio / 宣布 Istio 1.0istio.io

本文来自:知乎

感谢作者:知乎

查看原文:istio 可视化工具 kiali 部署体验

3782 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传