部署入口网关时,
injectionTemplate: gateway
是什么意思?
这里提到:https://istio.io/latest/docs/setup/additional-setup/gateway/#deploying-a-gateway
values:
gateways:
istio-ingressgateway:
# Enable gateway injection
injectionTemplate: gateway
另外,sidecar 和 gateway 模板有什么区别?
引用Istio官方文档: https://istio.io/v1.12/docs/setup/additional-setup/sidecar-injection/#custom-templates-experimental
“默认情况下,Pod 将使用自动创建的 sidecar 注入模板。这可以通过
inject.istio.io/templates
注解覆盖。例如,要应用默认模板和我们的自定义,您可以设置 inject.istio.io/templates=sidecar,custom
。除了 sidecar 之外,默认情况下还提供了一个 gateway
模板来支持将代理注入到网关部署中。”
看起来
gateway
注入模板是一个“自定义模板”,专门配置用于将sidecar注入网关部署中。
较旧的入口和出口部署(v1.11.0 及更早版本)默认情况下不使用 sidecar 注入(
injectionTemplate
:“”),但似乎最新的入口网关部署正在使用 gateway
模板注入 sidecar默认:https://artifacthub.io/packages/helm/istio-official/gateway
Istio 建议为网关部署启用自动注入。 来自 https://istio.io/v1.12/docs/setup/additional-setup/gateway/#deploying-a-gateway:
“建议对网关部署使用自动注入,因为它使开发人员可以完全控制网关部署,同时还简化了操作。当有新的升级可用或配置发生更改时,只需重新启动网关 Pod 即可更新它们。这使得操作网关部署的体验与操作 sidecar 相同。”
唯一的问题是,我还没有使用
gateway
模板来工作。我的 ingressgateway pod 从未启动,并且我不断在部署日志中收到以下错误:
- type: ReplicaFailure
status: 'True'
lastUpdateTime: '2022-03-17T12:19:55Z'
lastTransitionTime: '2022-03-17T12:19:55Z'
reason: FailedCreate
message: >-
admission webhook "namespace.sidecar-injector.istio.io" denied the
request: failed to run injection template: could not parse configuration
values: json: cannot unmarshal number into Go value of type string
看起来这可能是
gateway
注入模板配置方式的上游问题。我也不知道在哪里可以获得关于默认 sidecar
模板和 gateway
模板之间的区别的更详细答案。
我默认使用较旧的入口部署,没有 sidecar 注入,直到事情变得更清楚为止。
您是否知道在使用 Istio 的 Helm Chart 安装时如何实际创建名为 custom 的自定义模板? Istio 文档中的示例仅展示了如何使用 IstioOperator CRD 来执行此操作。