GKE上的Istio处于自动驾驶模式



嗨,我正在查看GKE自动驾驶模式,注意到在集群配置中istio被禁用,我无法更改它。此外,通过istioctl安装的安装也失败,并出现以下错误

error   installer       failed to update resource with server-side apply for obj MutatingWebhookConfiguration//istio-sidecar-injector: mutatingwebhookconfigurations.admissionregistration.k8s.io "istio-sidecar-injector" is forbidden: User "something@example" cannot patch resource "mutatingwebhookconfigurations" in API group "admissionregistration.k8s.io" at the cluster scope: GKEAutopilot authz: cluster scoped resource "mutatingwebhookconfigurations/" is managed and access is denied

我是正确的还是不可能在GKE自动驾驶模式下运行istio?

TL;DR

目前无法在GKE自动驾驶模式下运行istio。

结论

如果您正在使用Autopilot,则不需要管理节点。您不必担心诸如更新、扩展或更改操作系统之类的操作。然而,自动驾驶仪有许多局限性。

即使您尝试使用命令istioctl install安装istio,也不会安装istio。然后您将看到以下消息:

这将把Istio配置文件安装到集群中。继续(y/N(y

✔已安装Istio内核
✔Istiod已安装
✘入口网关遇到错误:等待资源失败:资源在5毫秒后未就绪:等待条件超时部署/istio-system/istio-ingressgateway

  • 修剪已删除的资源2021-05-07T08:24:40.974253Z警告安装程序正在检索资源以修剪类型admissionregistration.k8s.io/v1beta1,Kind=MutatingWebhookConfiguration:禁止使用MutatingWebhookConfiguration.admissionregistration.k8s.io:用户"something@example"无法列出资源";改变网络连接配置";在API组中;admissionregistration.k8s.io";在集群作用域:GKEAutopilot authz:集群作用域资源";改变网络连接配置/";被管理,但未找到拒绝访问错误:未能安装清单:操作过程中出现错误

此命令失败,bacuse用于sidecar注入,安装程序试图创建一个名为istio-sidecar injector的MutatingWebhookConfiguration。这里提到了这个限制。

有关更多信息,您也可以阅读本页。

根据文档,不可能创建变化的准入webhook

您不能为自动驾驶集群创建自定义的可变准入网络挂钩

由于Istio使用可变的webhook来注入其sidecar,因此它可能不起作用,而且它也与您收到的错误一致。

根据文件,GKE 1.21:应该可以实现这一点

在GKE 1.21.3-GKE.900及更高版本中,您可以创建验证和不断变化的动态准入webhook。但是,Autopilot会修改admission-webhooks对象添加一个命名空间选择器,该选择器排除托管命名空间(目前为kube系统(中的资源拦截。此外,指定以下一个或多个的webhook规则中的资源(及其任何子资源(将被拒绝:

  • 组:"资源:节点
  • 组:certificates.k8s.io资源:证书签名请求
  • 组:authentication.k8s.io资源:tokenreviews

https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview#webhooks_limitations

最新更新