本文不讲源码,来说说 istio sidecar 配置,从而灵活的控制 sidecar 注入、资源修改等场景。
1
| kubectl get cm -n istio-system istio-sidecar-injector -o yaml
|
先来预览一下 istio-sidecar-injector
,主要包含 config
和 values

config
可以看到配置项有 默认模板 defaultTemplates
、注入策略 policy
、注入选择器 alwaysInjectSelector
、 永不注入选择器 neverInjectSelector
、injectedAnnotations
和 模板内容 templates
等
关于注入策略(policy)、注入选择器(alwaysInjectSelector、neverInjectSelector)和注入注解(injectedAnnotations)可以查看 Sidecar 自动注入 本文主要来了解 Sidecar
注入的模板,方便后续需要针对Sidecar
的部署调整
templates - sidecar
istio 默认提供了4种不同的注入模板 sidecar、gateway、grpc-simple 和 grpc-agent,基本上都是大同小异。接下来主要看看sidecar这个模板配置了哪些。
通过 Annotations
灵活控制不同部署的资源限制
1
2
3
4
5
6
7
8
9
| template:
metadata:
annotations:
...
sidecar.istio.io/proxyCPU: 50m ## proxy CPU request
sidecar.istio.io/proxyCPULimit: 2000m ## proxy CPU limit
sidecar.istio.io/proxyMemory: 500Mi ## proxy memory request
sidecar.istio.io/proxyMemoryLimit: 2Gi ## proxy memory limit
...
|
修改部署的proxy镜像
1
2
3
4
5
6
| template:
metadata:
annotations:
...
sidecar.istio.io/proxyImage: aeraki/meta-protocol-proxy:1.1.2
...
|
修改部署的proxy 初始化配置
1
2
3
4
5
6
7
|
template:
metadata:
annotations:
...
sidecar.istio.io/bootstrapOverride: aeraki-bootstrap-config
...
|
以下操作全局生效
修改环境变量
kubectl edit cm -n istio-system istio-sidecar-injector
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| env:
{{- if eq (env "PILOT_ENABLE_INBOUND_PASSTHROUGH" "true") "false" }}
- name: REWRITE_PROBE_LEGACY_LOCALHOST_DESTINATION
value: "true"
{{- end }}
- name: JWT_POLICY
value: {{ .Values.global.jwtPolicy }}
- name: PILOT_CERT_PROVIDER
value: {{ .Values.global.pilotCertProvider }}
- name: CA_ADDR
{{- if .Values.global.caAddress }}
value: {{ .Values.global.caAddress }}
{{- else }}
value: istiod{{- if not (eq .Values.revision "") }}-{{ .Values.revision }}{{- end }}.{{ .Values.global.istioNamespace }}.svc:15012
{{- end }}
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
|