Я следую онлайн-руководству, чтобы научиться использовать шлем: 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]
Если я могу помочь с какой-либо другой информацией, пожалуйста, просто скажите хоть слово.

У вас есть две проблемы с входными значениями:
http слово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
Шайки был частично прав, некоторые другие части также отсутствовали. Я нашел руководство по прекращению поддержки, в котором подробно описаны изменения: Руководство по устареванию. После всех этих изменений мои проблемы были решены.