istio 的配置参数

istio 的配置参数非常非常多!

部署时调整参数的方法

helm 部署时,通过 --set 设置,如下:

$ kubectl create namespace istio-system
$ helm template install/kubernetes/helm/istio-init \
  --name istio-init \
  --namespace istio-system \
  --set gateways.istio-ingressgateway.type=NodePort \
  | kubectl apply -f -

istioctl 查看要使用的部署文件和配置参数:

$ ./istioctl manifest generate
$ ./istioctl profile dump demo    # 查看 demo 模式的配置

istioctl 部署时修改参数的方法:

$ istioctl manifest apply --set values.global.mtls.enabled=true \
             --set values.global.controlPlaneSecurityEnabled=true

istioctl 支持多种 profile,在部署时用 profile 指定:

# istioctl 支持的 profile
$ ./istioctl profile list
Istio configuration profiles:
    default
    demo
    minimal
    remote
    sds

# istioctl 部署时指定 demo 模式
$ ./istioctl manifest apply --set profile=demo

istioctl 的更多用法见 istioctl usage

运行中调整参数的方法

要在运行中调整运行参数,先要知道 istio 的配置参数存放在哪里。istio 的文档中没有明确说明,通过上下文以及相关操作命令判断,istio 的配置参数都在 configmap 中:

$ kubectl -n istio-system get configmap
NAME                                                                 DATA   AGE
istio                                                                2      3d23h
istio-crd-10                                                         1      3d23h
istio-crd-11                                                         1      3d23h
istio-crd-14                                                         1      3d23h
istio-galley-configuration                                           1      3d23h
istio-grafana                                                        2      3d23h
istio-grafana-configuration-dashboards-citadel-dashboard             1      3d23h
istio-grafana-configuration-dashboards-galley-dashboard              1      3d23h
istio-grafana-configuration-dashboards-istio-mesh-dashboard          1      3d23h
istio-grafana-configuration-dashboards-istio-performance-dashboard   1      3d23h
istio-grafana-configuration-dashboards-istio-service-dashboard       1      3d23h
istio-grafana-configuration-dashboards-istio-workload-dashboard      1      3d23h
istio-grafana-configuration-dashboards-mixer-dashboard               1      3d23h
istio-grafana-configuration-dashboards-pilot-dashboard               1      3d23h
istio-grafana-custom-resources                                       2      3d23h
istio-security                                                       1      3d23h
istio-security-custom-resources                                      2      3d23h
istio-sidecar-injector                                               2      3d23h
kiali                                                                1      3d23h
prometheus                                                           1      3d23h

istioctl 命令可以操作 configmap,例如 istio enabling-policy 中的操作:

# 查看当前配置项
$ kubectl -n istio-system get cm istio -o jsonpath="{@.data.mesh}" | grep disablePolicyChecks
disablePolicyChecks: true

# 修改配置项
$ istioctl manifest apply --set values.global.disablePolicyChecks=false
configmap "istio" replaced

# 查看修改后的配置项
$ kubectl -n istio-system get cm istio -o jsonpath="{@.data.mesh}" | grep disablePolicyChecks
disablePolicyChecks: false

配置参数的含义

这个让人头大,istio 的组件多、配置参数多!

还好 configmap 中有注释,除了逐个研究,没有其它方法:

istio 的 configmap

参考

  1. 李佶澳的博客