一、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
该配置文件定义了 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
本文参考链接: