提问人:Gene Smith 提问时间:10/2/2023 最后编辑:Gene Smith 更新时间:10/2/2023 访问量:45
部署/加载 Nginx VirtaulServer 自定义资源并应用于 AWS EKS 时出现问题
Issue with deploying/loading a Nginx VirtaulServer Custom Resource and applying to the AWS EKS
问:
我的所有资源,包括自定义资源定义 (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,但这并不能解决问题。
VirtualServer CRD:https://github.com/nginxinc/kubernetes-ingress/blob/main/deployments/common/crds/k8s.nginx.org_virtualservers.yaml(我使用的是 v3.3.0)
Java Kubernetes 客户端:https://github.com/kubernetes-client/java(我使用的是 v18.0.0)。我还尝试将其更新为master并构建它,因为目前还没有v19.0.0。
下面是我的 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
---
答: 暂无答案
评论