Ошибка входной контрольной диаграммы после обновления с v1beta1 до v1

Я следую онлайн-руководству, чтобы научиться использовать шлем: https://wkrzywiec.medium.com/how-to-deploy-application-on-kubernetes-with-helm-39f545ad33b8

Я могу следовать без ошибок почти до конца; следующая команда:

helm install -f ingress.yaml ingress ./ingress

Затем после некоторого поиска в Google я обнаружил, что мне нужно обновить network.k8s.io/v1beta1 до networking.k8s.io/v1. Однако некоторые структуры изменились. Главное, что я изменил, — это добавить http: ниже хоста и сдвинуть пути на уровень ниже, как это сделано в новых примерах входа. Это избавило от большинства ошибок, но есть одна, и я ее не понимаю. Я думаю, что, вероятно, что-то напутал или пропустил другое необходимое изменение. Так что, если бы кто-нибудь мог сказать мне, в чем моя ошибка, это было бы потрясающе.

Подробности: Структура файла выглядит следующим образом:

Оригинал Ingress.yaml (учебник):

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: {{ .Values.ingress.name }}
  annotations:
    kubernetes.io/ingress.class: {{ .Values.ingress.annotations.class }}
spec:
  rules:
  {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
        {{- range .paths }}
          - path: {{ .path }}
            backend:
              serviceName: {{ .backend.serviceName }}
              servicePort: {{ .backend.servicePort }}
        {{- end }}
  {{- end }}

Ingress.yaml после моих попыток исправления:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: {{ .Values.ingress.name }}
  annotations:
    kubernetes.io/ingress.class: {{ .Values.ingress.annotations.class }}
spec:
  rules:
  {{- range .Values.ingress.hosts }}
    - host: {{ .host | quote }}
      http:
        paths:
        {{- range .paths }}
          - path: {{ .path }}
            pathType:  {{ .pathType }}
            backend:
              serviceName: {{ .backend.serviceName }}
              servicePort: {{ .backend.servicePort }}
        {{- end }}
  {{- end }}

значения.yaml оригинал:

ingress:
  name: ingress-service
  replicaCount: 1
  annotations: 
    class: nginx
  hosts:
    - host: chart-example.local
      paths: 
        - path: /
          backend:
            serviceName: serviceName
            servicePort: 8080

values.yaml после моих попыток исправления:

ingress:
  name: ingress-service
  replicaCount: 1
  annotations: 
    class: nginx
  hosts:
    - host: chart-example.local
      http:
        paths: 
          - path: /
            pathType: ImplementationSpecific
            backend:
              serviceName: serviceName
              servicePort: 8080

ingress.yaml (тот, что снаружи, оригинальное руководство):

ingress:
  hosts:
    - host: adminer.k8s.com
      paths:
        - path: /
          backend:  
            serviceName: adminer
            servicePort: 8080
    - host: kanban.k8s.com
      paths: 
        - path: /api/
          backend:
            serviceName: kanban-app
            servicePort: 8080
        - path: /
          backend:
            serviceName: kanban-ui
            servicePort: 80

и тот же ingress.yaml после моих попыток исправления:

ingress:
  hosts:
    - host: adminer.k8s.com
      http:
        paths:
          - path: /
            backend:  
              serviceName: adminer
              servicePort: 8080
    - host: kanban.k8s.com
      http:
        paths: 
          - path: /api/
            backend:
              serviceName: kanban-app
              servicePort: 8080
          - path: /
            backend:
              serviceName: kanban-ui
              servicePort: 80

Исходные ошибки:

Перед обновлением с v1beta1

~/Downloads/webboard$ helm install -f ingress.yaml ingress ./ingress

Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: resource mapping not found for name: "ingress-service" namespace: "" from "": no matches for kind "Ingress" in version "networking.k8s.io/v1beta1"
ensure CRDs are installed first

После обновления до v1

~/Downloads/webboard$ helm install -f ingress.yaml ingress ./ingress

W0614 14:38:25.746260 1133539 warnings.go:70] unknown field "spec.rules[0].http.paths[0].backend.serviceName"
W0614 14:38:25.746280 1133539 warnings.go:70] unknown field "spec.rules[0].http.paths[0].backend.servicePort"
W0614 14:38:25.746287 1133539 warnings.go:70] unknown field "spec.rules[1].http.paths[0].backend.serviceName"
W0614 14:38:25.746294 1133539 warnings.go:70] unknown field "spec.rules[1].http.paths[0].backend.servicePort"
W0614 14:38:25.746300 1133539 warnings.go:70] unknown field "spec.rules[1].http.paths[1].backend.serviceName"
W0614 14:38:25.746306 1133539 warnings.go:70] unknown field "spec.rules[1].http.paths[1].backend.servicePort"
Error: INSTALLATION FAILED: 1 error occurred:
    * Ingress.networking.k8s.io "ingress-service" is invalid: [spec.rules[0].http.paths[0].pathType: Required value: pathType must be specified, spec.rules[1].http.paths[0].pathType: Required value: pathType must be specified, spec.rules[1].http.paths[1].pathType: Required value: pathType must be specified]

После всех моих исправлений (добавления http ниже хоста):

~/Downloads/webboard$ helm install -f ingress.yaml ingress ./ingress

Error: INSTALLATION FAILED: 1 error occurred:
    * Ingress.networking.k8s.io "ingress-service" is invalid: [spec.rules[0].http.paths: Required value, spec.rules[1].http.paths: Required value]

Если я могу помочь с какой-либо другой информацией, пожалуйста, просто скажите хоть слово.

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
1
0
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

У вас есть две проблемы с входными значениями:

  1. Лишнее http слово
  2. pathType отсутствует

Вы можете исправить это следующим образом:

ingress:
  hosts:
    - host: adminer.k8s.com
      paths:
        - path: /
          pathType: Prefix  
          backend:  
            serviceName: adminer
            servicePort: 8080
    - host: kanban.k8s.com
      paths: 
        - path: /api/
          pathType: Prefix  
          backend:
            serviceName: kanban-app
            servicePort: 8080
        - path: /
          pathType: Prefix  
          backend:
            serviceName: kanban-ui
            servicePort: 80
Ответ принят как подходящий

Шайки был частично прав, некоторые другие части также отсутствовали. Я нашел руководство по прекращению поддержки, в котором подробно описаны изменения: Руководство по устареванию. После всех этих изменений мои проблемы были решены.

Другие вопросы по теме