使用外部提供者通过网守进行突变时出错

问题描述 投票:0回答:1

我在 GKE 集群上使用 3.17.1 版的 gateway。我正在使用“分配”将图像容器更改为我想要的图像。我正在为此使用外部提供商。我的外部提供商是同一集群上的烧瓶部署。在此部署之前,我有一个 ClusterIP 类型的服务。我的提供商使用 HTTPS。我按照文档中提到的方式生成了 TLS 证书 https://open-policy-agent.github.io/gatekeeper/website/docs/externaldata#how-to-generate-a-self-signed-ca-and-a -keypair-for-the-external-data-provider 并将 Base64 编码的 CA 捆绑包添加到我的提供商声明中。 应用所有内容(我的分配和提供程序)后,尽管在提供程序的日志中我看到针对 Webhook 的 HTTP 调用,但突变不起作用。 我在网守控制器日志中看到的部分错误是:“”

failed to resolve external data placeholders: failed to send external data request to provider my-provider: failed to send external data request: Post "https://flask-app-service.default.svc.cluster.local/": context deadline exceeded"
“”其中“my-provider”是我的提供商的名称,“flask-app-service”是我的服务提供商的名称。 作为信息,我的分配突变应用于 Pod、部署和副本集:

apiVersion: mutations.gatekeeper.sh/v1beta1
kind: Assign
metadata:
  name: mutate-pod-images
spec:
 applyTo:
  - groups: [""]
    kinds: ["Pod"]
    versions: ["v1"]
  match:
    scope: Namespaced
  location: "spec.containers[name:*].image"
  parameters:
    assign:
     externalData:
       provider: my-provider
       dataSource: ValueAtLocation
---

apiVersion: mutations.gatekeeper.sh/v1beta1\
kind: Assign
metadata:
  name: mutate-deploy-images
spec:
  applyTo:
  - groups: ["apps"]
    kinds: ["Deployment"]
    versions: ["v1"]
  match:
    scope: Namespaced
  location: "spec.template.spec.containers[name:*].image"
  parameters:
    assign:
      externalData:
        provider: my-provider
        dataSource: ValueAtLocation

---

    apiVersion: mutations.gatekeeper.sh/v1beta1
    kind: Assign
    metadata:
      name: mutate-rs-images
    spec:
      applyTo:
      - groups: ["apps"]
        kinds: ["ReplicaSet"]
        versions: ["v1"]
      match:
        scope: Namespaced
      location: "spec.template.spec.containers[name:*].image"
      parameters:
        assign:
          externalData:
            provider: my-provider
            dataSource: ValueAtLocation

我不明白为什么突变不起作用,也不明白为什么网守控制器说“无法解析外部数据请求”,尽管在我的日志中我提出了请求。

我的提供商收到的请求是这样的:

{'apiVersion': 'externaldata.gatekeeper.sh/v1beta1', 'kind': 'ProviderRequest', 'request': {'keys': ['<my deployment image>']}}

我的提供商发回的响应是这样的:

{'apiVersion': 'externaldata.gatekeeper.sh/v1beta1', 'kind': 'ProviderResponse', 'response': {'idempotent': True, 'items': [{'key': '<my deployment image>', 'value': '<my desired image>'}]}}

有人知道出了什么问题吗?提前非常感谢您。

google-kubernetes-engine mutation opa-gatekeeper
1个回答
0
投票

我想我发现了问题。万一这对某人有帮助。我必须更改突变 Webhook 的超时。毕竟,分配类型是一个突变 Webhook。它的超时配置为 1 秒,如果我们的提供商需要时间的话,这个时间就很短了。

© www.soinside.com 2019 - 2024. All rights reserved.