距离 Istio 1.5 版本发布还有 天。

Helm 安装参数变动表

下表显示了在 Istio 1.0 版本到 Istio 1.1 版本之间使用 Helm 自定义安装 Istio 时参数变更,主要包含了三种类型的变更:

  • 安装参数在 1.0 版本之前已经存在,但是值在新发布的 1.1 版本中进行了修改。
  • 1.1 版本新加的参数。
  • 1.1 版本删除的参数。

修改配置选项

修改 servicegraph 键值对

旧默认值新默认值旧描述新描述
servicegraph.ingress.hostsservicegraph.localservicegraph.local用来创建一个 Ingress record。

修改 tracing 键值对

旧默认值新默认值旧描述新描述
tracing.jaeger.tag1.51.9

修改 global 键值对

旧默认值新默认值旧描述新描述
global.hubgcr.io/istio-releasegcr.io/istio-releaseIstio 镜像的默认仓库。已发布版本的 Istio 镜像已经推送到了 docker hub 中的 istio 项目下,白天会从 gcr.io 进行构建,夜晚会从 docker.io/istionightly 上进行构建。
global.tagrelease-1.0-latest-dailyrelease-1.1-latest-dailyIstio 镜像的默认标签。
global.proxy.resources.requests.cpu10m100m
global.proxy.accessLogFile"/dev/stdout"""
global.proxy.enableCoreDumpfalsefalse如果设置,新注入的 sidecars 将启用 core dumps。
global.proxy.autoInjectenabledenabled可以控制 sidecar 的注入策略。
global.proxy.envoyStatsd.enabledtruefalse如果设置为 true,则还须提供主机地址和端口。Istio不再提供 statsd 收集器。
global.proxy.envoyStatsd.hostistio-statsd-prom-bridge``例如: statsd-svc.istio-system
global.proxy.envoyStatsd.port9125``例如: 9125
global.proxy_init.imageproxy_initproxy_initproxy_init 容器的基本名称,用于配置 iptables。
global.controlPlaneSecurityEnabledfalsefalse启用 controlPlaneMtls。在传播 secret 时,将导致 Pod 的延迟启动,不建议用于测试。
global.disablePolicyChecksfalsetruedisablePolicyChecks 禁用 mixer 策略检查。如果 mixer.policy.enabled==true 则 disablePolicyChecks 已生效。将在 istio ConfigMap 设置相同名称的值 - pilot 需要重新启动才能生效。
global.enableTracingtruetrueEnableTracing 在 istio ConfigMap 中具有相同名称的值,需要重新启动 pilot 才能生效。
global.mtls.enabledfalsefalse服务到服务间的 mtls 的默认设置。可以使用目标规则或服务注释来显式设置。
global.oneNamespacefalsefalse是否限制控制器管理的应用程序的名称空间;如果未设置,则控制器将监控所有名称空间。
global.configValidationtruetrue是否执行服务器端配置验证。

修改 gateways 键值对

旧默认值新默认值旧描述新描述
gateways.istio-ingressgateway.typeLoadBalancer #change to NodePort, ClusterIP or LoadBalancer if need beLoadBalancer如果需要,请更改为节点端口,集群 IP,或者负载地址。
gateways.istio-egressgateway.enabledtruefalse
gateways.istio-egressgateway.typeClusterIP #change to NodePort or LoadBalancer if need beClusterIP如果需要,请更改为节点端口或者负载地址。

修改 certmanager 键值对

旧默认值新默认值旧描述新描述
certmanager.tagv0.3.1v0.6.2

修改 kiali 键值对

旧默认值新默认值旧描述新描述
kiali.tagistio-release-1.0v0.14

修改 security 键值对

旧默认值新默认值旧描述新描述
security.selfSignedtrue # indicate if self-signed CA is used.true是否使用自签名 CA 证书。

修改 pilot 键值对

旧默认值新默认值旧描述新描述
pilot.autoscaleMax15
pilot.traceSampling100.01.0

新的配置选项

新增 istio_cni 键/值对

默认值描述
istio_cni.enabledfalse

新增 servicegraph 键/值对

默认值描述
servicegraph.nodeSelector{}

新增 tracing 键/值对

默认值描述
tracing.nodeSelector{}
tracing.zipkin.hubdocker.io/openzipkin
tracing.zipkin.tag2
tracing.zipkin.probeStartupDelay200
tracing.zipkin.queryPort9411
tracing.zipkin.resources.limits.cpu300m
tracing.zipkin.resources.limits.memory900Mi
tracing.zipkin.resources.requests.cpu150m
tracing.zipkin.resources.requests.memory900Mi
tracing.zipkin.javaOptsHeap700
tracing.zipkin.maxSpans500000
tracing.zipkin.node.cpus2

新增 sidecarInjectorWebhook 键/值对

默认值描述
sidecarInjectorWebhook.nodeSelector{}
sidecarInjectorWebhook.rewriteAppHTTPProbefalse如果设置为 true,则 webhook 或 istioctl injector 将重写 PodSpec 进行 livenesshealth 检查,以将请求重定向到 Sidecar,即使启用了 mTLS,也可以进行活动检查。

新增 global 键/值对

默认值描述
global.monitoringPort15014监控被 mixer、 pilot 和 galley 所使用的端口。
global.k8sIngress.enabledfalse
global.k8sIngress.gatewayNameingressgateway用于 k8s 入口资源的网关,默认情况下,它使用的是 istio:ingressgateway,将 gateways.enabled 和 gateways.istio-ingressgateway.enabled 标志设置为 true 即可安装。
global.k8sIngress.enableHttpsfalseenableHttps 将在入口处添加 443 端口,它要求将证书安装在预期的 secret 中,启用不带证书的此选项将导致 LDS 拒绝,并且入口将不起作用。
global.proxy.clusterDomain"cluster.local"集群域,默认值为 cluster.local。
global.proxy.resources.requests.memory128Mi
global.proxy.resources.limits.cpu2000m
global.proxy.resources.limits.memory128Mi
global.proxy.concurrency2控制代理工作线程的数量,如果设置为 0(默认值),则为每个 CPU 线程/核心。
global.proxy.accessLogFormat""配置 sidecar 访问日志中显示方式和字段的显示方式,设置空字符串将导致成为默认的日志格式。
global.proxy.accessLogEncodingTEXT将 Sidecar 的访问日志配置为 JSON 或 TEXT 格式。
global.proxy.dnsRefreshRate5s为类型为 STRICT_DNS 的 Envoy 集群配置 DNS 的刷新频率为 5s,是 Envoy 使用的默认刷新频率。
global.proxy.privilegedfalse如果设置为 true,则 istio-proxy 容器将具有特权 securityContext。
global.proxy.statusPort15020Pilot 代理运行状况检查的默认端口,设置为 0 将禁用运行状况检查。
global.proxy.readinessInitialDelaySeconds1准备就绪探测的初始延迟(以秒为单位)。
global.proxy.readinessPeriodSeconds2准备就绪探测之间的时间间隔。
global.proxy.readinessFailureThreshold30指示准备就绪失败之前,连续失败的探测数。
global.proxy.kubevirtInterfaces""pod 的内部接口。
global.proxy.envoyMetricsService.enabledfalse
global.proxy.envoyMetricsService.host``例如:metrics-service.istio-system
global.proxy.envoyMetricsService.port``例如:15000
global.proxy.tracer"zipkin"指定要使用的跟踪器,lightstep 和 zipkin 其中之一。
global.policyCheckFailOpenfalsepolicyCheckFailOpen 允许在无法访问 mixer 策略的情况下进行通信,默认值为 false,这意味着在客户端无法连接到 Mixer 时拒绝通信。
global.tracer.lightstep.address""例如:lightstep-satellite:443
global.tracer.lightstep.accessToken""例如:abcdefg1234567
global.tracer.lightstep.securetrue例如:true\|false
global.tracer.lightstep.cacertPath""例如:/etc/lightstep/cacert.pem
global.tracer.zipkin.address""
global.defaultNodeSelector{}默认 node selector 将应用于所有部署,以便可以限制所有特定的 Pod 节点,每个组件都可以通过在下面的相关部分中添加 node selector block 并设置所需的值来覆盖这些默认值。
global.meshExpansion.enabledfalse
global.meshExpansion.useILBfalse如果设置为 true,则将在内部网关上暴露 pilot 和 citadel mtls 以及 plain text pilot portswill。
global.multiCluster.enabledfalse当每个集群中的 Pod 无法直接相互通信时,设置为 true 可通过它们各自的 ingress gateway 服务连接两个 kubernetes 集群,所有群集都应使用 Istio mTLS,并且必须具有共享的根证书才能使该模型正常工作。
global.defaultPodDisruptionBudget.enabledtrue
global.useMCPtrue使用网格控制协议(MCP)来配置 Mixer 和 Pilot。需要 galley (--设置 galley.enabled=true)。
global.trustDomain""
global.outboundTrafficPolicy.modeALLOW_ANY
global.sds.enabledfalse是否启用 SDS。如果设置为 true,则将通过 SecretDiscoveryService 分发用于 sidecars 的 mTLS 证书,而不是使用 K8S secret 来挂载证书。
global.sds.udsPath""
global.sds.useTrustworthyJwtfalse
global.sds.useNormalJwtfalse
global.meshNetworks{}
global.enableHelmTestfalse指定是否启 helm 测试,默认情况下,此字段默认设置为 false,因此 'helm template ...' 将在生成模板时忽略 helm 测试的 yaml 文件。

