在集群 kubernetes 环境中,我有 Traefik v3.2.1 和 CertManager 1.16.1 以及我正在测试的程序。当我尝试应用此文件:022-red-ing.yml 时出现此错误:
error: error validating "022-red-ing.yml": error validating data: [apiVersion not set, kind not set]; if you choose to ignore these errors, turn validation off with --validate=false
我想正确定义该文件,但我缺少信息,因为我复制该文件的文档没有说明 apiVersion 和 kind。
该文件目前是这样的:
cat 022-红色-ing.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- program.example.domain
port:
name: https
number: 443
protocol: HTTPS
tls:
credentialName: tls-program-ingress-http
mode: SIMPLE
- hosts:
- program.example.domain
port:
name: program-frontend
number: 80
protocol: HTTP
tls:
httpsRedirect: true
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP
我应该设置什么 apiVersion 和 kind?如果我添加以下代码:
apiVersion: extensions/v1beta1
kind: Ingress
我收到另一个错误。现在当我这样做时:
kubectl 应用-f 022-red-ing.yml
我明白了
error: error when retrieving current configuration of:
Resource: "networking.k8s.io/v1, Resource=ingresses", GroupVersionKind: "networking.k8s.io/v1, Kind=Ingress"
Name: "", Namespace: "default"
from server for: "022-red-ing.yml": resource name may not be empty
我做错了什么。
我几乎肯定它不是,因为该文件不是有效的 Kubernetes 清单(它缺少
apiVersion
、kind
和metadata
部分)。从错误消息 (
No matches for kind "Ingress" in version "extensions/v1beta1"
) 来看,您似乎apiVersion
在清单中使用了不正确的内容。而不是:你需要:
这是直接来自官方文档的;不清楚您为什么使用错误的值,但这表明您可能正在阅读过时的材料。