istio kiali 內部介紹


一、kiali 組件分析

使用如下命令查看 kiali pod 詳情:

kubectl edit pod -n istio-system $(kubectl get pods -n istio-system | grep -i kiali | awk '{print $1}')

 kiali pod 內只有一個容器,名稱為 kiali。該容器在啟動的過程中會運行容器內 kiali 進程,該進程會加載 /kiali-configuration/config.yaml 配置文件,該 config.yaml 文件定義了 kiali 進程運行時行為。pod 部分詳情如下:

spec:
  containers:
  - command:
    - /opt/kiali/kiali
    - -config
    - /kiali-configuration/config.yaml
    - -v
    - "3"

 

kiali pod 內 /kiali-configuration/config.yaml 配置文件是通過掛載 configmap 獲取到的,如下:

    volumeMounts:
    - mountPath: /kiali-configuration
      name: kiali-configuration

 

configmap 信息如下:

  volumes:
  - configMap:
      defaultMode: 420
      name: kiali
 name: kiali-configuration

 

可以通過語句查看 kiali configmap 內容:

kubectl edit configmap -n istio-system kiali

 

kiali configmap 部分內容如下:

apiVersion: v1
data:
  config.yaml: |
    auth:
      openid: {}
...
kind: ConfigMap
metadata:
  annotations:
...

 

由上面可知,configmap 最終會以 config.yaml 文件的形式掛載到 kiali pod 中的 /kiali-configuration 目錄下。

查看pod

[root@k8s-master ~]# kubectl get pods -n istio-system |grep kiali
kiali-667b888c56-8h7cp                  1/1     Running   1          3h26m

 

進入 kiali pod 查看

[root@k8s-master ~]# kubectl exec -it -n istio-system kiali-667b888c56-8h7cp /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl kubectl exec [POD] -- [COMMAND] instead.
[kiali@kiali-667b888c56-8h7cp kiali]$ ls /kiali-configuration/
config.yaml
[kiali@kiali-667b888c56-8h7cp kiali]$ 

 

config.yaml 文件

config.yaml 內容如下:

[kiali@kiali-667b888c56-8h7cp kiali]$ cat /kiali-configuration/config.yaml 
auth:
  openid: {}
  openshift:
    client_id_prefix: kiali
  strategy: anonymous
deployment:
  accessible_namespaces:
  - '**'
  additional_service_yaml: {}
  affinity:
    node: {}
    pod: {}
    pod_anti: {}
  custom_dashboards:
    excludes:
    - ""
    includes:
    - '*'
  image_name: quay.io/kiali/kiali
  image_pull_policy: Always
  image_pull_secrets: []
  image_version: v1.26
  ingress_enabled: false
  namespace: istio-system
  node_selector: {}
  override_ingress_yaml:
    metadata: {}
  pod_annotations:
    sidecar.istio.io/inject: "false"
  pod_labels: {}
  priority_class_name: ""
  replicas: 1
  resources: {}
  secret_name: kiali
  service_annotations: {}
  service_type: ""
  tolerations: []
  verbose_mode: "3"
  version_label: v1.26.0
  view_only_mode: false
external_services:
  custom_dashboards:
    enabled: true
identity:
  cert_file: ""
  private_key_file: ""
istio_namespace: istio-system
login_token:
  signing_key: CHANGEME
server:
  metrics_enabled: true
  metrics_port: 9090
  port: 20001
  web_root: /kiali
View Code

 

該配置文件定義了 kiali 行為,下面分別介紹如下:

首先聲明 istio 自身以及 istio 插件在 k8s 哪個命名空間下:

# istio 自身
istio_namespace: istio-system

 

其次介紹 kiali 鑒權方式:

auth:
  openid: {}
  openshift:
    client_id_prefix: kiali
  strategy: anonymous  # 通過匿名用戶登錄

 

再次介紹 kiali deployment 可以訪問的 k8s 命名空間:

deployment:
  accessible_namespaces:
  - '**'  # 沒有限制,可訪問任何命名空間

 

 接着介紹 kiali 對外服務的端口號和訪問路徑:

server:
  metrics_enabled: true
  metrics_port: 9090
  port: 20001
  web_root: /kiali

 

 

本文參考鏈接:

https://blog.51cto.com/14268033/2487237


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM