spec.rules[0].http.backend.servicePort: 无效值: \"80": 必须至少包含一个字母或数字 (a-z,0-9)", 错误 - createNamespac



spec.rules[0].http.backend.servicePort:无效值:"80〃:必须包含至少一个字母或数字(a-z,0-9(";,调用NetworkingV1beta1Api.createNamespacedIngress((api 时出错

我使用io.kubernetes:clientjavaapi:12.0.1版本作为gradle中的依赖项

下面是我的入口yaml文件

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: myserver-userid
namespace: myserver
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: userid-myserver
http:
paths:
- backend:
serviceName:  myserver
servicePort: 80
tls:
- hosts:
- userid-myserver
secretName: myserver-tls

在下面的行中,我正在创建NetworkingV1beta1Progs对象。

NetworkingV1beta1Ingress codeServerV1Ingress = yaml.loadAs(ingressYamlFile, NetworkingV1beta1Ingress.class);

通过调用下面的api,我得到错误

NetworkingV1beta1Ingress namespacedIngress = networkingV1beta1Api.createNamespacedIngress("myserver", codeServerV1Ingress, "true", null, null);

错误:

spec.rules[0].http.backend.servicePort: Invalid value: "80": must contain at least one letter or number (a-z, 0-9)

我可以看到这个错误与IntOrString类有关,但不确定它为什么会抛出错误和。api调用失败?有人能帮忙吗?

甚至我也尝试过低于的两种方法

approach 1:  servicePort: 80
approach 2:  servicePort: "80"

我也在谷歌上搜索过现有的问题,但没有一个对我有帮助。

对于初学者来说,v1beta1注释是不推荐使用的,应该使用v1还应指定路径类型

PathType确定路径匹配的解释,可以是以下值之一:

  1. Exact:精确匹配URL路径
  2. 前缀:基于由'/'分割的URL路径前缀进行匹配。匹配是在逐个路径元素的基础上进行的。路径元素引用的是由"/"分隔符分隔的路径中的标签列表。如果每个p都是请求路径p的元素前缀,那么请求就是路径p的匹配。请注意,如果路径的最后一个元素是请求路径中最后一个元件的子串,则它不匹配(例如/foo/bar匹配/foo/bar/baz,但不匹配/foo/parbaz(
  3. ImplementationSpecific:路径匹配的解释取决于IngressClass。实现可以将其视为单独的PathType,也可以将其与Prefix或Exact路径类型相同。需要实现来支持所有路径类型

最后,后端服务定义已经更改。试试下面的例子:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: example-router
namespace: example-router
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
#acme.cert-manager.io/http01-edit-in-place: "true"
#acme.cert-manager.io/http01-ingress-class: "nginx"
kubernetes.io/ingress.class: "nginx"
spec:
tls:
- hosts:
- examlpe.com
- www.examlpe.com
secretName: example-tls-secret
rules:
- host: examlpe.com
http:
paths:
- pathType: ImplementationSpecific
path: "/"
backend:
service:
name: backend-service
port: 
number: 80

请记住,备份服务和入口必须属于相同的命名空间

附言:如果您将来要使用CertManager颁发有效证书,前3个注释是必不可少的。

尝试将servicePort和serviceName分隔为service.name和service.port.number或service.port.name例如。后端:服务:名称:myserver端口:编号:80

最新更新