深入Istio系列-Sidecar配置模板

本文不讲源码,来说说 istio sidecar 配置,从而灵活的控制 sidecar 注入、资源修改等场景。

1
kubectl get cm -n istio-system istio-sidecar-injector -o yaml

先来预览一下 istio-sidecar-injector,主要包含 config 和 values 20230224165755

config

可以看到配置项有 默认模板 defaultTemplates、注入策略 policy、注入选择器 alwaysInjectSelector、 永不注入选择器 neverInjectSelectorinjectedAnnotations 和 模板内容 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
0%