新增 mixer 键/值对

默认值描述
mixer.env.GODEBUGgctrace=1
mixer.env.GOMAXPROCS"6"max procs should be ceil(cpu limit + 1)
mixer.policy.enabledfalse如果启用了策略,则 global.disablePolicyChecks 将生效。
mixer.policy.replicaCount1
mixer.policy.autoscaleEnabledtrue
mixer.policy.autoscaleMin1
mixer.policy.autoscaleMax5
mixer.policy.cpu.targetAverageUtilization80
mixer.telemetry.enabledtrue
mixer.telemetry.replicaCount1
mixer.telemetry.autoscaleEnabledtrue
mixer.telemetry.autoscaleMin1
mixer.telemetry.autoscaleMax5
mixer.telemetry.cpu.targetAverageUtilization80
mixer.telemetry.sessionAffinityEnabledfalse
mixer.telemetry.loadshedding.modeenforce禁用,仅用于登录或强制执行。
mixer.telemetry.loadshedding.latencyThreshold100ms基于 100ms 的测量,p50 转换为 p99 不到 1s,对于本质上是异步的遥测来说是没问题的。
mixer.telemetry.resources.requests.cpu1000m
mixer.telemetry.resources.requests.memory1G
mixer.telemetry.resources.limits.cpu4800m最好使用适度的 cpu 进行分配使 mixer 水平缩放。我们通过实验发现这些值效果很好。
mixer.telemetry.resources.limits.memory4G
mixer.podAnnotations{}
mixer.nodeSelector{}
mixer.adapters.kubernetesenv.enabledtrue
mixer.adapters.stdio.enabledfalse
mixer.adapters.stdio.outputAsJsontrue
mixer.adapters.prometheus.enabledtrue
mixer.adapters.prometheus.metricsExpiryDuration10m
mixer.adapters.useAdapterCRDstrue如果设置为 false, 会将 useAdapterCRDs mixer 的启动参数设置为 false。

新增 grafana 键/值对

默认值描述
grafana.image.repositorygrafana/grafana
grafana.image.tag5.4.0
grafana.ingress.enabledfalse
grafana.ingress.hostsgrafana.local用来创建一个 Ingress record。
grafana.persistfalse
grafana.storageClassName""
grafana.accessModeReadWriteMany
grafana.security.secretNamegrafana
grafana.security.usernameKeyusername
grafana.security.passphraseKeypassphrase
grafana.nodeSelector{}
grafana.contextPath/grafana
grafana.datasources.datasources.apiVersion1
grafana.datasources.datasources.datasources.typeprometheus
grafana.datasources.datasources.datasources.orgId1
grafana.datasources.datasources.datasources.urlhttp://prometheus:9090
grafana.datasources.datasources.datasources.accessproxy
grafana.datasources.datasources.datasources.isDefaulttrue
grafana.datasources.datasources.datasources.jsonData.timeInterval5s
grafana.datasources.datasources.datasources.editabletrue
grafana.dashboardProviders.dashboardproviders.apiVersion1
grafana.dashboardProviders.dashboardproviders.providers.orgId1
grafana.dashboardProviders.dashboardproviders.providers.folder'istio'
grafana.dashboardProviders.dashboardproviders.providers.typefile
grafana.dashboardProviders.dashboardproviders.providers.disableDeletionfalse
grafana.dashboardProviders.dashboardproviders.providers.options.path/var/lib/grafana/dashboards/istio

新增 prometheus 键/值对

