Em um ambiente de cluster kubernetes, tenho o Traefik v3.2.1 e o CertManager 1.16.1 e um programa que estou testando. Quando tento aplicar este arquivo: 022-red-ing.yml, recebo este erro:
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
Gostaria de definir o arquivo corretamente, mas faltam informações, pois a documentação de onde copiei não informa a apiVersion e o tipo.
O arquivo está atualmente assim:
gato 022-vermelho-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
qual apiVersion e tipo devo definir? Se eu prefixar este código:
apiVersion: extensions/v1beta1
kind: Ingress
Recebo outro erro agora quando faço isso:
kubectl aplicar -f 022-red-ing.yml
Eu entendo
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
Estou fazendo algo errado.
Tenho quase certeza de que não, porque esse arquivo não é um manifesto válido do Kubernetes (faltam as seções
apiVersion
,kind
e ).metadata
Pela mensagem de erro (
No matches for kind "Ingress" in version "extensions/v1beta1"
), parece que você está usando o incorretoapiVersion
no manifesto. Em vez de:Você precisa:
Isto vem diretamente da documentação oficial ; não está claro por que você está usando o valor errado, mas sugere que você pode estar lendo material desatualizado.