部署/加载 Nginx VirtaulServer 自定义资源并应用于 AWS EKS 时出现问题

Issue with deploying/loading a Nginx VirtaulServer Custom Resource and applying to the AWS EKS

提问人:Gene Smith 提问时间:10/2/2023 最后编辑:Gene Smith 更新时间:10/2/2023 访问量:45

问:

我的所有资源,包括自定义资源定义 (CRD) 都是 YAML。

我在部署使用自定义资源定义 (CRD) 的名为“Nginx VirtualServer”(基本上是 Nginx 自定义入口资源)的 Kubernetes 资源时遇到了问题。我将 VirtualServer CRD 本身部署到 EKS 没有问题,但是当我尝试部署使用 CRD 的资源时,出现此错误:

java.io.IOException: Unknown apiVersionKind k8s.nginx.org/v1/VirtualServer is it registered?
                at io.kubernetes.client.util.Yaml.modelMapper(Yaml.java:555)
                at io.kubernetes.client.util.Yaml.loadAll(Yaml.java:179)
                at io.kubernetes.client.util.Yaml.loadAll(Yaml.java:145)

这似乎是由于 snakeYaml 无法找到要映射到的正确自定义资源模型。 我正在使用 Java Kubernetes 客户端 (https://github.com/kubernetes-client/java) 进行到 EKS 的部署。

当我使用 kubernetes-cli 应用 yaml 文件时,它在部署时没有问题,因此问题仅在使用 java kubernetes 客户端时出现。

有谁知道我在这里错过了什么?在加载 VirtualServer 资源之前,我正在使用 snakeYaml 加载 CRD,但这并不能解决问题。

下面是我的 YAML 的一个示例,它使用了 CRD:

# Ingress resources are bound to specific ingress controllers using an identifier
# Ingress Controller Identifier: nginx-firstone
kind: VirtualServer
apiVersion: k8s.nginx.org/v1
metadata: 
  name: nginx-firstone-dmz-vs
  namespace: dmz
spec: 
  host: some-host-name
  ingressClassName: nginx-firstone
  tls: 
    secret: firstone-secret
    redirect: 
      enable: true
      code: 301
  upstreams: 
  - name: psp-dmz-webinterfaceclient-service-80-us
    service: psp-dmz-webinterfaceclient-service
    port: 80
    connect-timeout: "60"
    send-timeout: "60"
    read-timeout: "60"
    keepalive: 75
  - name: psp-dmz-webinterfaceclient-service-85-us
    service: psp-dmz-webinterfaceclient-service
    port: 85
    connect-timeout: "60"
    send-timeout: "60"
    read-timeout: "60"
    keepalive: 75
  routes: 
  - path: /merchantportal
    action: 
      proxy: 
        upstream: psp-dmz-webinterfaceclient-service-80-us
        requestHeaders: 
            pass: true
        rewritePath: /merchantportal
    errorPages: 
      - codes: [404]
        return: 
          code: 200
          body: This was returned as a 200
  - path: /merchantenrolment
    action: 
      proxy: 
        upstream: psp-dmz-webinterfaceclient-service-85-us
        requestHeaders: 
            pass: true
        rewritePath: /merchantenrolment
    errorPages: 
      - codes: [404]
        return: 
          code: 200
          body: This was returned as a 200
---
java amazon-web-services kubernetes nginx snakeyaml

评论


答: 暂无答案