默认值描述
prometheus.retention6h
prometheus.nodeSelector{}
prometheus.scrapeInterval15s控制 prometheus 在 scraping 时的频率。
prometheus.contextPath/prometheus
prometheus.ingress.enabledfalse
prometheus.ingress.hostsprometheus.local用来创建一个 Ingress record。
prometheus.security.enabledtrue

新增 gateways 键/值对

默认值描述
gateways.istio-ingressgateway.sds.enabledfalse如果设置为 true,则入口网关从 SDS 服务器获取凭据以处理 TLS 连接。
gateways.istio-ingressgateway.sds.imagenode-agent-k8s监视 kubernetes 的 secret 并向入口网关提供凭据的 SDS 服务器,该服务器与入口网关服务器在同一容器中运行。
gateways.istio-ingressgateway.autoscaleEnabledtrue
gateways.istio-ingressgateway.cpu.targetAverageUtilization80
gateways.istio-ingressgateway.loadBalancerSourceRanges[]
gateways.istio-ingressgateway.externalIPs[]
gateways.istio-ingressgateway.podAnnotations{}
gateways.istio-ingressgateway.ports.targetPort15029
gateways.istio-ingressgateway.ports.namehttps-kiali
gateways.istio-ingressgateway.ports.namehttps-prometheus
gateways.istio-ingressgateway.ports.namehttps-grafana
gateways.istio-ingressgateway.ports.targetPort15032
gateways.istio-ingressgateway.ports.namehttps-tracing
gateways.istio-ingressgateway.ports.targetPort15443
gateways.istio-ingressgateway.ports.nametls
gateways.istio-ingressgateway.ports.targetPort15020
gateways.istio-ingressgateway.ports.namestatus-port
gateways.istio-ingressgateway.meshExpansionPorts.targetPort15011
gateways.istio-ingressgateway.meshExpansionPorts.nametcp-pilot-grpc-tls
gateways.istio-ingressgateway.meshExpansionPorts.targetPort15004
gateways.istio-ingressgateway.meshExpansionPorts.nametcp-mixer-grpc-tls
gateways.istio-ingressgateway.meshExpansionPorts.targetPort8060
gateways.istio-ingressgateway.meshExpansionPorts.nametcp-citadel-grpc-tls
gateways.istio-ingressgateway.meshExpansionPorts.targetPort853
gateways.istio-ingressgateway.meshExpansionPorts.nametcp-dns-tls
gateways.istio-ingressgateway.env.ISTIO_META_ROUTER_MODE"sni-dnat"具有此模式的网关可确保 pilot 为内部服务生成集群中的 additionalset,但无需 Istio mTLS,即可启用跨群集路由。
gateways.istio-ingressgateway.nodeSelector{}
gateways.istio-egressgateway.autoscaleEnabledtrue
gateways.istio-egressgateway.cpu.targetAverageUtilization80
gateways.istio-egressgateway.podAnnotations{}
gateways.istio-egressgateway.ports.targetPort15443
gateways.istio-egressgateway.ports.nametls
gateways.istio-egressgateway.env.ISTIO_META_ROUTER_MODE"sni-dnat"
gateways.istio-egressgateway.nodeSelector{}
gateways.istio-ilbgateway.autoscaleEnabledtrue
gateways.istio-ilbgateway.cpu.targetAverageUtilization80
gateways.istio-ilbgateway.podAnnotations{}
gateways.istio-ilbgateway.nodeSelector{}

新增 kiali 键/值对

默认值描述
kiali.contextPath/kiali
kiali.nodeSelector{}
kiali.ingress.hostskiali.local用来创建一个 Ingress record。
kiali.dashboard.secretNamekiali
kiali.dashboard.usernameKeyusername
kiali.dashboard.passphraseKeypassphrase
kiali.prometheusAddrhttp://prometheus:9090
kiali.createDemoSecretfalse设置为 true 时,将使用默认的用户名和密码创建一个 secret, 对一些 demo 有用。

新增 istiocoredns 键/值对

默认值描述
istiocoredns.enabledfalse
istiocoredns.replicaCount1
istiocoredns.coreDNSImagecoredns/coredns:1.1.2
istiocoredns.coreDNSPluginImageistio/coredns-plugin:0.2-istio-1.1
istiocoredns.nodeSelector{}

新增 security 键/值对

默认值描述
security.enabledtrue
security.createMeshPolicytrue
security.nodeSelector{}

新增 nodeagent 键/值对

默认值描述
nodeagent.enabledfalse
nodeagent.imagenode-agent-k8s
nodeagent.env.CA_PROVIDER""provider 的名称。
nodeagent.env.CA_ADDR""CA 地址。
nodeagent.env.Plugins""鉴别 provider 插件的名称。
nodeagent.nodeSelector{}

新增 pilot 键/值对

默认值描述
pilot.autoscaleEnabledtrue
pilot.env.PILOT_PUSH_THROTTLE100
pilot.env.GODEBUGgctrace=1
pilot.cpu.targetAverageUtilization80
pilot.nodeSelector{}
pilot.keepaliveMaxServerConnectionAge30m用于限制 sidecar 可以被 pilot 连接多久,平衡了 pilot 实例的负载,以损失系统资源为代价。

移除的配置选项

移除 ingress 键/值对

默认值描述
ingress.service.ports.nodePort32000
ingress.service.selector.istioingress
ingress.autoscaleMin1
ingress.service.loadBalancerIP""
ingress.enabledfalse
ingress.service.annotations{}
ingress.service.ports.namehttp
ingress.service.ports.namehttps
ingress.autoscaleMax5
ingress.replicaCount1
ingress.service.typeLoadBalancer #change to NodePort, ClusterIP or LoadBalancer if need be

移除 servicegraph 键/值对

默认值描述
servicegraphservicegraph.local
servicegraph.ingressservicegraph.local
servicegraph.service.internalPort8088

移除 telemetry-gateway 键/值对

默认值描述
telemetry-gateway.prometheusEnabledfalse
telemetry-gateway.gatewayNameingressgateway
telemetry-gateway.grafanaEnabledfalse

移除 global 键/值对

默认值描述
global.hyperkube.tagv1.7.6_coreos.0
global.k8sIngressHttpsfalse
global.crdstrue
global.hyperkube.hubquay.io/coreos
global.meshExpansionfalse
global.k8sIngressSelectoringress
global.meshExpansionILBfalse

移除 mixer 键/值对

默认值描述
mixer.autoscaleMin1
mixer.istio-policy.cpu.targetAverageUtilization80
mixer.autoscaleMax5
mixer.istio-telemetry.autoscaleMin1
mixer.prometheusStatsdExporter.tagv0.6.0
mixer.istio-telemetry.autoscaleMax5
mixer.istio-telemetry.cpu.targetAverageUtilization80
mixer.istio-policy.autoscaleEnabledtrue
mixer.istio-telemetry.autoscaleEnabledtrue
mixer.replicaCount1
mixer.prometheusStatsdExporter.hubdocker.io/prom
mixer.istio-policy.autoscaleMin1
mixer.istio-policy.autoscaleMax5

移除 grafana 键/值对

默认值描述
grafana.imagegrafana
grafana.service.internalPort3000
grafana.security.adminPasswordadmin
grafana.security.adminUseradmin

移除 gateways 键/值对

默认值描述
gateways.istio-ilbgateway.replicaCount1
gateways.istio-egressgateway.replicaCount1
gateways.istio-ingressgateway.replicaCount1
gateways.istio-ingressgateway.ports.nametcp-pilot-grpc-tls
gateways.istio-ingressgateway.ports.nametcp-citadel-grpc-tls
gateways.istio-ingressgateway.ports.namehttp2-prometheus
gateways.istio-ingressgateway.ports.namehttp2-grafana
gateways.istio-ingressgateway.ports.targetPort15011
gateways.istio-ingressgateway.ports.targetPort8060

移除 tracing 键/值对

默认值描述
tracing.service.internalPort9411
tracing.replicaCount1
tracing.jaeger.ingressjaeger.local
tracing.ingresstracing.local
tracing.jaegerjaeger.local
tracingjaeger.local tracing.local
tracing.jaeger.ingress.hostsjaeger.local
tracing.jaeger.ingress.enabledfalse
tracing.ingress.hoststracing.local
tracing.jaeger.ui.port16686

移除 kiali 键/值对

默认值描述
kiali.dashboard.usernameadmin
kiali.dashboard.passphraseadmin

移除 pilot 键/值对

默认值描述
pilot.replicaCount1
这些信息有用吗?
Do you have any suggestions for improvement?

Thanks for your feedback!